拜託高手大大幫我除錯

看板Visual_Basic作者 (萬般皆是命阿)時間18年前 (2007/05/14 17:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
Option Explicit Private Const LB_SETHORIZONTALEXTENT = &H194 '宣告一個DLL內的外部程序 Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Dim TempStr As String '用於讀取暫存區資料 Dim TempBool As Boolean '判斷資料是否已讀取完畢 Private Sub Form_Load() '===設定、開啟串列連接埠=== With MSComm1 .CommPort = 1 '設定串列連接埠代號 .Handshaking = comXOnXoff .NullDiscard = True .RThreshold = 1 If Not (.PortOpen) Then .PortOpen = True '開啟串列連接埠 End If End With End Sub Private Sub MSComm1_OnComm() '===讀取接收暫存區中的資料=== Dim TempLong As Long Dim MaxLength As Integer '記錄ListBox中的最大字串長度 Dim TempIndex As Integer '記錄ListBox中最長字串的索引值 If TempBool And MSComm1.CommEvent = comEvReceive Then TempStr = MSComm1.Input '判斷目前取得資料是否為所有資料 If Val(TempStr) + 3 = Len(TempStr) - InStr(1, TempStr, "&") Then List1.AddItem Mid(TempStr, InStr(1, TempStr, "&") + 1), 0 TempStr = "" MaxLength = Len(List1.List(0)) For TempLong = 0 To List1.ListCount - 1 '尋找最長字串 If Len(List1.List(TempLong)) >= MaxLength Then TempIndex = TempLong MaxLength = Len(List1.List(TempLong)) End If Next TempLong '產生一個水平捲軸 Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, _ ByVal TextWidth(List1.List(TempIndex)) / 14.8, ByVal 0&) Else MSComm1.RThreshold = Val(TempStr) + 20 - Len(TempStr) + _ InStr(1, TempStr, "&") '設定最小接收字元數為尚未讀取字元數 '去除字串長度與分隔字元 TempStr = Mid(TempStr, InStr(1, TempStr, "&") + 1) TempBool = False End If Else List1.AddItem TempStr + MSComm1.Input, 0 TempStr = "" TempBool = True MSComm1.RThreshold = 1 MaxLength = Len(List1.List(0)) For TempLong = 0 To List1.ListCount - 1 If Len(List1.List(TempLong)) >= MaxLength Then TempIndex = TempLong MaxLength = Len(List1.List(TempLong)) End If Next TempLong Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, _ ByVal TextWidth(List1.List(TempIndex)) / 14.8, ByVal 0&) End If End Sub ' ......表單的外部宣告 Private cn As ADODB.Connection Private rs As ADODB.Recordset ' ......表單載入時的事件程序 Private Sub Form1_Load() ' 連結資料庫 Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\........" cn.CursorLocation = adUseClient cn.Open ' 取得資料集 Set rs = New ADODB.Recordset rs.Open "******", cn, adOpenStatic, adLockOptimistic ' DataGrid取得資料集以顯示記錄 Set DataGrid1.DataSource = rs End Sub ' ......按新增鈕所觸發的事件程序 Private Sub cmdAdd_Click() rs.AddNew "@@@@@", List1.List End Sub 我利用MSCOMM讀取到RS-232的資料顯示在表單上List1上 利用DataGrid1顯示我所要儲存List1資料的資料庫(此為空白資料庫) 現在我要利用按鈕把List1裡的資料新增到資料庫裡 按鈕觸發的程式如上"按新增鈕所觸發的事件程序"底下所示 "表單的外部宣告 "之前的程式則為MSCOMM控制項的程式 中間則為DataGrid1的程式 結果我執行時按這按鈕 程式顯示"引數不為選擇性" 即資料並無法新增到資料庫裡 程式倒數第二行List的地方被藍色框住 倒數第三行Private那一排整排被黃色框住 我覺得問題應該出現在這部份 不過小弟我VB才疏學淺無法看出真正問題 請問高手大大 程式是哪裡出問題 可以請高手大大告訴我嗎 拜託您了 小弟我感激不盡 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.85.178
文章代碼(AID): #16I2dFp4 (Visual_Basic)
文章代碼(AID): #16I2dFp4 (Visual_Basic)