軟體:Excel + Sqlite3
版本:Excel 2013, Sqlite3
各位板上的大大下午好,我在用VBA連線sqlite查詢的時候得到的結果只有第一筆。
可是在DB Browser上同樣的指令可以找出所有的資料。
而且神奇的是,我用單步執行還可以印出一筆資料。但是如果直接按按鈕,只會得到
欄位名稱,沒有結果。
可否請大大指導發生什麼事?
我的資料內容如下範例
模號 品名
G001 5678
G002 5678
G003 5678
G004 2125
G005 1388
G006 7758
G007 7758
G023 150
G024 150
我的畫面如下圖
https://imgur.com/Gy4ghAj
照理說,查詢品名150會查到G023跟G024這兩個模號,可是結果卻只出現一筆。
我用DB Browser的查詢結果
https://imgur.com/1fy3r2i
我的程式碼如下:
Private Sub ItemAndDieInquiry_Click()
Dim search_command As String
If ([B1].Value <> "") And ([B2].Value <> "") Then
MsgBox "請只填要查詢的欄位"
Exit Sub
ElseIf [B1].Value <> "" Then
MsgBox "將為您查詢模號"
search_command = "select * from 品名對模號 where 品名=" & [B1].Value & ";"
sql_data_inquiry search_command
Else
MsgBox "將為您查詢品號"
search_command = "select * from 品名對模號 where 模號=" & [B2].Value & ";"
End If
End Sub
Sub sql_data_inquiry(search_command As String)
Dim cn, rs, f
Set cn = CreateObject("adodb.connection")
'開啟sqlite指定資料庫,路徑與檔案名稱要對
cn.Open ("Driver={SQLite3 ODBC Driver};database=C:\DSDMS\SQL\DMS.db")
'寫出SQL查詢語法
Set rs = cn.Execute(search_command)
For f = 0 To rs.Fields.Count - 1
ActiveSheet.Cells(10, f + 1).Value = rs.Fields(f).Name
Next
ActiveSheet.Cells(11, 1).CopyFromRecordset (rs)
cn.Close
End Sub
煩請撥冗解惑,感謝。