Vba-function mit date und berechnung

hi leute,
ich habe ein access-problem und hoffe das jemand dieses problem schon mal hatte und mir vielleicht weiter helfen kann.

ich moechte einer funktion 3 variablen (felder) mit den datentyp ‚date‘ uebergeben. jedoch duerfen 1 oder 2 felder leer (null) sein.

z.B.

public function test ( date_1 as date, _ date_2 as date ,date_3 as date ) as integer

if date_3 is null then
…anweisung…
endif

er macht die anweisung nicht , warum ?
wie kann ich auf ein leeres datumfeld abfragen ?
kommt eine berechnung in der funktion so rechnet er nur fuer die felder die gefuellt sind; fuer die felder (wo z.B. date_3 ist leer) kommt eine fehlermeldung obwohl die berechnung durch die if-abfrage,wenn sie klappt nichts mit zu tun hat.

wenn ich der funktion variant anstatt date
uebergebe funktioniert die if-abfrage, aber ich kann z.B. nicht datediff rechnen;
wie kann ich von variant nach date casten??
womit ich zu meinen 2. problem komme.
wie kann ich von einen datumsfeld mit den wert z.b. 01.04.76 nur den tag (1) als integer, den monat (4) als integer und das jahr (76) als integer umwandeln um
damit rechnen zu koennen ?

ich hoffe das einer dieses versteht, was ich
geschrieben habe und moechte mich schon mal fuer die muehe bedanken, an die leute, die ihre zeit opfern das zu lesen und evtl.
antworten
danke
gruss ming -:smile:

hi leute,
ich habe ein access-problem und hoffe das
jemand dieses problem schon mal hatte und
mir vielleicht weiter helfen kann.

ich moechte einer funktion 3 variablen
(felder) mit den datentyp ‚date‘
uebergeben. jedoch duerfen 1 oder 2
felder leer (null) sein.

z.B.

public function test ( date_1 as date, _
date_2 as date ,date_3 as date ) as
integer

if date_3 is null then
…anweisung…
endif

er macht die anweisung nicht , warum ?
wie kann ich auf ein leeres datumfeld
abfragen ?

Der Typ Date kann (wie alle expliziten Datentypen) nicht NULL sein - Du mußt also einen Variant nehmen.

kommt eine berechnung in der funktion so
rechnet er nur fuer die felder die
gefuellt sind; fuer die felder (wo z.B.
date_3 ist leer) kommt eine fehlermeldung
obwohl die berechnung durch die
if-abfrage,wenn sie klappt nichts mit zu
tun hat.

wenn ich der funktion variant anstatt
date
uebergebe funktioniert die if-abfrage,
aber ich kann z.B. nicht datediff
rechnen;

Du mußt halt vorher auf NULL abfragen (mit IsNull).

wie kann ich von variant nach date
casten??

Z.B. mit CDate oder CVDate - allerdings solltest Du die NULL-Fälle gesondert behandeln.

womit ich zu meinen 2. problem komme.
wie kann ich von einen datumsfeld mit den
wert z.b. 01.04.76 nur den tag (1) als
integer, den monat (4) als integer und
das jahr (76) als integer umwandeln um
damit rechnen zu koennen ?

Schau mal in der Hilfe unter DatePart bzw. Day, Month und Year nach…

Reinhard