Nochmal, die offensichtlichen Fehler raus

> 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 <> Year(i) Then
    SubNeuesJahr
    JahrMerker = Year(i)
  End If
  if MonatMerker <> Month(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
  Else
    Ausgabe = ""
  End If

  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
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

Antwort per Email an