Hallo,
DecodeDate(StrToDateTime(qbefehl.Fields.Fields[1].AsString), s3, s2, s1);
Macht wenig Sinn, da s1,s2,s3 Strings sind, aber dass lässt sich ja ändern.
Muss man dann aber nicht aufpassen, ob dass richtige Format StrtoDateTime bei ...AsString herauskommt.
Wenn Fields[1] vom Typ ein Datum ist, kann man es sicher direkt mit AsDate
umformen.Zudem muss man vielleicht noch beachten, das der Urlaub auch über das Monatsende/Jahr hinausgehen kann.
Was macht man, wenn der Urlaub/Elternzeit im Vormonat/ Vorjahr beginnt?? Vielleicht wäre es angebrachter, statt der Dauer das Enddatum zu speichern.
Delphi-Quellcode:
suchMonat := StrToInt(cbmonat.Text);
while not qbefehl.eof do
begin
StartDatum := qbefehl.Fields.Fields[1].AsDate;// TDateTime;
DecodeDate(StartDatum, wJahr, wMonat,wTag);
if wMonat = suchMonat then begin
y1:=qbefehl.fields.fields[0].asinteger;// passende Spalte
t :=qbefehl.fields.fields[2].asinteger;// Dauer in Tagen
t := t+wTag;
IF t > DaysInMonth(StartDatum) then
t := DaysInMonth(StartDatum);
DaysInMonth(Now)
for i:= wTag to t do
sg.Cells[i,y1]:='XXXXXXXX';
end;
qbefehl.next;
end;