Autor Beitrag
laura04325
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 26.03.18 18:07 
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:
32:
33:
 void FillCombo()
        {
            try 
            {   
              
                DateTime MONDAY = DateTime.Now;
                DateTime FRIDAY = DateTime.Now.AddDays(5);

                string query = "SELECT Auftragsnummer,Enddatum,Startdatum FROM Tbl_Auftrag Where [Startdatum] BETWEEN '" + MONDAY + "' AND '" + FRIDAY + "' AND [Enddatum] BETWEEN '" + MONDAY + "' AND '" + FRIDAY + "'";
                con.Open();
                SqlCommand cmdDataBase = new SqlCommand(query, con);
                SqlDataReader rdr = cmdDataBase.ExecuteReader();
                while (rdr.Read())
                {

                    String sName = rdr["Auftragsnummer"].ToString();

                    listBox1Monday.Items.Add(sName);
                    listBox2Dienstag.Items.Add(sName);
                    listBox3Mittwoch.Items.Add(sName);
                    listBox4Donnerstag.Items.Add(sName);
                    listBox5Freitag.Items.Add(sName);


                }
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
        }


Hallo :)

zu meinen Code... ich habe ein Zeitraum bestimmt um mir alle Aufträge anzeigen zu lassen. Und dann die Auftragsnummer in die richtige ListBox einzutragen. Allerdings gehen manche Aufträge z.b. nur vom 26.03.2018 bis 27.03.2018. Aber mit meinem code schreibt er es in jede listbox ...

ich verstehe wieso er es macht, aber leider nicht wie ich noch genauer sagen soll, dass er mein Beispiel nur in die Listbox Montag und Dienstag rein schreibt.

Hat jemand von euch eine Idee?

Liebe Grüße,

Laura


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mo 26.03.2018 um 18:10
Moderiert von user profile iconTh69: Titel geändert ("C#," entfernt).
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 27.03.18 10:10 
Hallo und :welcome:

ich hatte deinen Beitrag auf myCSharp.de auch mitgelesen.
Schön, daß du jetzt wenigstens die SQL-Abfrage schon mittels BETWEEN umgeschrieben hast. Ich hoffe, dir ist aber klar, daß du damit nur Aufträge erhältst, welche komplett innerhalb dieser 5 Tage liegen.

Besser ist es, du löst dies mit einer OR-Bedingung, so daß entweder Start- oder Ende-Datum der Aufträge innerhalb der 5 Tage liegen (also mußt du auch die zwei Bedingungen logisch vertauschen).

Innerhalb der Schleife mußt du dann ebenfalls wieder das Datum (für jeden Tag) abfragen.
Dazu am besten die 5 ListBox-Objekte in eine Liste eintragen:
ausblenden C#-Quelltext
1:
List<ListBox> listboxes = new List<ListBox>() { listBox1Monday, listBox2Dienstag, listBox3Mittwoch, listBox4Donnerstag, listBox5Freitag };					

Nun kannst du per Index (0-4) darauf zugreifen: listboxes[idx], wobei [idx] dann mittels einer Schleife über die 5 Tage iteriert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
for (idx = 0; idx < listboxes.Count; idx++)
{
  Date date = MONDAY.AddDays(idx);
  if (/* date innerhalb von Auftrag Start und Ende */// <- dies überlasse ich dir als Aufgabe ;-)
    listboxes[idx].Items.Add(sName);
}


PS: Deine Zuweisung DateTime MONDAY = DateTime.Now solltest du aber auch nochmal überdenken...
Setze zum Test ersteinmal am besten ein fixes Datum ein (von dem du weißt, daß innerhalb dessen Woche einige Aufträge liegen).