![]() |
Procedure aufrufen
Halo zusammen
ist wirklich eine Anfägerfage Sorry ( hab auch schon die Suche bemüht ) ich habe ein Form und ein Datamodul Im Datamodul habe ich diese Procedure:
Delphi-Quellcode:
aus dem Form kann ich so zugreifen:
procedure TDM_hotel.nc_calc(Sender: TObject);
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;
Delphi-Quellcode:
Frage: Wie kann ich im Datamodul selber auf diese Procedure zugreifen?
procedure Tfrm_hotel.contactseries_update(Sender: TObject);
begin DM_hotel.nc_calc(Sender); end;
Delphi-Quellcode:
das hier geht nicht ... :?
procedure TDM_hotel.Hotel_DAfterPost(DataSet: TDataSet);
begin nc_calc; end; Es kommt immer die Felermeldung : Not enough actual parameters bin dankbar für Eure Hilfe Shalom Manfred |
Re: Procedure aufrufen
Hallo Manfred,
nc_calc(nil) wäre eine Option. Grüße vom marabu |
Re: Procedure aufrufen
Und falls die Prozedur ein Objekt benötigt, dann könntest du es auch direkt angeben:
(z.B. die globale Variable des Formulars)
Delphi-Quellcode:
DM_hotel.nc_calc(frm_hotel);
|
Re: Procedure aufrufen
Besten dank Euch beiden
nc_calc(nil) das wars. noch ein schönes Wochenende. Shalom Manfred |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
|
Re: Procedure aufrufen
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:
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.
// 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; Zusatzhinweis: SELECT-Abfragen mit Parametern sollten nicht als ein langer String aufgebaut werden, sondern besser über ![]() Gruß Jürgen |
Re: Procedure aufrufen
Hallo Jürgen
danke für den Tipp. :thumb: habe das uch schon so wie Du es erläutert hast umgesetzt. Dasmit dem TQuery.Params muss ich noch nachschauen aber danke. Shalom Manfred Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz