2015-05-13 6 views
0

У меня появляется сообщение об ошибке, когда я хочу запустить свой запрос (синтаксическая ошибка (отсутствующий оператор) в выражении запроса). Я не знаю, где проблема.Ошибка синтаксиса (отсутствующий оператор) в выражении запроса VBA

Я создал макрос (VBA), который должен показать весь уровень менеджера в моей компании.

Колонки должны быть такими:

топ-менеджера, директора, менеджеры, руководители групп, руководители, сотрудники.

Sub TEST() 
    Application.ScreenUpdating = False 

    Dim cnStr     As String 
    Dim rs     As ADODB.Recordset 
    Dim query     As String 
    Dim fileName    As String 
    pom4 = "';" 

    fileName = "C:\sciezka\DEU.xlsx" 

    cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & fileName & ";" & _ 
      "Extended Properties=Excel 12.0" 


    query = "SELECT L1.[DEU1$].[Supervisor ID] AS N0, L1.[DEU1$].[Emplid] AS N1, L2.[DEU1$].[Emplid] AS N2, L3.[DEU1$].[Emplid] AS N3, " & _ 
      "L4.[DEU1$].[Emplid] AS N4, L5.[DEU1$].[Emplid] AS N5, L6.[DEU1$].[Emplid] AS N6, L7.[DEU1$].[Emplid] AS N7 FROM [DEU1$] L1 " & _ 
      "LEFT JOIN [DEU1$] L2 ON (L1.[Emplid]=L2.[Supervisor ID]) LEFT JOIN [DEU1$] L3 ON (L2.[Emplid]=L3.[Supervisor ID]) " & _ 
      "LEFT JOIN [DEU1$] L4 ON (L3.[Emplid]=L4.[Supervisor ID]) LEFT JOIN [DEU1$] L5 ON (L4.[Emplid]=L5.[Supervisor ID]) " & _ 
      "LEFT JOIN [DEU1$] L6 ON (L5.[Emplid]=L6.[Supervisor ID]) LEFT JOIN [DEU1$] L7 ON (L6.[Emplid]=L7.[Supervisor ID]) WHERE L1.[Supervisor ID] LIKE '%15981%';" 

    Set rs = New ADODB.Recordset 

    rs.Open query, cnStr, adOpenUnspecified, adLockUnspecified 

    Cells.Clear 

    Dim cell As Range, i  As Long 

    With Range("A16").CurrentRegion 
     For i = 0 To rs.Fields.Count - 1 
      .Cells(1, i + 1).Value = rs.Fields(i).Name 
     Next i 
     Range("A17").CopyFromRecordset rs 
     .Cells.Select 
     .EntireColumn.AutoFit 
    End With 

    rs.Close 
    Application.ScreenUpdating = True 
End Sub 
+1

Вы не можете использовать 'L1' и т.д., как и псевдоним поля и псевдоним таблицы ... – Rory

+0

Привет, я изменил имена столбцов, такие как: SELECT L1. [DEU1 $]. [Supervisor ID] AS N0, L1. [DEU1 $]. [Emplid] AS N1 и так но все равно та же ошибка mesage – MIREK

+0

Пожалуйста, обновите код в вопросе с тем, что у вас есть. – Rory

ответ

0

Я думаю, вам просто нужно добавить некоторые круглые скобки, а также не использовать как имя псевдонима и фактическое имя таблицы:

query = "SELECT L1.[Supervisor ID] AS N0, L1.[Emplid] AS N1, L2.[Emplid] AS N2, L3.[Emplid] AS N3, " & _ 
     "L4.[Emplid] AS N4, L5.[Emplid] AS N5, L6.[Emplid] AS N6, L7.[Emplid] AS N7 FROM ((((([DEU1$] L1 " & _ 
     "LEFT JOIN [DEU1$] L2 ON L1.[Emplid] = L2.[Supervisor ID]) " & _ 
     "LEFT JOIN [DEU1$] L3 ON L2.[Emplid] = L3.[Supervisor ID]) " & _ 
     "LEFT JOIN [DEU1$] L4 ON L3.[Emplid] = L4.[Supervisor ID]) " & _ 
     "LEFT JOIN [DEU1$] L5 ON L4.[Emplid] = L5.[Supervisor ID]) " & _ 
     "LEFT JOIN [DEU1$] L6 ON L5.[Emplid] = L6.[Supervisor ID]) " & _ 
     "LEFT JOIN [DEU1$] L7 ON L6.[Emplid]=L7.[Supervisor ID];" 
+0

РАБОТЫ! :) СПАСИБО!!! – MIREK

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