2010-10-25 71 views
2

我一直在得到错误“附近关键字不正确的语法”,其中“。”。请帮我调试我的sql查询!

DoCmd.RunSQL "insert into userPreferences (userId, GroupId, preferenceId, properties, isDefault)" & _ 
     "select " + Me.UserId + ", " + Me.GroupId + ", preferenceid, properties, 1 from preferences " & _ 
     " where preferenceId not in " & _ 
     "(select preferenceId from userPreferences where GroupId = " + Me.GroupId + _ 
     " and userId = " + Me.UserId + _ 
     ") and preferenceid not in " & _ 
     "(select preferenceid from GroupPreferences " & _ 
     "where cabGroupId = " + Me.GroupId + " and override = 0)" 
+2

我不清楚为什么你使用+连接运算符而不是& - +传播空值并执行算术运算,如果双方都可以对数值有价值的东西进行强制操作,并且只应在明确要传播时使用空值。 – 2010-10-25 17:57:46

+0

原来是这个问题 - 我本来应该用&代替+。如果您输入这个答案,我会将其标记为已接受的答案。 – dmr 2010-10-25 18:13:50

回答

3

指定的查询字符串:

Dim myQuery as String 
Set myQuery = "insert ..." 
DoCmd.RunSql myQuery 

放在最后一行断点,复制/粘贴到查询的MS Access查询视图。尝试运行它,MS Access会告诉你到底发生了什么问题。

+0

使用你的答案。我把字符串放入一个变量中,然后插入一个断点,以便我可以在直接窗口中看到整个字符串。事实证明,我正在使用+而不是&,这时变量为空,所以字符串被截断。 – dmr 2010-10-25 17:27:08

+0

@dmr:哈,一读时错过了。尽管调试方法在大多数情况下都有帮助,但Access查看视图是学习SQL的好地方 – Andomar 2010-10-25 17:29:36