VB.net: Datum als optionales Argument übergeben

Problem: Ich habe in VB.net eine Funktion oder eine Prozedur und möchte ein Datum als optionales Argument übergeben. Nichts einfacher als das (dachte ich… )

Lösung:

Private Sub foo(Optional Datum as Date = CDate("01.01.1901") )

Problem: Nein, doch keine Lösung, denn die IDE meckert über das Datum:

Fehler BC30060: Eine Konvertierung von "String" in "Date" kann in einem konstanten Ausdruck nicht durchgeführt werden.

Lösung: Ok, es gibt doch die Funktion <MinValue> für Datumswerte, das müsste doch gehen

Private Sub foo(Optional Datum as Date = Date.MinValue)

Problem: Grrrrr, geht auch nicht:

Fehler BC30059: Konstanter Ausdruck erforderlich.

Lösung: Wie wäre es denn mit <Nothing>?

Private Sub foo(Optional Datum as Date = Nothing)

Jupp, das funktioniert! Jetzt noch schnell der Vergleich mit <Is Nothing> und es läuft.

If Datum Is Nothing Then...

Problem: Doch halt – was ist das?

Fehler BC30020	'Der Is-Operator akzeptiert keine Operanden vom Typ "Date". Die Operanden müssen Referenztypen sein oder Typen, die NULL-Werte zulassen.

Lösung: In diesem Fall kann man tatsächlich mit ” = ” abfragen.

If Datum = Nothing Then...

Intern setz VB.net das Datum auf den 01.01.0001 aber Nothing ist so clever und akzeptiert den Wert. Problem tatsächlich gelöst.


Keine Kommentare (0)

Leave a Reply

Your email address will not be published. Required fields are marked *