Das ist schonmal nicht schlecht, aber ich würde die folgenden Teile so machen : (ungetestet)
Delphi-Quellcode:
qbefehl.Close;
qbefehl.SQL.Clear;
qbefehl.SQL.Add('select ma.mid,urlaub.beginn,rtrim(urlaub.dauer),urlaub.unr from ma '+
'inner join urlaub on ma.mid = urlaub.mid '+
'where ma.aid = :maaid order by ma.mid asc');
qbefehl.parambyname('maaid').AsString := dbcbabteilung.KeyValue;
qbefehl.Open;
qanzahl.Close;
qanzahl.SQL.Clear;
qanzahl.SQL.Add('select count(Urlaub.UNr) as anzahl from Urlaub '+
'inner join ma on Urlaub.MId = ma.MId '+
'where AId = :aid');
qbefehl.parambyname('aid').AsString := dbcbabteilung.KeyValue;
qanzahl.Open;
qbefehl.first;
DecodeDate(StrToDateTime(qbefehl.Fields.Fields[1].AsString), s3, s2, s1);
Diese Zeile ersetzt die drei Copy-Befehle.