01/01/1900 in SQLCE-Tabelle

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
AnFan
Beiträge: 12
Registriert: Fr Jan 02, 2015 2:05 pm

01/01/1900 in SQLCE-Tabelle

Beitrag von AnFan » Mi Feb 25, 2015 6:58 pm

Hallo,
ich habe in .NET eine Anwendung geschrieben (bin noch dabei).
Einige Spalten sind vom Typ datetime. Eine von denen bleibt leer, bzw. soll gefüllt werden, wenn bestimmte Aufgaben erledigt sind.
Während das Programm läuft, mache ich einen Teil der Tabelle sichtbar (gefiltert mit SQL-Befehlen).

Das funktioniert recht gut, aber es erscheinen leider die leeren Datums-Felder als '01/01/1900'.

Ich mache die Tabelle wie folgt sichtbar: (VB.NET - Code)

Code: Alles auswählen

        If conn.State = ConnectionState.Closed Then conn.Open()
        myDA = New SqlCeDataAdapter(cmd)
        myDataSet = New DataSet()
        myDA.Fill(myDataSet, "MyTable")

        Form1.DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView
Ich finde trotz Googelns nicht, wie ich es vermeiden kann, daß diese Werte ('01/01/1900') erscheinen.
Ich weiß, daß in der SQL-Tabelle die entsprechende Zelle nicht leer sein kann, da das Zellen-Format 'datetime' ist.

Frage:
Wo muß ich ansetzen, um im Datagrid die entsprechenden Zellen unsichtbar zu machen? Vielleicht im Dataset? Wenn ja, wie?

Vielen Dank,
A..

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: 01/01/1900 in SQLCE-Tabelle

Beitrag von cloidnerux » Mi Feb 25, 2015 7:03 pm

Vielleicht hilft dir das hier:
https://msdn.microsoft.com/de-de/librar ... 90%29.aspx
Ansonsten hast du wrsl das inherente Problem, dass der Datentyp "Datetime" eben keinen "leeren" Wert hat.
Eine Lösung wäre es, eine zweite Spalte Datum vom Typ "String" anzulegen, die eben nur dann gesetzt wird, wenn die Bedingung eintrifft.

Edit:
Was mir gerade eingefallen ist:
Du kannst dir für eine Spalte einen eigenen Renderer Programmieren, ähnlich wie es hier gemacht wird:
http://www.codemag.com/Article/0707061
Dann kannst du bedingt einfach abfragen, ob das Datum 01/01/1900 ist und es dementsprechend einfach nicht zeichnen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

AnFan
Beiträge: 12
Registriert: Fr Jan 02, 2015 2:05 pm

Re: 01/01/1900 in SQLCE-Tabelle

Beitrag von AnFan » Mi Feb 25, 2015 11:04 pm

hallo cloidnerux,
vielen Dank für die tollen Tips! Insbesondere der zweite Artikel ist ja eine spannende Sache, allerdings für mich zu hoch, zumal es sich nicht lohnt, nur wegen der Optik diesen Aufwand zu unternehmen.

Deine Idee mit einer weiteren Spalte ist ausgezeichnet! Habe daran noch nicht gedacht. Ja, das wäre ein "work around".

Antworten