Abfrage Summe aus Datenbank in Textbox ausgeben

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von carwashbuxtehude.

    Abfrage Summe aus Datenbank in Textbox ausgeben

    Hi!
    Ich möchte gerne eine Summe (aus Waschzahlen) aus einer DB Tabelle(Umsatzdaten11) mit eine bestimmten Datumsbereich in einer TextBox ausgeben.

    Habe es so probiert, bekomme aber immer eine Fehlermeldung! Siehe Anhang

    Quellcode

    1. "SELECT SUM(Waschzahlen) FROM Umsatzdaten11 WHERE Datum" & "BETWEEN " & Format$(CDate(dtpVon.Text), "#yyyy-MM-d#") & " AND " & Format$(CDate(dtpBis.Text), "#yyyy-MM-d#")




    Hat jemand vielleicht eine Idee, woran es liegen kann?



    Matthias
    Bilder
    • Bild 1.JPG

      18,8 kB, 434×176, 139 mal angesehen
    Ok!



    Quellcode

    1. Private Sub Vorjahreszahlen()
    2. Try
    3. con.Open()
    4. cmd.CommandText = "SELECT SUM(Waschzahlen) FROM Umsatzdaten11 WHERE Datum BETWEEN " & Format$(CDate(DateTimePicker2.Text), "#yyyy-MM-d#") & " AND " & Format$(CDate(DateTimePicker3.Text), "#yyyy-MM-d#")
    5. reader = cmd.ExecuteReader
    6. Do While reader.Read
    7. Label28.Text = reader("")
    8. Loop
    9. reader.Close()
    10. con.Close()
    11. Catch ex As Exception
    12. con.Close()
    13. MsgBox(ex.Message)
    14. End Try
    15. End Sub


    was muß ich tun, damit die Zahl als Summe im Label28.text angezeigt wird?
    Habe das Versucht, geht aber leider nicht!

    Quellcode

    1. Label28.Text = reader("")



    Matthias

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

    Ich sehe bei deinem Codeausschnitt keinen Connectionstring, wo du eine Verbindung zu deiner DB aufbauen kannst...
    Sollte das außerhalb deiner Prozedur schon geschehen sein, wo deine Variable con schon belegt ist und du einen funktionierenden SQL-Aggregatausdruck im SqlCommand erstellt hast,
    dann weise einer Variablen Sum = cmd.ExecuteScalar das Ergebnis zu. Und diese Variable kannst du dann weiterverwenden...
    Die Zeilen 9 - 17 kannst du da weglassen.
    Hallo!

    So Verbinde ich die Datenbank beim laden des Formulars.

    Quellcode

    1. Private Sub Verbinden()
    2. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Umsatzdaten11.accdb"
    3. cmd.Connection = con
    4. ds.Tables.Add(dt)
    5. da = New OleDbDataAdapter("SELECT * FROM Umsatzdaten11", con)
    6. da.Fill(dt)
    7. Dim cb As New OleDbCommandBuilder(da)
    8. bs.DataSource = dt
    9. Me.DataGridView1.DataSource = bs
    10. End Sub



    Habe den Code von vorhin so angepasst:

    Quellcode

    1. Private Sub Vorjahreszahlen()
    2. Try
    3. con.Open()
    4. cmd.CommandText = "SELECT SUM(Waschzahlen) FROM Umsatzdaten11 WHERE Datum BETWEEN " & Format$(CDate(DateTimePicker2.Text), "#yyyy-MM-d#") & " AND " & Format$(CDate(DateTimePicker3.Text), "#yyyy-MM-d#")
    5. Sum = cmd.ExecuteScalar
    6. Do While reader.Read
    7. Label28.Text = reader("")
    8. Loop
    9. con.Close()
    10. Catch ex As Exception
    11. con.Close()
    12. MsgBox(ex.Message)
    13. End Try
    14. End Sub



    Und bekomme nun die Meldung:
    "Ungültiger Versuch Read aufzurufen, da der Datenleser bereits geschlossen wurde"
    In welcher Zeile entsteht der Fehler? Die While-Schleife kannst du weglassen und schreibe

    Quellcode

    1. Label28.Text = Sum.ToString
    .
    Ich verstehe jetzt nicht ganz, was du da versuchst.
    Zum Einen befüllst du dir eine Tabelle (oben) mit Daten aus der DB.
    Zum Anderen willst du dir die Summe von Waschzahlen (was ist überhaupt eine Waschzahl?) wieder aus der DB holen. Das ist Murx...
    Besser du generierst dir ein typ. Dataset aus der Access-DB und bindest DGV mit einer Tabelle und berechnest die Daten mit LINQ,
    oder machst dir eine berechnete Spalte in der Tabelle im Dataset - da stehen dann viele Wege dir dabei offen...
    OK!
    danke bekomme jetzt die Daten richtig angezeigt!






    Es gibt ein DVG was dem Benutzer die Daten des aktuellen Monat anzeigt.

    Mit dem Label möchte ich die Waschzahlen für den Monat im vorigen Jahr anzeigen und zwar nur als Summe.
    So hat der Benutzer einen Vergleich zum Vorjahr.


    Matthias