Я пытаюсь получить один код элемента из таблицы SQL сервера (элементы) для сравнения с кодом элемента, введенным в лист Excel. Чтобы сделать это возможным, я написал следующий код VBA в Excel 2019.
Function GetItemcodeFromSQLTable(sSQLArtikel As String) As String
Dim connection As New ADODB.connection
connection.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=SQL01;Initial Catalog=110"
Dim query As String
query = "select itemcode from items where itemcode = " & sSQLArtikel
Dim rs As New ADODB.Recordset
rs.Open query, connection
connection.Close
End Function
Я получаю сообщение об ошибке при выполнении строки rs.open query, connection
.
Цель всего этого в том, что я хотите знать, существует ли уже код товара в таблице SQL или нет. Если нет, то остальная часть моего кода VBA создаст файл XML для импорта нового кода элемента в таблицу SQL.
Я добавил ссылку на «Библиотеку объектов данных Microsoft Active X 6.1» в окно VBA.
Кто-нибудь может мне помочь с этой проблемой?
Большое спасибо.
Код, который я использую сейчас:
Function CheckIfArticleCodeExistsInSQLDatabase(sSQLArtikel As String) As String
Dim query As String
Dim connection As ADODB.connection
Dim rs As ADODB.Record
Dim cmd As ADODB.Command
' PREPARED STATEMENT WITH PARAM PLACEHOLDERS
query = "select itemcode from items where itemcode = " & "'" & sSQLArtikel & "'"
' OPEN CONNECTION
Set connection = New ADODB.connection
connection.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;" _
& "Data Source=SQL01;Initial Catalog=110"
' DEFINE COMMAND AND RECORDSET
Set cmd = New ADODB.Command
cmd.ActiveConnection = connection
Set rs = cmd.Execute(query, sSQLArtikel) ' BIND PARAM VALUES
' ... DO SOMETHING WITH rs
rs.Close: connection.Close
Set cmd = Nothing: Set rs = Nothing: Set connection = Nothing
End Function
Когда при выполнении команды «Set rs = cmd.Execute (query, sSQLArtikel)» отображается сообщение об ошибке «текст команды не задан для объекта команды».
Я делаю что-то не так, но что?