Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Datums- bzw. Terminberechnung, die Zweite

33 views
Skip to first unread message

Gernot Adams

unread,
Aug 30, 2004, 7:49:21 AM8/30/04
to
Hallo Zusammen,
ich möchte einen Termin in der Zukunft berechnen, in dem ich zu einem
Referenzdatum eine Anzahl Monate hinzuaddiere. Der Wochentag des neuen
Termins muß auf den selben Wochentag fallen, wie der des Referenzdatums. Um
das zu erreichen, unternehme ich folgendes: zunächst addiere ich mittels
DateAdd z.B. zum heutigen Datum (=Referenzdatum) 12 Monate hinzu
(=NeuerTermin). Zusätzlich berechne ich mittels Weekday den Wochentag des
heutigen Datums und den Wochentag des zukünftigen Termins. Um dann zu
erreichen, daß dieser zukünftige Termin auf dem selben Wochentag fällt, wie
das Referenzdatum, subtrahiere ich den Wochentag des Referenzdatums vom
Wochentag des neuen Termins und addiere die Differenz zum neuen Termin
hinzu. Allerdings funktioniert genau dieser letzte Schritt nicht. Im
Abfrageergebnis für den genauen zukünftigen Termin bekomme ich nur die
Anzeige "#Fehler".

So sieht mein SQL-Statement aus:

SELECT tblPatientzuVisite.lngPatientID,
tblPatientzuVisite.datDateVisit AS dateReferenzdatum,
Weekday([dateReferenzdatum],2) AS WochentagReferenzdatum,
DateAdd("m",12,[dateReferenzdatum]) AS Visite5,
Weekday([Visite5],2) AS WochentagVisite5,
DateAdd("\d",[dateReferenzdatum],[WochentagReferenzdatum]-[WochentagVisite5]
) AS ReferenzdatumVisite5

FROM tblPatientzuVisite
WHERE (((tblPatientzuVisite.bytVisiteAusprägungsID)=69));

Kann mir vielleicht jemand einen Hinweis geben, was ich hier falsch mache?
Danke im voraus und Gruß
Gernot


Gernot Adams

unread,
Aug 30, 2004, 8:15:00 AM8/30/04
to
sorry, da war eine kleiner Fehler im SQL-Statement: es heißt nicht:

>
DateAdd("\d",[dateReferenzdatum],[WochentagReferenzdatum]-[WochentagVisite5]
> ) AS ReferenzdatumVisite5

sondern:

DateAdd("\d",[Visite5];[WochentagReferenzdatum]-[WochentagVisite5]) AS
ReferenzdatumVisite5

dabei erscheint die Meldung #Fehler in der Ergebnisausgabe.
Gruß Gernot


Gernot Adams

unread,
Aug 30, 2004, 9:04:20 AM8/30/04
to
Das Problem hat sich aufgelöst, nachdem im u.g. Statement das "d" gegen ein
"j" getauscht habe. Komisch: in der OH steht unter dem Stichwort
"DateAdd-Funktion" nirgendwo ein Schalter "j" als Intervaleinstellung. Der
Verweis auf "j" findet sich aber an dieser Stelle der OH: "Ändern und
Berechnen von Datumsangaben in Formularen und Berichten - Beispiele".

DateAdd("\d",[Visite5],[WochentagReferenzdatum]-[WochentagVisite5]) AS
ReferenzdatumVisite5

Bernd Heumann

unread,
Aug 30, 2004, 9:10:38 AM8/30/04
to
Hallo Gernot

Gernot Adams wrote:

> sorry, da war eine kleiner Fehler im SQL-Statement: es heißt nicht:
>
>>
> DateAdd("\d",[dateReferenzdatum],[WochentagReferenzdatum]

[WochentagVisite5]
>> ) AS ReferenzdatumVisite5
>
> sondern:
>
> DateAdd("\d",[Visite5];[WochentagReferenzdatum]-[WochentagVisite5]) AS
> ReferenzdatumVisite5
>
> dabei erscheint die Meldung #Fehler in der Ergebnisausgabe.
> Gruß Gernot

Du mußt dich schon an Syntax und Reihenfolge der Parameter halten.
Aus der OH:
Dateadd(intervall,number,date)

