SQL Abfrageergebnis in TextBox schreiben

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    SQL Abfrageergebnis in TextBox schreiben

    Hi leute da bin ich wieder.

    Ich habe ein kleines Problem.

    Ich möchte das Ergebnis einer Sql Abfrage direkt in eine Textbox schreiben, ohne es in der db zu speichern.

    VB.NET-Quellcode

    1. Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim conn As New SqlCeConnection("Data Source=D:\...\Database1.sdf")
    3. conn.Open()
    4. Dim cmd As New SqlCeCommand("SELECT sum(Betrag) FROM Tabelle1 WHERE Ein_Aus = Einnahme;", conn)
    5. cmd.ExecuteNonQuery()
    6. conn.Close()
    7. End Sub


    bis jetzt mag es noch nicht funktionieren. Ich weiß nicht so recht en welcher Stelle und mit was ich die tb1 füllen lassen soll.

    PS: Falls sich ein SQL-Experte finden lässt, ich glaube in meiner Abfrage ist auch irgendwo ein kleiner Fehler drin.

    Könnt ihr mir weiterhelfen?

    Da es letztens schon so gut geklappt hat, hoffe ich wieder auf eure kompetenz ;) :thumbup:
    [MySQL]
    "SELECT sum(Betrag) FROM Tabelle1 WHERE Ein_Aus = 'Einnahme';"[/MySQL]

    Da Einnahme einen Wert vom Typ-Text darstellen soll musst Du das in Hochkommas setzen.

    VB.NET-Quellcode

    1. cmd.ExecuteNonQuery()


    Damit fürhst Du eine Abfrage ohne Rückwurf aus, sowas macht Sinn für z.B. Delete oder Insert Anweisungen aber nicht für Select-Anweisungen.

    Für Select kannst Du z.B. den Reader verwenden:

    VB.NET-Quellcode

    1. Dim reader As SqlCeDataReader
    2. reader = cmd.ExecuteReader
    3. Do while reader.read()
    4. '// do anything
    5. Loop


    Gruß

    Rainer
    Danke für die schnelle Antwort.

    Ich habe es jetzt so gemacht.

    VB.NET-Quellcode

    1. Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim reader As SqlCeDataReader
    3. Dim conn As New SqlCeConnection("Data Source=D:\...\Database1.sdf")
    4. conn.Open()
    5. Dim cmd As New SqlCeCommand("SELECT sum(Betrag) FROM Tabelle1 WHERE Ein_Aus = 'Einnahme';", conn)
    6. reader = cmd.ExecuteReader
    7. conn.Close()
    8. End Sub


    Da bekomme ich aber den Fehler:
    Der für die Funktion angegebene Argumentwert ist ungültig. [ Argument # = 1,Name of function(if known) = sum ]


    Und ich nehme an das ich in der Do While Schleife meine textbox füllen lassen muss. Nur mit welcher variable lasse ich die füllen das ich das Ergebnis meiner berechnung da sehe??

    Danke schonmal!
    Guck mal am besten hier:

    msdn.microsoft.com/de-de/libra…areader%28v=vs.80%29.aspx

    Dort steht die Verwendung des Readers inkl. Ladevorgang schön in einem Beispiel beschrieben, genauso wie auch das auslesen des Reader-Inhaltes.

    Der Reader beinhaltet genau das was im SQL Statement abgefragt wird:

    SELECT MeinFeld As Feld FROM tblMeinTable ...

    Dann beinhaltet der Reader genau 1 Spalte/Column und die heisst eben Feld (durch As Feld festgelegt, ansonsten eben der Spaltenname den Du abfragst) und steht natürlich an Index-Position 0.

    SELECT MeinFeld1, MeinFeld2 FROM tblMeinTable ...

    Dann beinhaltet der Reader genau 2 Columns/Spalten und die heissen MeinFeld1 an Index 0 und MeinFeld2 an Index 2.

    Und die Zeilen/Rows im Reader entsprechend natürlich dabei dann der Anzahl der Datensätze die aus der DB abgerufen wurden.

    Gruß

    Rainer
    Vielen Dank für deine Antwort. Ich habe mir das angesehen und folgendes daraus gebastelt.

    VB.NET-Quellcode

    1. Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim reader As SqlCeDataReader
    3. Dim conn As New SqlCeConnection("Data Source=" & Application.StartupPath & "\Database1.sdf")
    4. conn.Open()
    5. Dim cmd As New SqlCeCommand("SELECT sum(Betrag) As Ein_gesamt FROM Tabelle1 WHERE Ein_Aus = 'Einnahme';", conn)
    6. reader = cmd.ExecuteReader
    7. Do While reader.Read()
    8. tbein.Text = reader.GetString(50)
    9. Loop
    10. reader.Close()
    11. conn.Close()
    12. End Sub


    Nur leider bekomme ich an der Stelle (reader = cmd.ExecuteReader) die Fehlermeldung :

    Der für die Funktion angegebene Argumentwert ist ungültig. [ Argument # = 1,Name of function(if known) = sum ]

    was soll mir das sagen??
    Hallo Leute,

    ich habe ein ähnliches Problem.
    Habe in meiner DB eine ID und möchte die höchste ID nun auslesen und in einer Textbox wiedergeben.

    Sieht bisher wie folgt aus:

    Private Sub Kennnummer()
    con.Open()
    cmd.CommandText = "select max(kennnummer) from personen"
    con.Close()
    End Sub

    Weiter oben natürlich das ganze Zeugs wie:
    Imports System.Data.OleDb

    Dim con As New OleDbConnection
    Dim cmd As New OleDbCommand
    Dim reader As OleDbDataReader
    Dim pnummer As New ArrayList

    con.ConnectionString =
    "Provider=Microsoft.Jet.OLEDB.4.0;" &
    "Data Source=C:\Temp\Test2.mdb"
    cmd.Connection = con

    Wie kann ich die höchste ID nun in eine Variable packen oder direkt in einer Textbox ausgeben?
    die ID ist vom Typ Integer.

    Danke!