collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 53
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13976
  • stats Beiträge insgesamt: 66571
  • stats Themen insgesamt: 8973
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Wiederkehrende Termine mittels For Schleife  (Gelesen 156 mal)

Offline henne222

  • Newbie
  • Beiträge: 26
Wiederkehrende Termine mittels For Schleife
« am: Juli 12, 2018, 14:31:57 »
Hi,
Ich möchte aus einem Formular wiederkehrende Termine für einen bestimmten Zeitraum in eine Tabelle schreiben. Immer im Monatsintervallen Im Formular habe ich die Felder:
txtEventStart (Startdatum der Terminserie)
txtEventEnd (Enddatum der Terminserie)
txtInterval (alle wieviel Monate wiederholt werden soll)
txtEventDescrption (Beschreibung des Termins)

Mittels diesem VBA Code:
Private Sub cmdSave_Click()
Dim rst As DAO.Recordset
Dim i As Long
Dim r As Long
Set rst = CurrentDb.OpenRecordset("SELECT EventDate, EventSubject FROM tblEvent")
r = Me.txtEventEnd
For i = Me.txtEventStart To r
With rst 
  If DateDiff(“m”, i, Me.txtEventStart) Mod Me.txtInterval = 0 Then
       .AddNew
       !EventDate = DateAdd("m", Me.txtInterval, i)
       !EventSubject = Me.txtEventDescrption
       .Update
End If
End With
Next i
rst.Close
Set rst = Nothing
End Sub

möchte ich es in die Tabelle tblEvent schreiben das klappt auch so weit… nur werden die Daten zwischen den Terminen einfach aufgefüllt, was ja nicht sein soll. Wenn ich z.B. heute als Startdatum hätte und das Enddatum 2 Jahre später müssen 3 Termine generiert werden 12.01.2019, 12.07.2019, 12.01.2020

