2016-04-07 4 views
-1

Я пытаюсь выполнить динамический оператор SQL, в котором команда добавит поле «Drawn» в определенную область в зависимости от значения j. Это происходит потому, что есть несколько случаев, когда появляется поле «Rev» в таблице «Редакция». Я создал этот оператор в дизайне запроса, но только для обновления определенного поля в таблице, не зависящего от моего счетчика j. Я получаю выражение JOIN не поддерживается. Может ли кто-нибудь помочь мне с этой проблемой?INNER JOIN VBA Access

Select Case selection(n) 
Case "A" 
    j = 1 
Case "B" 
    j = 2 
Case "0" 
    j = 3 
Case "1" 
    j = 4 
Case "2" 
    j = 5 
End Select 

With rs 
    While Not .EOF 
      DoCmd.RunSQL "SELECT Area.Drawn " & _ 
           "FROM (Revision INNER JOIN RevDesc ON Revision.Rev" & j & " = RevDesc.Rev) " & _ 
           "INNER JOIN Area ON Revision.LineNumber = ArealineNmuber ;" 
.MoveNext 
wend 
end with 
+0

'ArealineNmuber'? – David

+0

@David, я исправил проблему, Area был таблицей и линией. Введите поле. Поэтому я добавил «.». между ними. Однако теперь я получаю «Действие RunSQL требует аргумента, состоящего из инструкции SQL» –

+0

Ввод сообщения об ошибке в Google всегда является хорошим местом для запуска: http://stackoverflow.com/a/27425050/328193 – David

ответ

0

Возможно, вы ищете метод, как OpenRecordset ...
подрезки Recordset использования полого результат для создания простого Update с вами можете работать методом RunSQL.

EDIT:
пример обновление:

UPDATE [Revision] 
SET [Drawn] = (SELECT [Drawn] FROM [Area] WHERE [Area].[LineNumber] = [Revision].[LineNumber]) 
WHERE Exists(SELECT 1 FROM [RevDesc] 
    WHERE [RevDesc].[Rev] = [Revision].[Rev]);