【发布时间】:2019-12-10 08:30:29
【问题描述】:
我正在尝试使用用户在表单中填充的值来更新存储在 access 中的本地表中的一行(或插入一个新行,如果该 ID 尚不存在)。我正在使用 SQL 在 VBA 中编写它。代码如下:
Public Function update_table()
Dim strSQL As String
strSQL = "IF NOT EXISTS (SELECT * FROM table1 WHERE (id1 = [Forms]![Study Info Cleaned]![Text156] AND id2 = [Forms]![Study Info Cleaned]![Text158]))" & _
"INSERT INTO table1 ( id1, id2, id3, id4, id5 )" & _
"VALUES ([Forms]![Study Info Cleaned]![Text156]," & _
"[Forms]![Study Info Cleaned]![Text158]," & _
"[Forms]![Study Info Cleaned]![Text160]," & _
"[Forms]![Study Info Cleaned]![Text201]," & _
"[Forms]![Study Info Cleaned]![Text166])" & _
"Else" & _
"Update table1" & _
"SET id4 = [Forms]![Study Info Cleaned]![Text201], id5 = [Forms]![Study Info Cleaned]![Text166]" & _
"WHERE (id1 = [Forms]![Study Info Cleaned]![Text156] AND id2 = [Forms]![Study Info Cleaned]![Text158])"
DoCmd.RunSQL (stringSQL)
End Function
代码返回以下错误信息:
运行时错误'3129',无效的SQL语句;预期为“DELETE”、“INSERT”、“PROCEDURE”、“SELECT”或“UPDATE”。
【问题讨论】:
标签: sql vba forms ms-access upsert