Autor Beitrag
elias12
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 08.08.18 11:35 
Hallo zusammen

Ich bin noch relativ neu in C# und habe ein kleines Programm erstellt, dass Folgendes tut:

Aufgrund des Nettolohns (der fix ist pro Monat) wird abzüglich der offenen Rechnungen ein Tageslimit berechnet
Soweit so gut. Die Berechnung des Limits funktioniert tadellos. Nun möchte ich gerne (siehe Code unten) einen Vergleich starten, d.h. wenn ich pro Tag mehr als das Limit verbrauche soll z.B. ein Label mit einem Alarmtext so quasi "Sie haben das Limit überschritten" erscheinen, das Ganze basiert übrigens auf einer SQL Datenbank mit den beiden folgenden Tabellen "dbo.Limiten und dbo.Ausgaben"

Leider bringe ich die IF Abfrage nicht hin, bzw. wie kann die Werte vergleichen?

Danke für Eure Hilfe

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
        private void Alarm_Click(object sender, EventArgs e)
        {
            OleDbConnection con = new OleDbConnection();
            OleDbCommand cmd = new OleDbCommand();
            OleDbDataReader reader;
            con.ConnectionString = "Provider=SQLNCLI11.1;" + "Data Source=CRONOS-WI764BIT;Initial Catalog=Tageslimit;Persist Security Info=True;User ID=sa;Password=****";
            cmd.Connection = con;
            // Limite abzüglich Summe der Ausgaben ergibt Differenz die bei Ueberschreitung rotes Label anzeigt
            cmd.CommandText = "Select (Select (Nettolohn - Zahlungen) / 30  As Resultat from Limiten) - (Select SUM(Preis) AS Summe from Ausgaben) AS Differenz from Ausgaben";
            try
            {
                
                con.Open();
                reader = cmd.ExecuteReader();
                // LstAnzeige3.Items.Clear(); // Liste leeren
                while (reader.Read())  // Der Zugriff auf die DB geht solange bis der letzte Datensatz erreicht wurde
                {
                    Alarm.Text = ("Tageslimite abzüglich Summe der Ausgabe pro Tag    " + reader["Differenz"]);
                    
                    {
                    }
                }
                reader.Close(); // "Reader" schliessen
                con.Close(); // dasselbe mit der Verbindung zur DB
            }
            catch (Exception ex) // gibts ein Problem?
            {
                MessageBox.Show(ex.Message); // dann Fehlermeldung ausgeben
            }

        }


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3996
Erhaltene Danke: 820

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mi 08.08.18 12:24 
Hallo und :welcome:

dieselbe Frage hast du doch schon unter myCSharp - Wie kann ich ein If für einen Vergleich erstellen? gestellt!
Und dein Code ist jetzt (fast) immer noch derselbe.

Wenn dir Grundlagen fehlen, wie man Variablen benutzt und Vergleiche anstellt, dann solltest du nicht gleich ein GUI-Programm mit DB-Abfragen erstellen.
elias12 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 08.08.18 12:31 
Sorry wusste nicht dass die beiden Foren zusammenhängen.

Moderiert von user profile iconTh69: Vollzitat entfernt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3996
Erhaltene Danke: 820

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mi 08.08.18 12:38 
Nein, die hängen nicht zusammen, aber Crossposts solltest du explizit erwähnen (hast du ja hoffentlich in unseren Richtlinien gelesen). Und gleichzeitig mehrere Foren, d.h. andere Menschen (ohne Wissen untereinander) damit zu beschäftigen, ist unhöflich.

Aber ich gebe dir noch einen Tipp: schau dir mal die Methode OleDbDataReader.GetInt32 an (als Parameter übergibst du dann 0 - für die 1. [und einzige] Spalte deiner Abfrage).

Für diesen Beitrag haben gedankt: elias12