2010-10-25 2 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

Непонятно, почему вы используете оператор + конкатенации вместо & - +, распространяя Nulls и выполняя арифметические операции, если обе стороны являются коэрцитируемыми к числовым значениям и должны использоваться только тогда, когда вы явно хотите распространять Нулевые. –

+0

Это оказалось проблемой - я должен был использовать & вместо +. Если вы введете это как ответ, я помету его как принятый. – dmr

ответ

3

Назначают запрос в строку:

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

Поместите точку останова на последней строке, и копировать/вставить запрос в представление запроса MS Access. Попробуйте запустить его, и MS Access скажет вам, что именно не так.

+0

Вид использованного ответа. Я поместил строку в переменную, а затем вставил точку останова, чтобы я мог видеть всю строку в непосредственном окне. Оказалось, что я использовал + вместо &, а переменные на данный момент равны нулю, поэтому строка была усечена. – dmr

+0

@ dmr: Ха, пропустил это при первом чтении. Метод отладки должен помочь в большинстве случаев, однако, Access query view - отличное место для изучения SQL – Andomar

Смежные вопросы