Entwickler-Ecke

WinForms - datagridview nach Zeitraum sortieren


yougin66 - Di 12.10.10 12:13
Titel: datagridview nach Zeitraum sortieren
Ich wurde gerne in einem DGV ein Sortierung nach einem bestimmten Zeitraum
vornehmen, ich bekomme datei aber immer einen Fehler das der Datentyp unverträglich ist.

momentan sieht das so aus :


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
try
{
con.Open();
cmd.CommandText =
"select * from bestellung where Bestelldatum between '%" + dateTimePicker1.Text + "%' and '%" + dateTimePicker2.Text +"%' ";
//"select * from bestellung where Bestelldatum like '%" + dateTimePicker1.Text +"%'";
MessageBox.Show(cmd.CommandText); //Eintragsübersicht in MsgBox
Ausgabe();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
con.Close();


Th69 - Di 12.10.10 12:17

Benutze am besten SQL Parameter, s.a. meinen Link unter http://www.c-sharp-forum.de/viewtopic.php?p=618826#618826


yougin66 - Di 12.10.10 13:07

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Benutze am besten SQL Parameter, s.a. meinen Link unter http://www.c-sharp-forum.de/viewtopic.php?p=618826#618826

ehm ja...
die parameter stimmen ja soweit, ich kann ja mit nur einem picker nach der auswhal filtern.
nur geht es mit between nicht, nun wäre zu klären woran das liegt?


Th69 - Di 12.10.10 14:31

Hallo,

ich glaube, du hast nicht verstanden, was SQL Parameter sind.
Die Datentypen sind deshalb unverträglich, weil du eine Datumsfeld mit "strings" vergleichst!

Daher lies dir mal den verlinkten Artikel dazu in Ruhe durch...


yougin66 - Di 12.10.10 14:54

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich glaube, du hast nicht verstanden, was SQL Parameter sind.
Die Datentypen sind deshalb unverträglich, weil du eine Datumsfeld mit "strings" vergleichst!

Daher lies dir mal den verlinkten Artikel dazu in Ruhe durch...


Ich finde in dem Artikel nicht wirklich was nützliches... für mein Problem.
Ein Datum kann ich vergleich das geht auch ohne probleme nur einen zeitraum zu filtern ist etwas schwieriger.
Da komme ich net so recht weiter...

aber danke...


Th69 - Di 12.10.10 15:17

So verwendet man SQL Parameter:

C#-Quelltext
1:
2:
3:
cmd.CommandText = "select * from bestellung where Bestelldatum between @VON and @BIS";
cmd.Parameters.AddWithValue("@VON", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@BIS", dateTimePicker2.Value);

Dadurch wird der Parameter als Datumswert übergeben, da "DateTimePicker.Value" ein DateTime ist.

(je nach Datenbanksystem muß man bei dem SQL-Befehl dann ':VON' anstatt '@VON' schreiben, s. Artikel -)


yougin66 - Di 12.10.10 16:11

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
So verwendet man SQL Parameter:

C#-Quelltext
1:
2:
3:
cmd.CommandText = "select * from bestellung where Bestelldatum between @VON and @BIS";
cmd.Parameters.AddWithValue("@VON", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@BIS", dateTimePicker2.Value);

Dadurch wird der Parameter als Datumswert übergeben, da "DateTimePicker.Value" ein DateTime ist.

(je nach Datenbanksystem muß man bei dem SQL-Befehl dann ':VON' anstatt '@VON' schreiben, s. Artikel -)


Danke passt nun
man muss nur die beiden picker einmal benutzt haben damit er auch richtig filtert!