Checkbox aus DataSet erfassen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Checkbox aus DataSet erfassen

    Hi,

    ich würde gerne die Checkboxen aus meiner Datenbank erlesen

    Das ist mein Code aber er funktioniert nicht richtig und ich hab keine Idee was ich mache könnte.

    VB.NET-Quellcode

    1. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name = '" & Name & "'AND Config ='" & "'AND Benutzer ='" & "'AND User = '" & "'", con)


    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @dekon12 da fehlen doch noch ein paar Namen im String.
    Sieh Dir den String an, bevor Du die DB fütterst. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die anderen sind Checkboxen, wie finde ich heraus ob diese ausgewählt sind oder nicht

    VB.NET-Quellcode

    1. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name = '" & Name & "'AND Config ='" & CheckState.Checked & "'AND Benutzer ='" & CheckState.Checked & "'AND User ='" & CheckState.Checked & "'", con)


    Mein jetziger Code

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

    Ich hab von SQL noch keine Ahnung, aber da steht dann zur Laufzeit z.B. drin: Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name = 'IrgendeinName'AND Config ='False'AND Benutzer ='True'AND User ='True'", con)
    Ist das gewollt?

    Statt CheckState.Checked musst Du CheckBox1.Checked usw. einsetzen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VB.NET-Quellcode

    1. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name = '" & Name & "'AND Config ='" & CheckBox1.Checked & "'AND User ='" & CheckBox2.Checked & "'AND Benutzer ='" & CheckBox3.Checked & "'", con)


    "Datentypenkonflikt in Kriterienausdruck."

    Das ist dann meine Fehlermeldung
    Dann musst Du entweder noch explizit einen String draus machen, also schreiben CheckBox1.Checked.ToString, oder der Command würde grundsätzlich nicht funktionieren, wenn dann steht: "SELECT * FROM Accounts WHERE User_Name = 'IrgendeinName'AND Config ='False'AND Benutzer ='True'AND User ='True'" Denn das ist ja ein sich aus den CheckBox-States ergebener String dann.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich glaube eher das Feld ist in der Access-Datenbank als Ja/Nein (Boolean) definiert, daher dürfen die True bzw. False nicht in Hochkommas stehen.

    VB.NET-Quellcode

    1. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name = '" & Name & "' AND Config = " & CheckBox1.Checked & " AND User = " & CheckBox2.Checked & " AND Benutzer = " & CheckBox3.Checked, con)
    Beim Thema SQL und Datenbank bin ich erst am Anfang, aber soweit ich sehen konnte, gibt es keinen Boolean-Datentyp bei SQL. Keine Ahnung, wie die Daten da gespeichert werden oder wie Du es speichern lässt. Entweder Du schaust direkt in die Datenbank rein (MDB = Access?) oder Du siehst nach, mit welchem Code die Tabelle erstellt wurde, also welche Spalten mit welchem Typ.

    btw: Im Threadtitel steht was von DataSet. Was hat es damit auf sich?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Mein problem nun ist: System.Data.OleDb.OleDbException: "Syntaxfehler in Zeichenfolge in Abfrageausdruck 'User_Name ='m0087660' AND Config = 'False' AND User = 'False 'AND Benutzer =' False'."

    VB.NET-Quellcode

    1. Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Accounts WHERE User_Name ='" & Name & "' AND Config = '" & CheckBox1.Checked & "' AND User = '" & CheckBox2.Checked & " 'AND Benutzer =' " & CheckBox3.Checked, con)
    Oder mal den Code ausprobierst, der in Post#8 mit dem Hinweis versehen war:

    HenryV schrieb:

    daher dürfen die True bzw. False nicht in Hochkommas stehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VB1963 schrieb:

    dekon12 schrieb:

    Syntaxfehler in Zeichenfolge in Abfrageausdruck
    So etwas vermeidest du, wenn du CommandParameter verwendest...

    Nur so. Der Rest ist furchtbare String wurschtelei... Auch hinsichtlich Sicherheit. Stichwort „SQL Injektion“.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen