Hallo zusammen,
ich habe ein Problem beim Abfragen des Datum per ODBCCommand auf einen SQL Server 2008.
Ich habe eine .dll, die den Connect managed. Ich übergeben dort einen ODBCCommand (SQL + Parameter) und erhalte einen Datatable. Nun habe ich eine Tabelle, in der ein Gueltig_Bis Datum drin ist. Dieses ist vom Datentyp in der SQLServer Datenbank ein Datetime.
Wenn ich nun folgendes generiere und übergebe, erhalte ich ein Datatable mit 0 Rows, obwohl 100%ig Datensätze zu diesen Kriterien vorhanden sind.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| OdbcCommand cmd_Sicht_Verfuegbar = new OdbcCommand(); DataTable dt_Sicht_Verfuegung = new DataTable();
cmd_Sicht_Verfuegbar.CommandText = "SELECT Bezeichnung FROM KVP_Kostenrechnungssichten WHERE gueltig_bis <= ?"; cmd_Sicht_Verfuegbar.Parameters.AddWithValue("@Gueltig_Bis", DateTime.Today);
dt_Sicht_Verfuegung = DBLayer.GetDataTable_OhneAenderungen(cmd_Sicht_Verfuegbar);
foreach (DataRow locDrSichtVerfuegbar in dt_Sicht_Verfuegung.Rows) { this.lbSichten_Verfuegbar.Items.Add(locDrSichtVerfuegbar["Bezeichnung"].ToString()); } |
Ich glaube, es liegt an den Date Format. In der Datenbank steht das Datum als 2099-01-01 00:00:00.000 und das Programm zeigt beim durchsteppen 26.12.2010 00:00:00 .
Liegt es daran? Wie kann ich dieses Problem beheben und das Datum korrekt abfragen? Oder leigt es an etwas anderem?
P.S. Sollte die Frage kommen, wieso ich nicht den SQLClient nutze:
Ich möchte dieses Tool Datenbankunabhängig machen. Im Moment erstelle ich einen ODBC Command und übergebe diesen an die .dll, die den Connect managed und die Daten holt. Diese .dll greift auf eine .dsn Datei zurück, die im System angelegt wird. Man kann also beim Anlegen der .dsn Datei entscheiden ob man den SQLNativeClient nutzt (für SQLServer) oder den OracleClient (für Oracle).
Somit bleibt das Programm immer gleich und die .dsn Datei entscheidet auf welche Datenbank man zugreift.
Soweit mein Plan. Aber vielleicht gibt es da einen Haken, den ich bislang nicht gesehen habe.