Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DoCmd.RunSQL INSERT INTO - Loop und mehrere Datenfelder

Begonnen von BudWhiteCux, März 09, 2023, 10:41:44

⏪ vorheriges - nächstes ⏩

BudWhiteCux

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!

ebs17

Statt der Loops könnte man auch direkter auswerten:
Grundlagen - SQL ist leicht (20) - Zeitraumüberschneidungen

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
Grundlagen - SQL ist leicht (3) - Kalendertabelle
Mit freundlichem Glück Auf!

Eberhard

BudWhiteCux

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!

=)