<zitiere wer="Martin Huber">
> der Kalender wird mit zwei Schleifen erstellt (Monate - Schleife1 / Tage
> - Schleife2) und einige kleinen Datumsfunktionen um den Derzeitigen
> Monat festzustellen und jedem Monat die richtige Anzahl an Tagen.
Warum so kompliziert? Du baust die kompletten Datumsfunktionen nach, die
eh schon alle existieren mit der Gefahr Fehler einzubauen, die es nicht
braucht und der Code wird unnötig aufgebläht
Hier mal in Pseudcode wie das eleganter geht
Anfangsdatum = Dateserial(Jahr, Monat, Tag)
' die Variablen kommen von irgendwo her, entsprechend setzen
Endedatum = Dateserial(Jahr, Monat, Tag) ' dto
JahrMerker = 0
MonatMerker = 0
For i = Anfangsdatum to Endedatum
if JahrMerker <> Jahr(i) Then
SubNeuesJahr
JahrMerker = Year(i)
End If
if MonatMerker <> Jahr(i) Then
SubNeueMonat
Monatsmerker = Month(i)
End If
' hier ausgabe eines Datums
' wahrscheinlich eine Zelle
' für den Tag als Wert etwa Day(i) verwenden
' Und alle anderen passenden Funktionen stehen zur Verfügung
' Etwa ein
Select Weekday(i)
Case vbSunday, vbSaturday
' anderes Format für Wochenend
Case Else
' normaler Tag
End Select
Next
' -- hier noch Tabelle zumachen
Sub SubNeuesJahr
' wahrscheinlich Tabellenanfang setzen und TR
End Sub
Sub SubNeuerMonat
' wahrscheinlich alte Zeile schliessen und neue Zeile setzen
End Sub
> Vielleicht hat da jemand einen Anhaltspunkt oder ein Beispiel für mich
> wie man das ganze Besser lösen kann?
Vermute mal an der Stelle musst Du aus der Datenbank was einmischen.
Annahme die Datenbankausgabe ist nach Datum aufsteigend sortiert. Bildlich
gesprochen hast Du eine Schleife, die vom Anfangsdatum bis zum Endedatum
druchläuft. Also holst Du Dir das erste Datum aus dem Recordset und
vergleichst bei jeder Ausgabe eines Tages, ob das Datum des Tages mit dem
Datum aus der DB übereinstimmt. Falls ja holst Du die restlichen Felder
des Datensatzes und gibst sie aus.
Vom obigen Code abgeleitet (mal ein bischen umständlich und ausführlich)
dbdatum = oRS("datumsfeld").value
if i = dbdatum then ' wir ham was
Ausgabe = oRS("Saalnummer").value
Select Weekday(i)
Case vbSunday, vbSaturday
' anderes Format für Wochenend
' hier die Variable Ausgabe mit einbauen
Case Else
' normaler Tag
' hier die Variable Ausgabe mit einbauen
End Select
End If
Next
Ok den doppelten Code kann man optimieren. Ging nur mal ums Prinzip.
Macht das Sinn, oder wo bin ich zu abstrakt geworden?
--
Viele Grüße
Hubert Daubmeier
_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse