Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: nordland am April 04, 2013, 13:49:24

Titel: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 04, 2013, 13:49:24
Hallo zusammen,

ich muss folgende Datumsabfrage zwischen zwei Besuchen (Besuch1 und Besuch2) in VBA erstellen; die Bedingung dabei ist, dass das [Besuch2] 2 Monate +/- 7 Tage stattfinden muss. Wie geht man dabei vor? Leider kann ich aufgrund unterschiedlicher Anzahl der Tage pro Monat nicht einfach in Tagen rechnen :(

Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: bahasu am April 04, 2013, 14:15:52
Hi,

mit der DateAdd-Funktion kannst Du wahlweise Monate bzw. Tage addieren. (siehe access-Hilfe).

Harald
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 04, 2013, 14:38:49
bei der Berechnung mit Tagen hat es bei mit so ausgeschaut:

if me.besuch2 - me.besuch1 < 7 or me.besuch2 - me.besuch1 > 7 Then
MsgBox....

Es wurde in diesem Beispiel automatisch in Tagen gerechnet, bei meiner jetzigen aufgabe muss ich plus zwei Monate mit der Varianz von +/-7 Tagen das Datumsfeld überfüfen.
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: bahasu am April 04, 2013, 14:53:23
Hi,

im Anhang ein Beispiel (siehe Abfrage), das eine Datumsaddition mit Monaten und Tagen macht.

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 04, 2013, 15:28:23
Hallo Harald,
vielen Dank für die Angehänghte Datei, die mir bei anderen Auswertungen helfen wird, ich muss allerdings diese Abfarge in VBA (im Formular) hinterlegen und zwar nur zur Überprüfung, ob das Zeitfenster zwischen Besuch1 und Besuch2 eingehalten worden ist. Wenn das nicht der Fall sein sollte bekommt der Dateneingeber eine Meldung im Formular.
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: bahasu am April 04, 2013, 15:38:10
Hi,

als Anregung für eigene Versuche anbei ein Beispiel mit Formular.
Als Datenquelle wird eine Abfrage benutzt, die wie im obigen Beispiel die Unter- und Obergrenze für den Besuch2 ermittelt.
Im Formular wird beim Ereignis "Vor Aktualisierung" der neue Wert von Besuch2 dagegen geprüft und ggf. zurückgewiesen.

Weitere Absicherungen (z.B. im nachhinein wird das Besuchsdatum1 geändert) sind nicht drin.

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 04, 2013, 16:38:53
Vielen Dank für die Anregung, bin mir nicht sicher, ob für mich das eine gute Lösung wäre. Leider beherrsche ich die Syntax im VBA nicht besonders. Wie würde man die Differenz zwischen diesen zwei Besuchen nur im Monaten ohne Varianz von+/-7 Tagen schreiben?
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: bahasu am April 04, 2013, 17:33:12
Hi,

in der Abfrage "Besuch_2" in den Spalten "B2_min" und "B2_max" den Teil "-7" bzw. "+7" entfernen.

Aber wird dann "ohne Varianz" nicht das Zeitfenster sehr klein?
Was passiert, wenn als Besuchstermin_2 ein Wochenende ermittelt wird? Das würde dann zurückgewiesen werden!

Harald
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: bahasu am April 05, 2013, 05:44:11
Moin,

hier nun ein Beispiel, bei dem die Berechnung des Zeitfensters im VBA-Teil des Formulars ("Formular2) durchgeführt wird.
Dort gibt es ein ungebundenes Steuerelement, in dem die Zeitspanne vorgegeben werden kann: z.B. ±7 Tage.

In zwei weiteren ungebundenen Steuerelementen wird das aus dem Besuchstermin1 berechnete Zeitfenster als min- und max-Wert angezeigt. Der Wochentag wird mit Hilfe der format-Anweisung gezeigt.

Es wird ein Hinweis gegeben, wenn der Termin2 zu klein bzw. zu groß ist,
und in diesem Fall gefragt, ob der Termin2 trotzdem genommen werden soll.

Entspricht das Deinen Wünschen?

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 08, 2013, 09:01:44
Hallo Harald,

vielen Dank für Deine Hilfe! Das Ergebnis ist für mich zueriendenstellend :D und ich kann jetzt weiter arbeiten:)

Oskar
Titel: Re: Datumsabfrage mit Monaten und Tagen
Beitrag von: nordland am April 08, 2013, 10:59:40
Hier meine Lösung (Dank Hilfe von Harald :))

Private Sub Besuchsdatum_2_AfterUpdate()
If Me.Besuchsdatum_2 < DateAdd("m", 2, Me.Besuchsdatum_1) - 7 Or Me.Besuchsdatum_2 > DateAdd("m", 2, Me.Besuchsdatum_1) + 7 Then
MsgBox "Visit out of time window!", vbCritical, "ATTENTION!"
End If
End Sub