Aber das Ergebnis sieht leider so aus:
was ist falsch an meinem Script ich hab jetzt stundenlang versucht das zu lösen aber komme nicht mehr weiter....
tblEvent
EventID   EventDate   EventSubject
706079   12.07.2019   grbrehzfe
706080   13.07.2019   grbrehzfe
706081   14.07.2019   grbrehzfe
706082   15.07.2019   grbrehzfe
706083   16.07.2019   grbrehzfe
706084   17.07.2019   grbrehzfe
706085   18.07.2019   grbrehzfe
706086   19.07.2019   grbrehzfe
706087   20.07.2019   grbrehzfe
706088   21.07.2019   grbrehzfe
706089   22.07.2019   grbrehzfe
706090   23.07.2019   grbrehzfe
706091   24.07.2019   grbrehzfe
706092   25.07.2019   grbrehzfe
706093   26.07.2019   grbrehzfe
706094   27.07.2019   grbrehzfe
706095   28.07.2019   grbrehzfe
706096   29.07.2019   grbrehzfe
706097   30.07.2019   grbrehzfe
706098   31.07.2019   grbrehzfe
706099   01.01.2020   grbrehzfe
706100   02.01.2020   grbrehzfe
706101   03.01.2020   grbrehzfe
706102   04.01.2020   grbrehzfe
706103   05.01.2020   grbrehzfe
706104   06.01.2020   grbrehzfe
706105   07.01.2020   grbrehzfe
706106   08.01.2020   grbrehzfe
706107   09.01.2020   grbrehzfe
706108   10.01.2020   grbrehzfe
706109   11.01.2020   grbrehzfe
706110   12.01.2020   grbrehzfe
706111   13.01.2020   grbrehzfe
706112   14.01.2020   grbrehzfe
706113   15.01.2020   grbrehzfe
706114   16.01.2020   grbrehzfe
706115   17.01.2020   grbrehzfe
706116   18.01.2020   grbrehzfe
706117   19.01.2020   grbrehzfe
706118   20.01.2020   grbrehzfe
706119   21.01.2020   grbrehzfe
706120   22.01.2020   grbrehzfe
706121   23.01.2020   grbrehzfe
706122   24.01.2020   grbrehzfe
706123   25.01.2020   grbrehzfe
706124   26.01.2020   grbrehzfe
706125   27.01.2020   grbrehzfe
706126   28.01.2020   grbrehzfe
706127   29.01.2020   grbrehzfe
706128   30.01.2020   grbrehzfe
706129   31.01.2020   grbrehzfe
706130   01.07.2020   grbrehzfe
706131   02.07.2020   grbrehzfe
706132   03.07.2020   grbrehzfe
706133   04.07.2020   grbrehzfe
706134   05.07.2020   grbrehzfe
706135   06.07.2020   grbrehzfe
706136   07.07.2020   grbrehzfe
706137   08.07.2020   grbrehzfe
706138   09.07.2020   grbrehzfe
706139   10.07.2020   grbrehzfe
706140   11.07.2020   grbrehzfe
706141   12.07.2020   grbrehzfe
706142   13.07.2020   grbrehzfe
706143   14.07.2020   grbrehzfe
706144   15.07.2020   grbrehzfe
706145   16.07.2020   grbrehzfe
706146   17.07.2020   grbrehzfe
706147   18.07.2020   grbrehzfe
706148   19.07.2020   grbrehzfe
706149   20.07.2020   grbrehzfe
706150   21.07.2020   grbrehzfe
706151   22.07.2020   grbrehzfe
706152   23.07.2020   grbrehzfe
706153   24.07.2020   grbrehzfe
706154   25.07.2020   grbrehzfe
706155   26.07.2020   grbrehzfe
706156   27.07.2020   grbrehzfe
706157   28.07.2020   grbrehzfe
706158   29.07.2020   grbrehzfe
706159   30.07.2020   grbrehzfe
706160   31.07.2020   grbrehzfe
706161   01.01.2021   grbrehzfe
706162   02.01.2021   grbrehzfe
706163   03.01.2021   grbrehzfe
706164   04.01.2021   grbrehzfe
706165   05.01.2021   grbrehzfe
706166   06.01.2021   grbrehzfe
706167   07.01.2021   grbrehzfe
706168   08.01.2021   grbrehzfe
706169   09.01.2021   grbrehzfe
706170   10.01.2021   grbrehzfe
706171   11.01.2021   grbrehzfe
706172   12.01.2021   grbrehzfe
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #1 am: Juli 12, 2018, 14:53:28 »
Hallo,


Zitat
nur werden die Daten zwischen den Terminen einfach aufgefüllt, was ja nicht sein soll.


Wie soll es denn sein? Was heißt "zwischen den Terminen"?

Offline henne222

  • Newbie
  • Beiträge: 26
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #2 am: Juli 12, 2018, 15:22:28 »
Hi,

es soll z.B. alle 6 Monate (wird über Interval eingegeben) ein Termin erstellt werden über den Zeitraum der über Start und Enddatum eingegeben wird.
In der angehängten Tabelle kannst Du sehen das der erste Termin richtig esrtellt wird... dann wir warum auch immer der Monat voll gemacht mit Terminen erst dann kommt wieder der 6 Monatssprung natürlich dann auch zum 1. und nicht zum 12. ... ich weiß nicht warum da der Monat immer voll gemacht wird ....

also wenn ich heute generiere müssten diese 3 Termine erstellt werden:12.01.2019, 12.07.2019, 12.01.2020 es wird aber ebend zwischen den Beiden Terminen immer der Monat vom Termin mit Daten aufgefüllt 12.01.2019 stett jetzt den zweiten termin zu bringen wird bis 31.01.2019 für jeden Tag ein Termin erstellt erst dann kommt wieder der Sprung von 6 Monaten.
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 889
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #3 am: Juli 12, 2018, 15:45:20 »
For i = Me.txtEventStart To r
' ...
   !EventDate = DateAdd("m", Me.txtInterval, i)
Deine Schleife zählt das Startdatum jeweils um 1 (=> einen Tag) hoch. Damit erhältst Du das gezeigte Ergebnis.

Man würde eher so etwas ansetzen:
!EventDate = DateAdd("m", Me.txtInterval * i, Me.txtEventStart)... und dabei die Schleifengrenzen passend setzen.

