第一个代码块是一个UDF,我使用它来运行SQL查询,并根据电子表格中的值进行更新。它有效地作为电子表格中的公式。下面的块试图在宏中使用UDF来执行查询并获得记录计数,但我在为正确的语法而挣扎。任何建议将不胜感激。
Function SqlExec(SqlStmt As String, Trigger As Integer)
Dim CString As String
CString = _
"Provider=SQLOLEDB.1;" & _
"Password=P@ssw0rd;" & _
"Persist Security Info=True;" & _
"User ID=sa;Initial Catalog=GlasPacLX_Testdb;" & _
"Data Source=192.168.19.110\gts;" & _
"Use Procedure for Prepare=1;" & _
"Auto Translate=True;" & _
"Packet Size=4096;" & _
"Workstation ID=TWOSEATER;" & _
"Use Encryption for Data=False;" & _
"Tag with column collation when possible=False"
Trigger = Sheets("Code").Range("Trigger").Value
If Trigger = 1 Then
Dim Cn As ADODB.Connection, Rs As ADODB.Recordset
Set Cn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Cn.Open CString
Rs.Open SqlStmt, Cn, adOpenForwardOnly
SqlExec = Rs.GetRows
Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
End If
End Function
下面是我试图用来执行查询并在消息框中显示结果的宏。查询返回一个整数。宏不工作(byref参数类型不匹配)。有什么办法解决吗?
Sub SqlExecCount()
Trigger = 1
SqlStmt = "SELECT COUNT(DocumentNumber) FROM Document"
MsgBox SqlExec(SqlStmt, Trigger)
End Sub
1条答案
按热度按时间jm81lzqq1#
Rs.GetRows
返回一个二维数组:不能直接使用MsgBox
显示尝试以下操作:
来自
GetRows
的数组是从零开始的-第一维是字段索引,第二维是数据行索引。