2016-06-20 5 views
0

in meinem Job habe ich ein kleines Problem mit VBA (ich bin neu in VBA, so ist es vielleicht nur ein kleiner Fehler, aber ich habe keine Lösung im Internet gefunden)Syntax von Vars in VBA mit SQL

For i = 0 To Me!Liste_Eingangsdiagnostik.ListCount - 1 
    diagName = Me!Liste_Eingangsdiagnostik.column(0, i) & "_" & Me!Liste_Eingangsdiagnostik.column(1, i) & "_" & 1 


    If Me!Liste_Eingangsdiagnostik.Selected(i) Then 
    buildFilter_EingangsDiag i 
    tableName = Me!Liste_Eingangsdiagnostik.column(0, i) 
    Debug.Print tableName 
    newColumn = "ALTER TABLE " & tempTable & " ADD COLUMN " & tableName & " " & "Long" 
    Set rs = CurrentDb.OpenRecordset("abf_Export_Diagnostik") 'Erstelle die Antworten 

    'updateExport = "INSERT INTO Export_Hilfstabelle " & " (IDTAB_EP, ID_Antwortbogen, tableName) " & " (rs.Fields(1).Value,rs.Fields(1).Value,.Fields(1).Value)" 

    db.Execute newColumn 

     Do While Not rs.EOF 
     a = rs.Fields("IDTAB_EP").value 
     Debug.Print a 
     b = rs.Fields("ID_Antwortbogen").value 
     Debug.Print b 
     c = rs.Fields("strAntworten_Text").value 
     Debug.Print c 

     db.Execute "INSERT INTO [Export_Hilfstabelle] " & " ([IDTAB_EP], [ID_Antwortbogen], [ID_Frage], ['" & tableName & "']) VALUES " & " ('" & a & "', '" & b & "',0,'" & c & "')" 
     rs.MoveNext 
     Loop 

    End If 
Next i 

Die Benutzer dieser Datenbank möchten alle ihre Diagnosen, die sie wählen, in einer Tabelle. Also versuche ich für jede Diagnose eine neue Spalte (tableName) hinzuzufügen, aber ich habe den ErrorLog bekommen: das Feld Name ist nicht korrekt. (Ich komme aus Deutschland, also einige Vars sind auf Deutsch.) Vielen Dank für Ihre Hilfe!

+1

Welche Zeile sehen Sie auf diesen Fehler erhalten werden? der 'ALTER TABLE' oder der' INSERT INTO'? – Dave

+0

Das INSERT INTO löst den Fehler aus. –

+1

In der INSERT-Anweisung sind die Apostrophe in '['" & tableName & "']' falsch, entfernen Sie sie. Aber das ist wahrscheinlich nicht das einzige Problem. - Siehe auch: [Wie man dynamischen SQL in VBA debuggt] (http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

Antwort

0

Die Spaltenliste in der INSERT-Anweisung darf keine Hochkommata enthalten.

db.Execute "INSERT INTO [Export_Hilfstabelle] " & 
    " ([IDTAB_EP], [ID_Antwortbogen], [ID_Frage], ['" & tableName & "']) 
    VALUES " & " ('" & a & "', '" & b & "',0,'" & c & "')" 

sollte

db.Execute "INSERT INTO [Export_Hilfstabelle] " & 
    " ([IDTAB_EP], [ID_Antwortbogen], [ID_Frage], [" & tableName & "]) 
    VALUES " & " ('" & a & "', '" & b & "',0,'" & c & "')"