NULL SQL 查询后需要错误 424 对象
Error 424 object required after NULL SQL query
我 运行 一些 EXCEL VBA 代码来更新 ACCESS 数据库的内容 table 按照此处建议的行:
IF @@Rowcount = 0 -- SQL Syntax Error in Access
.当我执行 SELECT 查询时,EXCEL VBA 给出此错误消息:
Run-time error 424: Object required
我从 VBA Watch window 中提取了 SQL 字符串,运行 它作为 ACCESS 中的查询。我第一次这样做时,没有记录,因为 table 是空的,所以我 运行 在 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'
但仍然收到相同的错误消息。我也试过去掉冒号...
语句有问题
DoCmd.RunSQL (sqlTxtInsert)
如果我将其更改为
db.Execute (sqlTxtInsert)
那么一切都很好。应该滚动到原来答案的末尾 link ....
我 运行 一些 EXCEL VBA 代码来更新 ACCESS 数据库的内容 table 按照此处建议的行: IF @@Rowcount = 0 -- SQL Syntax Error in Access .当我执行 SELECT 查询时,EXCEL VBA 给出此错误消息:
Run-time error 424: Object required
我从 VBA Watch window 中提取了 SQL 字符串,运行 它作为 ACCESS 中的查询。我第一次这样做时,没有记录,因为 table 是空的,所以我 运行 在 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'
但仍然收到相同的错误消息。我也试过去掉冒号...
语句有问题
DoCmd.RunSQL (sqlTxtInsert)
如果我将其更改为
db.Execute (sqlTxtInsert)
那么一切都很好。应该滚动到原来答案的末尾 link ....