首页 > 解决方案 > 未设置对象变量或 With 块变量。

问题描述

我正在尝试将 SQL Server 连接到 Access。我在一个模块中有连接功能。我在另一个模块中调用这个函数。

这是我模块中的代码:

'Variabel voor SQL Server Connectie
Public SQLConnectie As ADODB.Connection

'Connecten met SQL Server
Public Function DBConn() As ADODB.Connection
If Not (SQLConnectie Is Nothing) Then
    Set SQLConnectie = New ADODB.Connection
    With SQLConnectie
        .CommandTimeout = 15
        .Mode = adModeReadWrite
        .ConnectionString = "Provider=SQLNCLI11;Server=dafehvmvdsql3;Database=PROVOMotorenfabriek;Integrated Security=SSPI; Persist Security Info=False"
        .Open
    End With
End If

Set DBConn = SQLConnectie
Set SQLConnectie = Nothing
End Function

下面是在 SQL Server 中执行存储过程的模块中的代码:

Call DBConn.Execute("EXEC spStoringToevoegen " & productielijnMW & ", " & Forms(Formnaam)!cbLijngedeelte & ".............etc

我收到错误:对象变量或未设置块变量。我找到的每个答案都说我需要将 set 放在一些变量的前面,但我找不到这应该是哪一个。

提前致谢,

标签: sql-serverms-accessstored-proceduresvba

解决方案


将此添加到示例参数。

正如我所说,我的 VBA 非常生疏(而且我发现 VBA 使用起来特别奇怪,添加 Access 对我来说听起来很痛苦)。如果您使用其他一些后端(以及语言)会容易得多。无论如何,这是一个带有 VBA (Excel) 参数的示例:

Sub Macro1()
   Dim oRecordset1 As ADODB.Recordset
   Dim oConnection As ADODB.Connection
   Dim oCommand As ADODB.Command
   Dim oParameter1 As ADODB.Parameter
   Dim oParameter2 As ADODB.Parameter


  Set oConnection = New ADODB.Connection
  Set oCommand = New ADODB.Command

  oConnection.ConnectionString = "Provider=SQLNCLI11.0;Data Source=.\SQLExpress;Trusted_connection=Yes"

  oConnection.Open
  oCommand.ActiveConnection = oConnection
  oCommand.CommandType = 4
  oCommand.CommandText = "Northwind.dbo.[CustomersSelectLike]"

  Set oParameter1 = oCommand.CreateParameter("@country", 130, 1, -1) ' adWChar
  oCommand.Parameters.Append oParameter1
  oCommand.Parameters("@country").Value = "USA"

  Set oParameter2 = oCommand.CreateParameter("@customer", 130, 1, -1)
  oCommand.Parameters.Append oParameter2
  oCommand.Parameters("@customer").Value = "%"

  Set oRecordset = oCommand.Execute()
  Sheet1.Range("A1").CopyFromRecordset (oRecordset)
End Sub

推荐阅读