注册 登录
编程论坛 VB6论坛

vb中mshflexgrid为什么增加数据总是出问题

凛冬1 发布于 2020-04-03 20:51, 1709 次点击
为什么我文本框中输入0.8,mshflexgrid显示的不是0.8?支管阻力平衡率的字段类型是单精度型,我想改小数位数,在access里每次改完关闭再打开又恢复原样?而且我只有录入数据的时候输入该字段的值才能运行,否则总是报错“insert语句语法错误”
只有本站会员才能查看附件,请 登录

程序代码:
Private Sub Command10_Click()

Call K(conn)   '连接数据库

'输入数据
Dim sql As String
sql = "insert into [设计计算] ( [管段编号],[设计风量(m3/h)],[管长(m)],[比摩阻],[局部阻力系数],[管径(mm)],[实际风速(m/s)],[沿程阻力(Pa)],[局部阻力(Pa)],[总阻力(Pa)],[实际风量(m3/h)],[风量偏差率(%)],[支管阻力平衡率(%)])  values ( '" & Text4.Text & " ',' " & Text3.Text & " ', ' " & Text5.Text & " ', ' " & Text6.Text & " ' , ' " & Text7.Text & " ', ' " & Text10.Text & " ', ' " & Text9.Text & " ', ' " & Text11.Text & " ', ' " & Text12.Text & " ', ' " & Text13.Text & " ',' " & Text14.Text & " ', ' " & Text15.Text & " ', " & Text16.Text & " )"

Set rs = New ADODB.Recordset     '创建数据集对象的连接
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic

sql = "select * from [设计计算]"
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic


Set MSHFlexGrid1.DataSource = rs

Call title

conn.Close  '关闭连接
Set conn = Nothing   '释放变量

End Sub
2 回复
#2
wmf20142020-04-03 21:57
对于数值型数据,由于数据字段设计时不为空,所以必须赋值,insert时对这些文本框用val函数,则即使没有输入,也会自动给0值,就是“ values ( '" & val(Text4.Text) & " ',' " & val(Text3.Text) & ...”。
关于0.8显示成0.800000001的问题:由于你是直接用mshflexgrid绑定记录集,而记录集是用*查询到的,这只有修改数据库的小数点位数,比如设成货币类型,就保留2位小数。如果sql语句写成“select a,b,c... from [设计计算]”的话,可以使用sql format函数,如:“select format(a,'0.00') as 偏差1,format(b,'0.00') as 偏差2,format(c,'0.00') as 偏差3... from [设计计算]”,这样显示出来的就是两位小数了。
#3
凛冬12020-04-04 12:03
回复 2楼 wmf2014
谢谢大神!!!
1