『壹』 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]等,可以用来匹配特定的字符组合,增强查询的灵活性。