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