Переменная объекта или переменная блока не установлена. - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь подключить 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 перед некоторыми переменными, но я не могу найти, какой это должен быть.

Заранее спасибо,

1 Ответ

0 голосов
/ 03 июля 2018

Добавление этого к образцу параметров.

Как я уже сказал, мой 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...