『壹』 VBA通過ADO連接SQL資料庫,但是提示「無法鏈接到SQL資料庫 錯誤編碼 [67]」,問題在哪裡呢
67表示主機地址錯誤,你下面語句中的【伺服器名】要修改伺服器的機器名專、域名或者屬IP地址。
constr = "provider=sqlncli10.1;persist security info=false;initial catalog=yearsallshow;user id=sa;pwd=psw;data source=伺服器名"
所有錯誤代碼的含義見連接網頁:網頁鏈接
『貳』 vba sql查詢
VBA與SQL查詢緊密相連,尤其在多條件查詢及資料庫讀寫操作中。在VBA Project窗口中,我們需要添加「工具—引用—Microsoft ActiveX Data Objects 2.0 Library」,這是建立VBA與資料庫連接的基礎步驟。
以下是一段示例代碼:
Private Sub CommandButton1_Click()
Dim cnn As ADODB.Connection
Dim sql$, Stext$, i As Integer
Worksheets(3).Cells.Clear
Stext = IIf(TextBox1.Value = "", "*", TextBox1.Value)
Set cnn = CreateObject("adodb.connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
If TextBox1 = "" Then
sql = "select * from [sheet2$]"
Else
sql = "select * from [sheet2$] where 姓名 like '" & TextBox1.Value & "'"
End If
Worksheets(3).[a1].CopyFromRecordset cnn.Execute(sql)
cnn.Close
Set cnn = Nothing
End Sub
同樣,我們可以使用記錄集對象rs來處理查詢結果,代碼如下:
Dim cnn As ADODB.Connection
Dim rs as adodb.recordset
Set cnn = CreateObject("adodb.connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
sql = "select * from [sheet2$] where 姓名 like '" & TextBox1.Value & "'"
rs.open sql,cnn,adOpenKeyset.adLockOptimistic
Worksheets(3).[a1].CopyFromRecordset rs
SQL查詢語句的語法靈活多樣,包括但不限於:
1. SELECT * FROM table_name WHERE column1 = xxx [AND column2 > yyy] [OR column3 <> zzz] 通過WHERE子句來篩選符合條件的記錄。
2. SELECT column1,AVG(column2) FROM table_name GROUP BY column1 HAVING AVG(column2) > xxx 使用GROUP BY和HAVING來分組和篩選數據。
3. SELECT * FROM table_name1 WHERE EXISTS (SELECT * FROM table_name2 WHERE conditions ) 通過子查詢來判斷是否存在符合條件的記錄。
4. SELECT COUNT (*) FROM table_name WHERE column_name = xxx 計算符合條件的記錄數量。
5. SELECT SUM(column1) FROM table_name 計算特定列的總和。
6. SELECT * FROM table_name1 WHERE column1 BETWEEN xx AND yy 通過BETWEEN來篩選特定范圍內的記錄。
7. UPDATE table_name SET column1='xxx' WHERE conditoins 更新指定條件下的記錄。
8. DELETE FROM table_name WHERE conditions 刪除符合條件的記錄。
在使用SQL時,還應注意不同資料庫在日期比較上的表達式可能有所不同,確保使用正確的格式。
此外,SQL中的通配符如%、_、[charlist]和[^charlist]等,可以用來匹配特定的字元組合,增強查詢的靈活性。