AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure aufrufen

Ein Thema von manfred_h · begonnen am 26. Jan 2007 · letzter Beitrag vom 27. Jan 2007
Antwort Antwort
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

Procedure aufrufen

  Alt 26. Jan 2007, 16:10
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:
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;
aus dem Form kann ich so zugreifen:
Delphi-Quellcode:
procedure Tfrm_hotel.contactseries_update(Sender: TObject);
begin
  DM_hotel.nc_calc(Sender);
end;
Frage: Wie kann ich im Datamodul selber auf diese Procedure zugreifen?
Delphi-Quellcode:
procedure TDM_hotel.Hotel_DAfterPost(DataSet: TDataSet);
begin
  nc_calc;
end;
das hier geht nicht ...
Es kommt immer die Felermeldung : Not enough actual parameters

bin dankbar für Eure Hilfe
Shalom
Manfred
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Procedure aufrufen

  Alt 26. Jan 2007, 16:14
Hallo Manfred,

nc_calc(nil) wäre eine Option.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.164 Beiträge
 
Delphi 12 Athens
 
#3

Re: Procedure aufrufen

  Alt 26. Jan 2007, 16:17
Und falls die Prozedur ein Objekt benötigt, dann könntest du es auch direkt angeben:
(z.B. die globale Variable des Formulars)
DM_hotel.nc_calc(frm_hotel);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Procedure aufrufen

  Alt 26. Jan 2007, 16:23
Besten dank Euch beiden

nc_calc(nil)
das wars.

noch ein schönes Wochenende.
Shalom
Manfred
  Mit Zitat antworten Zitat
26. Jan 2007, 17:56
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
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
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Procedure aufrufen

  Alt 27. Jan 2007, 11:06
Hallo Jürgen
danke für den Tipp.
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 von Jürgen Thomas:
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:

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz