寫了一個小程式用來查詢產品編號及相關資訊,產品的相關資訊存在Access資料庫database.mdb中。
由于產品有四個主要引數,即Subfamily, Function, Connection和Actuation,分別對應資料庫中四個欄位名,根據這四個欄位的組合即可回傳唯一的一個產品編號。
代碼如下:
*** 判斷程式所在路徑****
Dim str As String
str = App.Path
If Right(str, 1) <> "\" Then
str = str + "\"
End If
**** 生成連接access字串*****
Dim connStr As String
connStr = "Provider = Microsoft.Jet.OLEDB.4.0;Persist Security Info = False; Data Source =" & str & "database.mdb" & ";Jet OLEDB:Database Password=12345678"
*****創建連接實體并連接******
Dim conn As New ADODB.Connection
conn.Open connStr
*****生成SQL查詢陳述句*****
Dim strSQL As String
strSQL = "select * from HuizhouMicroswitch where Subfamily='" & varSubfamily & "' and Function= '" & varFunction & "' and Connection= '" & varConnection & "' and Actuation = '" & varActuator & "'"
此處查詢陳述句為判斷4個欄位是否滿足,varSubfamily等四個變數是根據之前的選項按鈕的值來生成的字串。
此陳述句在Access里使用是可以回傳結果的
*****創建recordset實體并打開表****
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSQL
目前程式一直在此處報錯,提示"物件'Open'的方法'_Recordset'失敗.
嘗試過將strSQL的四個判斷條件縮減為兩個,程式可以回傳結果;但只要增加到三個判斷條件,即報錯。
請教各位前輩:
1)是不是SQL查詢最多只支持兩個判斷條件?
2)如果不是,上面的陳述句該如何修改?
希望能得到各位前輩的幫助。謝謝!
uj5u.com熱心網友回復:
strSQL = "select * from HuizhouMicroswitch where" & _
" Subfamily='" & Str(varSubfamily) & "'" & _
" and Function='" & Str(varFunction) & "'" & _
" and Connection='" & Str(varConnection) & "'" & _
" and Actuation='" & Str(varActuator) & "'"
uj5u.com熱心網友回復:
在 strSQL 配置后,加一句Debug.Print strSQL
看看 strSQL 內容究竟是什么。
uj5u.com熱心網友回復:
理論上,在使用字串連接符 & 與其他字串連接的陳述句中,不需要 Str 函式,解釋器會進行型別自動轉換的。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
也看看這四個欄位的資料型別是什么,SQL陳述句中條件也需要根據不同的資料型別寫不同的變數費用:sql=" select * from tablename where 字符型欄位='"& 字符型變數 &"' and 數值型欄位="& 數值型變數 &" "
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/46882.html
上一篇:請問各位大牛,VB如何實時讀取和顯示從USB口傳來的信號?
下一篇:關于資料錄入問題
