Объект ошибки 424 требуется после запроса NULL SQL

Я запускаю некоторый код EXCEL VBA для обновления содержимого таблицы базы данных ACCESS в соответствии с предложенными здесь строками: IF @@Rowcount = 0 -- Синтаксическая ошибка SQL в Access . Когда я выполняю запрос SELECT, EXCEL VBA выдает это сообщение об ошибке:

Run-time error 424: Object required

Я извлек строку SQL из окна VBA Watch и запустил ее как запрос в ACCESS. В первый раз, когда я сделал это, не было никаких записей, потому что таблица была пустой, поэтому я выполнил запрос INSERT в ACCESS, а затем попытался запустить код VBA, но получил то же сообщение об ошибке.

Код здесь:

Public db As DAO.Database

' Open database

Public Sub OpenMdtDatabase()
    Set db = DBEngine(0).OpenDatabase("SL_MDT_data_v1.accdb")
End Sub

' Update DB table

Sub UpdateDb()

' Initialise

Dim rs As DAO.Recordset
Set xlSht = Sheets("plot_data")

' Open database

Call OpenMdtDatabase

' Get the data to store

sname = xlSht.Cells(6, "R").Value
xfill = xlSht.Cells(6, "S").Value
xedge = xlSht.Cells(6, "T").Value
xstyl = xlSht.Cells(6, "U").Value
xsize = xlSht.Cells(6, "V").Value

' SQL stuff

sqlTxtSelect = "SELECT SeriesName FROM SeriesProperties WHERE SeriesName ='" & sname & "';"

sqlTxtUpdate = "UPDATE SeriesProperties " & _
sqlTxtUpdate = "SET SeriesFill = " & xfill & ", " & _
sqlTxtUpdate = "SeriesEdge = " & xedge & ", " & _
sqlTxtUpdate = "SeriesStyle = " & xstyl & ", " & _
sqlTxtUpdate = "SeriesSize = " & xsize & " " & _
sqlTxtUpdate = "WHERE SeriesName = '" & sname & "';"

sqlTxtInsert = "INSERT INTO SeriesProperties('" & sname & "') " & _
sqlTxtInsert = "VALUES(" & xfill & ", " & xedge & ", " & xstyl & ", " & xsize & ");"

Set rs = db.OpenRecordset(sqlTxtSelect)

If rs.RecordCount = 0 Then
    DoCmd.RunSQL (sqlTxtInsert)
Else
    DoCmd.RunSQL (sqlTxtUpdate)
End If
End Sub

Я предполагаю, что что-то не так со строкой SQL SELECT. Я попытался установить это напрямую, используя

SELECT SeriesName FROM SeriesProperties WHERE SeriesName ='14/10-2:F2F_SLMC'

но все равно получаю то же сообщение об ошибке. Я также попытался удалить двоеточие ...

Не ответ на ваш вопрос, следовательно, просто комментарий, но это не то, как объединить ваши строки SQL в VBA. sqlTxtSelect выглядит нормально, но два других приводят к False.

CLR 22.05.2019 13:10

Спасибо, CLR. Я исправил это, но все еще получаю ту же проблему

PetGriffin 22.05.2019 13:30
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
2
403
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключается в утверждении

DoCmd.RunSQL (sqlTxtInsert)

Если я изменю это на

db.Execute (sqlTxtInsert)

тогда все хорошо. Надо было до конца пролистать ответ по исходной ссылке....

Другие вопросы по теме