Hallo Manfred,
noch ein Vorschlag (auch wenn das Problem für Dich erledigt ist). Im Datenmodul kannst Du trennen zwischen dem eigentlichen Ereignis und der gewünschten Maßnahme:
Delphi-Quellcode:
// die gewünschte Berechnung ausführen
procedure TDM_hotel.nc_calc;
var maxdate : string;
begin
Q_tmp.SQL.Text := ('SELECT MAX (D_DATE) FROM HOTEL_D WHERE' +
'(ID_AREA = '+''''+(''+frm_hotel.ID.Field.DisplayText+''''+')'));
Q_tmp.ExecQuery;
maxdate := Q_tmp.FieldByName('MAX').AsString;
Q_tmp.Close;
if Hotel.FieldByName('CS').Value > 1 then
with Hotel do
begin
Edit;
FieldByName('NC').AsString := DateToStr(StrToDate(maxdate)+((FieldByName('CS').Value * 30)));
post;
end;
end;
// die gewünschte Berechnung aktivieren
procedure TDM_hotel.nc_calc_Start(Sender: TObject);
begin
nc_calc;
end;
Dieses Verfahren -
Trennung von Ereignis und Ausführung - ist immer dann zu empfehlen, wenn die Ausführung von mehr als einer Stelle aus benötigt wird.
Zusatzhinweis: SELECT-Abfragen mit Parametern sollten nicht als ein langer String aufgebaut werden, sondern besser über
TQuery.Params; das erleichtert Fehlersuche und Überarbeitung.
Gruß Jürgen