INSERT mit Parametern

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von SchorschCode.

    INSERT mit Parametern

    Hallo zusammen,

    ich verstehe etwas nicht und hätte gerne einen Ratschlag.

    Ich möchte eine Tabelle erstellen, die z.B. für jeden Tag im August einen Datensatz enthält, und zwar so:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim conDB As New OleDbConnection
    3. Dim cmEX As New OleDbCommand
    4. Dim strCONDB As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MEINPFAD\MEINEDB.accdb"
    5. conDB.ConnectionString = strCONDB
    6. ' Löschen der Tabelle
    7. Dim strSQL As String = "DELETE tblTEST.* FROM tblTEST;"
    8. With cmEX
    9. .Connection = conDB
    10. .CommandType = CommandType.Text
    11. .CommandText = strSQL
    12. conDB.Open()
    13. cmEX.ExecuteNonQuery()
    14. conDB.Close()
    15. End With
    16. ' für jeden Tag einen Datensatz erstellen
    17. For intTAG = 1 To 31
    18. strSQL = "INSERT INTO tblTEST ( TTJAHR, TTMONAT, TTTAG ) Values (@1, @2, @3)"
    19. With cmEX
    20. .Connection = conDB
    21. .CommandType = CommandType.Text
    22. .CommandText = strSQL
    23. .Parameters.AddWithValue("@1", 2021)
    24. .Parameters.AddWithValue("@2", 8)
    25. .Parameters.AddWithValue("@3", intTAG)
    26. End With
    27. conDB.Open()
    28. cmEX.ExecuteNonQuery()
    29. conDB.Close()
    30. Next
    31. End Sub

    Es werden auch 31 Datensätze erstellt, allerdings hat das Feld TTTAG immer den Wert 1. Warum ist das so?

    Danke im voraus!

    Gruß Schorsch
    mit deinem Ansatz stimmt so einiges nicht,
    das hier z.b.
    [vb

    SchorschCode schrieb:

    ' für jeden Tag einen Datensatz erstellen
    For intTAG = 1 To 31


    was wäre mit Feb. ?
    du solltest die Tage im Monat ermitteln bevor du dich mit deinem Insert beschäftigst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kasi“ ()

    Das liegt doch auf der Hand.

    ErfinderDesRades hat dir doch schon den eigendlich entscheidenden Tipp gegeben.

    Ich gebe noch einen Hinweis dazu.

    nach Loop-Durchlauf 1
    cmEX wurden 3 parameter mit value hinzugefügt. Sind 3 das ist korrekt
    nach Loop-Durchlauf 2
    cmEX wurden 3 parameter mit value hinzugefügt. Sind 6, sind jetzt schon 3 zu viel.

    Also wie wäre es damit: cmEx "zurückzusetzen" in jedem Durchlauf, z.B. neue initialisierung?