Versuch also mal
DateAdd("d",[WochentagReferenzdatum]-[WochentagVisite5],[Visite5]) AS
ReferenzdatumVisite5

Grüße
Bernd

--
FAQ: http://www.donkarl.com

Gernot Adams

unread,
Aug 30, 2004, 10:10:34 AM8/30/04
to
Hallo Bernd,

"Bernd Heumann" <bheu...@despammed.org> schrieb im Newsbeitrag
news:e09vgc...@192.168.17.1...


> Hallo Gernot
>
> Gernot Adams wrote:
> > DateAdd("\d",[Visite5];[WochentagReferenzdatum]-[WochentagVisite5]) AS
> > ReferenzdatumVisite5
> >
> > dabei erscheint die Meldung #Fehler in der Ergebnisausgabe.

> Du mußt dich schon an Syntax und Reihenfolge der Parameter halten.
> Aus der OH:
> Dateadd(intervall,number,date)
>
> Versuch also mal
> DateAdd("d",[WochentagReferenzdatum]-[WochentagVisite5],[Visite5]) AS
> ReferenzdatumVisite5

es ist egal, wie herum ich es stelle, ich bekam nur die Meldung #Fehler.
Erst nachdem ich den Schalter "d" gegen " "j" getauscht habe, funktioniert
alles genau so, wie es soll.

Gruß Gernot


Josef Poetzl

unread,
Aug 30, 2004, 10:38:33 AM8/30/04
to
Hallo!

Gernot Adams schrieb:


>> Dateadd(intervall,number,date)
>>
>> Versuch also mal
>> DateAdd("d",[WochentagReferenzdatum]-[WochentagVisite5],[Visite5]) AS
>> ReferenzdatumVisite5
>
> es ist egal, wie herum ich es stelle,

Wenn Du meinst ...

> ich bekam nur die Meldung #Fehler.

Die "Eindeutschung" der VBA-Funktionen stiftet leider immer wieder
Verwirrung. Es kommt nämlich darauf an, wo Du die Funktion schreibst:
im Abfrageeditor oder auch bei Steuerelementen-Eigenschaft
"Steuerelementinhalt":
DatAdd("t",[WochentagReferenzdatum]-[WochentagVisite5],[Visite5])
oder in der SQL-Ansicht bzw. VBA:


DateAdd("d",[WochentagReferenzdatum]-[WochentagVisite5],[Visite5])

> Erst nachdem ich den Schalter "d" gegen " "j" getauscht habe, funktioniert


> alles genau so, wie es soll.

Wenn Du Dir aber den Ausdruck (den Du imo im Abfrageeditor geschrieben
hast) in der SQL-Ansicht ansiehst, wird vermutlich statt dem "j" ein
"y" stehen, oder?
Falls Du "d" benötigst, dann verwenden "t" im Abfrageeditor.
(Beachte auch: DatAdd / DateAdd)

Die Argumente für <intervall> aus der OH gelten für die "VBA-Variante"
der DateAdd-Funktion. (Diese gilt auch in der SQL-Ansicht.)

mfg
Josef

--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Gernot Adams

unread,
Aug 30, 2004, 11:11:27 AM8/30/04
to
Hallo Josef,

"Josef Poetzl" <ne...@joposol.com> schrieb im Newsbeitrag
news:111kkd8q6426z$.dlg@joposol.com...


> > es ist egal, wie herum ich es stelle,
>
> Wenn Du meinst ...

ok, ich bin mir nicht sicher ;-)


> Wenn Du Dir aber den Ausdruck (den Du imo im Abfrageeditor geschrieben
> hast) in der SQL-Ansicht ansiehst, wird vermutlich statt dem "j" ein
> "y" stehen, oder?

Du hast absolut recht. Im Query-Editor (in dem ich die Abfrage erstellt
habe) steht "j", und wenn ich die SQL-Ansicht einblende steht da "y".

> Falls Du "d" benötigst, dann verwenden "t" im Abfrageeditor.
> (Beachte auch: DatAdd / DateAdd)
>
> Die Argumente für <intervall> aus der OH gelten für die "VBA-Variante"
> der DateAdd-Funktion. (Diese gilt auch in der SQL-Ansicht.)

Vielen Dank für diesen Hinweis!
Gruß Gernot


0 new messages