【发布时间】:2021-12-10 08:22:50
【问题描述】:
我已经为此苦苦挣扎了两个星期了!我去过几十个网站寻求帮助,他们都给出了相同的建议(尽管没有一个完全解决我的特定问题),这无济于事,因为所有人(包括微软官方)都告诉我做我正在做的事情。
这是我的查询:
Dim strSQL As String
strSQL = """INSERT INTO tblVolunteers " & vbCrLf & _
"VALUES (" & [txtTitle] & "," & [txtFirstName] & "," & [txtMiddle] & "," & [txtLastName] & "," & [txtEmail] & _
"," & [txtPhone] & "," & [txtChurch] & "," & [txtGroup] & "," & [txtCouncil] & "," & [chkParCo] & "," & _
[txtMailAdd] & ");"""
CurrentDb.Execute strSQL
这就是微软要说的:
运行时错误'3078'
Microsoft Access 数据库引擎找不到输入表或查询“”INSERT INTO tblVolunteers 价值观 (Mr.,John,L.,Smith,jlsmith@email.com,800-555-1212,St. Smith's,Smith,1234,-1,10 Smith St. 史密斯维尔,德克萨斯州 77777-3333);“”。确保它存在并且其名称拼写正确。
那么,当我不仅指定了 VALUES 并且正确地从表单中提取了所有值时,它为什么还要查找表或查询呢?
【问题讨论】:
-
这里有多个问题。整个语句不得包含在双引号中,但单个文本参数应包含在单引号中。您确定存在名为“tblVolunteers”的表吗?
-
语句中的单引号总是导致语法错误。
-
语句中的单引号总是产生语法错误(在我弄清楚它是什么之前,我的脑袋像复活节彩蛋一样被打破,MSoft 不愿意标记实际错误)。 MSoft 实际上推荐我使用的三双引号。我不能说为什么单引号不起作用,但请注意错误消息准确地显示了我应该得到的。只有 Access 出于某种原因想要查找表或查询,而不是使用指定的 VALUE。 (请注意,这个查询确实有效,除了......!)
-
正确使用单引号。如果您确实必须使用 SQL 连接变量,请使用 Gustav 的
CSql()function。它处理各种变量并防止 SQL 注入。 -
在您的情况下,由于
St. Smith's,简单地用单引号包裹文本是行不通的。