【发布时间】:2021-07-10 22:50:15
【问题描述】:
我是通过 Outlook 接触 VBA 的新手,所以...
我使用 Outlook 2016 和 SQL Server 2017,并尝试通过 ADODB 将宏连接到 SQL Server Express 2017。
这是我的代码
On Error GoTo ErrorHandler
Dim cnnStr As String
cnnStr = "Provider=SQLOLEDB;" & _
"Server=ALTROISIEME\SQLEXPRESS;" & _
"Initial Catalog=XX_Options;" & _
"Trusted_Connection=SSPI;" & _
"uid=xxxx;" & _
"pwd=xxxxxx;"
'GoTo Fin_99
Dim cnn As New ADODB.Connection
cnn.CommandTimeout = 900
cnn.ConnectionString = cnnStr
cnn.Open
GoTo Fin_99
Dim cmd As ADODB.Command
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "USP_Outlook_Add_File_Data"
cmd.Parameters.Append cmd.CreateParameter("@Categorie", adVarWChar, adParamInput, , "IB_DailyTrade")
cmd.Parameters.Append cmd.CreateParameter("@NomDuFichier", adVarWChar, adParamInput, , FileNameExt)
cmd.Parameters.Append cmd.CreateParameter("@Donnee", adVarWChar, adParamInput, , HTMLTxt)
Dim rst As New ADODB.Recordset
rst.CursorType = adOpenStatic
rst.CursorLocation = adUseClient
rst.LockType = adLockOptimistic
rst.Open cmd
Set rst = cmd.Execute
ExitNewItem:
GoTo Fin_99
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ExitNewItem
Fin_99:
On Error GoTo CloseRst
cnn.Close
Set cnn = Nothing
CloseRst:
rst.Close
Set rst = Nothing
宏在线抛出错误
Set cmd.ActiveConnection = Cnn
带有消息。
91-变量对象或块变量未定义
你能帮忙吗?
谢谢 安德烈
【问题讨论】:
-
我使用的版本,我在评论中放了“Goto Fin_99”。
-
我只是想出了我的错误,我应该在下面的 Dim cnn 之后添加一个 SET 指令作为 New ADODB.connection Set cnn = new ADODB.Connection
-
如果您已经解决了问题所涉及的第一个问题,您可能应该使用您看到的新错误详细信息对其进行更新
-
需要快速注意的一件事(这可能是您的问题) - 我认为不需要在参数名称中包含 @ 符号。因此,在您的示例中,它只是“Categorie”、“NomDuFichier”、“Donnee”
-
USP_Outlook_Add_File_Data是否返回一组结果?如果否,则此处不需要记录集。
标签: sql-server vba outlook connection-string adodb