insert into ... select - mit Variable kombinieren

  • Access

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Markus2006.

    insert into ... select - mit Variable kombinieren

    Moin,

    meine Tabelle (LM_TempTab) hat drei Spalten:
    F1 (Text), F2 (Zahl) und F3 (Zahl)

    Ich möchte über einen VBA-Befehl einen (oder mehrere) Datensatz einfügen, der in F1 eine von mir gesetzte Variable (hier v_Name) enthält, in F2 einen Wert aus einer anderen Tabelle (BT_dbo) und in F3 eine Summe aus der anderen Tabelle.
    Ich komm aber mit der Syntax nicht klar, nachfolgender Code funzt nicht, verdeutlicht aber hoffentlich mein Anliegen:

    Visual Basic-Quellcode

    1. Private Sub StatusMonitorAktualisieren()
    2. Dim v_Name As String
    3. Dim SQLstr As String
    4. v_Name = "test"
    5. SQLstr = "INSERT INTO LM_TempTab (F1, F2, F3) " & _
    6. "SELECT " & v_Name & ", BT_dbo.LAUF, Sum(BT_dbo.AUFWAND) " & _
    7. "FROM BT_dbo group by BT_dbo.LAUF"
    8. CurrentDb.Execute (SQLstr)
    9. End Sub


    Das SELECT auf v_Name ist kritisch, das ist klar. Aber ich will für den Fall, daß es mehrere verschiedene Einträge in "LAUF" gibt, auch mehrere Sätze erstellen, die aber immer in F1 dann v_Name stehen haben.

    Die Fehlermeldung ist übrigens "1 Parameter wurden erwartet, aber es wurden zu wenig Paramter übergeben"

    Besten Dank schon mal...

    Timo
    Servus Timo,
    ich hab nur einen Fehler entdeckt:

    Die Variable "v_name" ist ein String und muss im SQL-String auch als String übergeben werden. Also wie folgt:

    Visual Basic-Quellcode

    1. Private Sub StatusMonitorAktualisieren()
    2. Dim v_Name As String
    3. Dim SQLstr As String
    4. v_Name = "test"
    5. SQLstr = "INSERT INTO LM_TempTab (F1, F2, F3) " & _
    6. "SELECT '" & v_Name & "', BT_dbo.LAUF, Sum(BT_dbo.AUFWAND) " & _
    7. "FROM BT_dbo group by BT_dbo.LAUF"
    8. CurrentDb.Execute (SQLstr)
    9. End Sub


    Wie Du oben siehst, ist die Variable in ' ' Zeichen eingeschlossen. Somit wird der Wert als Stirng übergeben.
    Gruß Markus