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
uj5u.com熱心網友回復:

上面是資料庫的 內容
uj5u.com熱心網友回復:
沒用過這個,看著應該是 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=https://bbs.csdn.net/topics/iif(isnull(rs.Fields(i).Value),"",rs.Fields(i).Value)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = cellValue
uj5u.com熱心網友回復:
或者修改一下mdb,設定列的默認值為""。確保資料表里查詢結果一定沒有null的話,你的代碼就不需要改了。uj5u.com熱心網友回復:
還是沒搞懂問題的所在哎uj5u.com熱心網友回復:
資料庫里的空字串在vb里不會識別成空字串,而當成null,但是vb的字串處理不了null,所以就報錯了,所以你需要對字串型別的資料加一個提前的處理,用isnull函式來識別一下,是不是null,如果是,就不要當字串去賦值了.uj5u.com熱心網友回復:
加一個判斷陳述句就可以了,Unll 實際就是一個空字串:If rs.Fields(i).Value<>"" Then MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i).Value
在 rs.Fields(i).Value 不是空字串時輸出內容,是空字串時輸出空值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/51378.html
標籤:VB基礎類
上一篇:CJ1M的UM加密如何解密?
