Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Procedure aufrufen

  Alt 27. Jan 2007, 11:01
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 Delphi-Referenz durchsuchenTQuery.Params; das erleichtert Fehlersuche und Überarbeitung.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat