我试图在excel中运行以下语句:
Dim myquery As String
myquery = "select * from batchinfo where " + "datapath='" + dpath + "' and analystname='" + aname + "' and reportname='" + rname + "' and batchstate='" + bstate + "'"
rs.Open myquery, cn, adOpenKeyset, adLockOptimistic, adCmdTable
' deleting batchinfo and from other tables with rowid if duplicate exists
If Not rs.EOF Then
RowId_batchinfo = rs.Fields("rowid")
cn.Execute "delete from batchinfo where rowid=" + RowId_batchinfo
cn.Execute "delete from calibration where rowid='" + RowId_batchinfo + "'"
cn.Execute "delete from qvalues where rowid='" + RowId_batchinfo + "'"
End If
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("datapath") = dpath
.Fields("analysistime") = atime
.Fields("reporttime") = rtime
.Fields("lastcalib") = lcalib
.Fields("analystname") = aname
.Fields("reportname") = rname
.Fields("batchstate") = bstate
.Fields("instrument") = Instrument
.Fields("macrowriter") = Environ$("computername")
.Update ' stores the new record
capture_id = .Fields(0)
End With
' get the last id
'MsgBox capture_id
rs.Close
但在rs.Open
行我收到错误:
incorrect syntax near the keyword 'select'
我做错了什么?
这是sql语句的样子:
"select * from batchinfo where datapath='F:\MassHunter\DATA\44612_PAIN\QuantResults\44612.batch.bin' and analystname='MLABS\nalidag' and reportname='MLABS\nalidag' and batchstate='Processed'"
答案 0 :(得分:4)
我认为您的上一个选项adCmdTable
不正确。您可能需要adCmdText
。
adCmdTable
适用于传递的文本只是表名的情况。由于您提供的是SQL语句,adCmdText
更合适。