Mit einer einfachen Zahlenhilfstabelle braucht man dann gar keine Schleife, sondern arbeitet mit einer performanteren Abfrage:
Grundlagen - SQL ist leicht (1) - Hilfstabellen

Mit freundlichem Glück Auf!

Eberhard
 

Offline henne222

  • Newbie
  • Beiträge: 26
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #4 am: Juli 12, 2018, 16:19:49 »
Zitat
Man würde eher so etwas ansetzen:
Code: [Auswählen]

!EventDate = DateAdd("m", Me.txtInterval * i, Me.txtEventStart)

... und dabei die Schleifengrenzen passend setzen.

das verursacht bei mir einen Fehler beim Prozeduraufruf... So ganz verstanden habe ichs auch nicht  ;) Werde trotzdem mir das mit den Hilfstabellen mal ansehen....
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 889
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #5 am: Juli 12, 2018, 17:54:45 »
"so etwas" ... ist jetzt auch kein vollständiger kopierfähiger Code zur 1:1-Verwendung, sondern soll Denkanstoß sein.
Mit freundlichem Glück Auf!

Eberhard
 

Offline henne222

  • Newbie
  • Beiträge: 26
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #6 am: Juli 13, 2018, 10:28:42 »
 
Zitat
"so etwas"
;D
tut mir leid ich stehe voll auf der Leitung, check das irgendwie nicht. Ich sage ja mit DateAdd("m", 6, i) das er 6 Monate draufaddieren soll, macht er ja auch beim ersten Datum. Ich komme nur nicht drauf wie ich jetzt der Schleife sage das sie beim nächsten Durchlauf auch 6 Monate weiter gehen soll... Da hab ich gerade voll die Blockade...
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 889
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #7 am: Juli 13, 2018, 12:03:38 »
Zum Hinzufügen von Folgeterminen (etwas verallgemeinert):
For i = 1 To Endwert
   Debug.Print DateAdd("m", Intervall * i, Startdatum)
Next
... wobei der Endwert aus der Differenz aus Endwert und Startwert zu bilden wäre.

Man würde also dem Startdatum jeweils Vielfache des Intervalls hinzufügen, um auf Folgetermine zu kommen.
« Letzte Änderung: Juli 13, 2018, 15:36:08 von ebs17 »
Mit freundlichem Glück Auf!

Eberhard
 

Offline henne222

  • Newbie
  • Beiträge: 26
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #8 am: Juli 13, 2018, 15:26:15 »
Vielen Dank für die Erklärung!
Private Sub cmdSave_Click()
Dim rst As DAO.Recordset
Dim i As Long
Dim Endwert As Long
Set rst = CurrentDb.OpenRecordset("SELECT EventDate, EventSubject FROM tblEvent")
Endwert = Me.txtEventEnd - Me.txtEventStart
For i = 1 To Endwert / 30 / Me.txtIntervall
With rst
       .AddNew
       !EventDate = DateAdd(IntervallID, Me.txtIntervall * i, Me.txtEventStart)
       !EventSubject = Me.txtEventDescrption
       .Update
End With
Next i
rst.Close
Set rst = Nothing
End Sub

Jetzt macht das Script was es soll... Gott stand ich auf der Leitung. Danke!

Kann man das hier noch eleganter lösen?

Zitat
For i = 1 To Endwert / 30 / Me.txtIntervall

In meiner DB kommt es jetzt nicht auf Taggenauigkeit an aber falls man es irgendwann für ein anderes Project benötigt....
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 889
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #9 am: Juli 13, 2018, 15:44:34 »
EndwertSchleife = DateDiff("m", Startdatum, Enddatum) \ IntervallGgf. noch um 1 korrigieren, je nach dem, ob man den letzten Folgetermin richtig erwischt.
Mit freundlichem Glück Auf!

Eberhard
 

Offline henne222

  • Newbie
  • Beiträge: 26
Re: Wiederkehrende Termine mittels For Schleife
« Antwort #10 am: Juli 16, 2018, 15:23:07 »
Wunderbar super, das haut jetzt bestens hin... Vielen Dank!