Moin!
In einer Datenbank werden mehrere Zeiträume zu einer Person oft mit Überschneidungen gespeichert (Krank von bis, also zB 01.-03.03., 01.-05.03., 01.-10.03. - je nach Meldung). Um die Tage später auszählen zu können (zB für Fristen), muss ich die Überschneidungen herausfiltern und benötige dafür die einzelnen Tage der Zeiträume, die ich dann später einfach gruppieren kann und jeweils dazu dann noch die ID des Eintrages, um die Tage der zugrundeliegenden Krankmeldung und damit dann einer Person zuordnen zu können usw..
Mittels folgenden Codes werden mir die Einzeltage bereits in eine Tabelle geschrieben:
Private Sub Befehl7_Click()
Dim Tag As Date
Dim Tag2 As Date
Tag = Me!Ende
Tag2 = Me!Beginn
Dim db As DAO.Database
DoCmd.SetWarnings False
Set db = CurrentDb
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunSQL ("INSERT INTO tbl_tage ([Datum]) SELECT [Beginn] FROM [tbl_zeitraum] WHERE [Beginn] = forms.frm_zeitraum.Beginn")
Do Until Tag = Tag2
Tag2 = Tag2 + 1
DoCmd.RunSQL ("INSERT INTO tbl_tage ([Datum]) VALUES ('" & Tag2 & "')")
Loop
End Sub
Dem Datensatz Datum müsste nun allerdings auch jeweils noch die KrankID hinzugefügt werden, die sich in der gleichen Tabelle wie Beginn und Ende befindet und auch auf dem Formular erscheint.
Leider sind meine Versuche derzeit alle gescheitert und ich habe auch keine Lösung im WWW finden können, auch die KrankID in diesem Loop unterzubringen.
Für eure Rückmeldungen bedanke ich mich schon jetzt!
Statt der Loops könnte man auch direkter auswerten:
Grundlagen - SQL ist leicht (20) - Zeitraumüberschneidungen (https://www.ms-office-forum.net/forum/showthread.php?t=379192)
Um einen Zeitraum in Einzeltage auflösen zu können, ist die Verwendung einer Zahlenhilfstabelle (=> DateAdd("d", Zahl, Startdatum) ) oder gleich einer Kalendertabelle (alle Tage der Tabelle zwischen Start und Ende der Datentabelle) hilfreich.
Grundlagen - SQL ist leicht (1) - Hilfstabellen (https://www.ms-office-forum.net/forum/showthread.php?t=298414)
Grundlagen - SQL ist leicht (3) - Kalendertabelle (https://www.ms-office-forum.net/forum/showthread.php?t=298670)
Hi!
Vielen Dank für die Rückmeldung und die Links - ich werde sie mir nachher noch anschauen.
Mein Problem konnte ich gerade tatsächlich doch selbst lösen und es funktioniert soweit. Aber natürlich erzeugt das "jede Menge" Datenmüll. Von daher danke für deine Anregungen!
=)