VB的问题 新手做数据库的课程设计遇到的 无效使用Null 各位给看看~

python 修行者 2017-11-13 11:45:41

Private Sub Form_Load()


MSComm1.CommPort = 2 '设置串口为COM2
MSComm1.Settings = "9600,n,8,1" '传输率为9600bit/s,无奇偶校验位,8位数据,1位停止
MSComm1.RThreshold = 1 '接收缓冲区每收到1个字节字符,都会触发执行MSComm控件的OnComm()事件函数
MSComm1.SThreshold = 0 '数据发送事件不产生OnComm()事件
MSComm1.InputLen = 1 '使用Input()函数时读取接收缓冲区的字符个数,0表示全部读取
MSComm1.PortOpen = True '打开串口

MSComm1.Output = "6" '向单片机发送字符6表示启动了VB,要求单片机发送当前设置的报警上限值

Dim DBConn As New ADODB.Connection
Dim my As String
DBConn.CursorLocation = adUseClient
DBConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\数据库.mdb;"

Dim queryStr As String
queryStr = "select * from measuringrecord order by serial desc"

Dim rs As New ADODB.Recordset
Set rs = DBConn.Execute(queryStr)


MSFlexGrid1.Cols = rs.Fields.Count '设置列数
MSFlexGrid1.Rows = 1 '设置行数,目前可以确定的是只有一行

MSFlexGrid1.ColWidth(0) = 1600 '设置第1列的宽度
For i = 1 To rs.Fields.Count - 1 '设置剩余的列的宽度(等距离)
MSFlexGrid1.ColWidth(i) = (MSFlexGrid1.Width - MSFlexGrid1.ColWidth(0)) / (rs.Fields.Count - 1)
Next i

For i = 0 To rs.Fields.Count - 1 '设置第1行的值
MSFlexGrid1.ColAlignment(i) = 3 '各列文字居中显示
MSFlexGrid1.TextMatrix(0, i) = rs.Fields(i).Name '第一行中各列的值为数据库中测量记录表的列名
Next i

Do While Not rs.EOF '读取记录,直到指针指向末尾
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1 '增加一行用来存储读取的记录
For i = 0 To rs.Fields.Count - 1 '将读取的记录的值在增加的行中显示
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i).Value 这里是调试窗口标黄的语句 求解答
Next i
rs.MoveNext '指针移向下一条记录
Loop
End Sub
...全文
242 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHRXJR 2017-11-15
  • 打赏
  • 举报
回复
加一个判断语句就可以了,Unll 实际就是一个空字符串: If rs.Fields(i).Value<>"" Then MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i).Value 在 rs.Fields(i).Value 不是空字符串时输出内容,是空字符串时输出空值。
X-i-n 2017-11-13
  • 打赏
  • 举报
回复
或者修改一下mdb,设置列的默认值为""。确保数据表里查询结果一定没有null的话,你的代码就不需要改了。
X-i-n 2017-11-13
  • 打赏
  • 举报
回复
没用过这个,看着应该是 rs.Fields(i).Value碰到null值,结果单元格赋值的时候不能赋null的原因吧。报错的时候,直接在DEBUG窗口里 ? isnull(rs.Fields(i).Value)看看是不是为true。
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i).Value

string cellValue
cellValue=iif(isnull(rs.Fields(i).Value),"",rs.Fields(i).Value)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = cellValue
python 修行者 2017-11-13
  • 打赏
  • 举报
回复




上面是数据库的 内容
笨狗先飞 2017-11-13
  • 打赏
  • 举报
回复
数据库里的空字符串在vb里不会识别成空字符串,而当成null,但是vb的字符串处理不了null,所以就报错了,所以你需要对字符串类型的数据加一个提前的处理,用isnull函数来识别一下,是不是null,如果是,就不要当字符串去赋值了.
python 修行者 2017-11-13
  • 打赏
  • 举报
回复
还是没搞懂问题的所在哎

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