Variable in Abfrage Genarator als Filter für SQL Abfrage angeben ...

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Slayers.

    Variable in Abfrage Genarator als Filter für SQL Abfrage angeben ...

    Hallo zusammen,

    ich bin neu hier und programmiere eigentlich nur so mehr oder weniger zum Zeitvertreib und um mir manche umständlichen Dinge
    in Excel ein wenig einfacher bzw. komfortabler zu machen.

    Nun zu meiner Frage:

    Ich habe eine Form welcher Daten aus einer SQLite Datenbak ausliest und in einem Datagridview darstellt.
    Gelöst ist dieses mittels typisiertem Dataset. Klappt alles soweit reibungslos.
    Wie kann ich nun im Abfragegenerator den Inhalt einer Variable als WHERE Filter angeben ?


    Im quellcode würde ich das ja füre SQLite in folgender Form tun

    "SELECT * FROM Hours WHERE Year = " ' & year & ' ";

    Die Variable year wird befüllt über eine Combobox bei der ich den entsprechenden Wert aus der Liste wähle.

    Aber dies funktioniert eben im Generator nicht.

    Vieleicht kann mir jemand bei der Angabe der Syntax behilflich sein.
    Diese Art ist zwar nicht mit dem Dataset im Designer, könnte Dir aber helfen :

    Hier ein Ausschnitt meines aktuellen Programms - SQLite mit Übergabeparametern:

    VB.NET-Quellcode

    1. Public Function qAddBG(ByVal Multilist As List(Of List(Of String)), ByVal ID As Integer) As String
    2. Dim qText As String = ""
    3. Dim FirstEntry As Boolean = True
    4. For Each l As List(Of String) In Multilist
    5. If firstentry = True Then
    6. firstentry = False
    7. qText = "UPDATE Baugruppen SET '" & l(0) & "=@" & l(0)
    8. Else
    9. qText = qText & ", " & l(0) & "=@" & l(0)
    10. End If
    11. Next
    12. qText = qText & ";"
    13. Return qText
    14. End Function




    VB.NET-Quellcode

    1. Public Sub ExecQuery(ByVal Query As String, ByVal DGV As DataGridView, ByVal MultiList As List(Of List(Of String)), ByVal SQLConnStr As String)
    2. 'TODO: PARAMETERS WITH TYPES LIKE SQLDBTYPE.INT
    3. Dim SQLCon As New SQLiteConnection("data source=" & SQLConnStr & ";")
    4. Try
    5. SQLCon.Open()
    6. 'CREATE SQL COMMAND
    7. SQLCmd = New SQLiteCommand(Query, SQLCon)
    8. Try
    9. For Each l As List(Of String) In MultiList
    10. SQLCmd.Parameters.AddWithValue(l(0), l(1))
    11. Next
    12. Catch ex As Exception
    13. 'NO PARAMETERS HERE :(
    14. End Try
    15. 'LOAD PARAMETERS INTO SQL COMMAND
    16. Params.ForEach(Sub(x) SQLCmd.Parameters.Add(x))
    17. 'CLEAR PARAM LIST
    18. Params.Clear()
    19. 'EXECUTE COMMAND AND FILLDATASET
    20. SQLDS = New DataSet
    21. SQLDA = New SQLiteDataAdapter(SQLCmd)
    22. RecordCount = SQLDA.Fill(SQLDS)
    23. SQLCon.Close()
    24. Catch ex As Exception
    25. Exception = ex.Message
    26. MsgBox(Exception)
    27. End Try
    28. If SQLCon.State = ConnectionState.Open Then SQLCon.Close()
    29. 'LOAD DGV
    30. 'MsgBox(SQLCon.State = ConnectionState.Open)
    31. Call LoadGrid(DGV, SQLConnStr)
    32. End Sub


    Der Code ist größtenteils von diesem Guide von Youtube:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gunngir“ ()

    Hallo Leute,

    besten Dank für Eure Antworten und danke für den Link.
    Der hat mir geholfen.
    Eigentlich gar nicht schwierig, man muss eben nur den Parameter als Variable deklarieren und dann als Überladung der Fill-Methode mitgeben.
    Klappt nun.

    Danke