![]() |
functions aufruf
Hallo,
ich habe folgende function:
Delphi-Quellcode:
den Aufruf mache ich so:
function TModul.GetKontoBalance(Anfang, Ende: String):Currency;
var Jahr,i : Integer; Kontonummer : String; begin BuchungenQry.Close; BuchungenQry.SQL.Clear; Kontonummer := EmptyStr; for i := 0 to dmMain.Memo1.Lines.Count - 1 do begin Kontonummer := Kontonummer + '''' + dmMain.Memo1.Lines[i] + '''' + ','; end; Kontonummer := Copy(Kontonummer, 0, Length(Kontonummer) - 1);[CODE][/CODE] BuchungenQry.SQL.Add('SELECT SUM(B.Soll) as SollBetrag, SUM(B.Haben) as HabenBetrag '); BuchungenQry.SQL.Add('FROM Konto K INNER JOIN '); BuchungenQry.SQL.Add('Buchung B ON B.DVKontonummer = K.DVKontonummer INNER JOIN '); BuchungenQry.SQL.Add('Beleg BL ON BL.DVBelegnummer = B.DVBelegnummer '); BuchungenQry.SQL.Add('WHERE (BL.Buchungsperiode Between :Anfang and :Ende) '); BuchungenQry.SQL.Add(Format('and BL.Belegart in (%s, %s)',[QuotedStr('ER'),QuotedStr('EG')])); BuchungenQry.SQL.Add(Format('and K.Kontonummer in (%s) ',[Kontonummer])); BuchungenQry.SQL.Add(Format('and B.InfoGegenkonto in (%s, %s)',[QuotedStr('3425'),QuotedStr('3410')])); BuchungenQry.Parameters.ParamByName('Anfang').Value := Anfang; BuchungenQry.Parameters.ParamByName('Ende').Value := Ende; BuchungenQry.Open; Result := BuchungenQry.FieldByName('HabenBetrag').AsCurrency - BuchungenQry.FieldByName('SollBetrag').AsCurrency; BuchungenQry.Close; end;
Delphi-Quellcode:
Anfang := '01-01-2012';
Ende := '31-12-2012'; SuVorjahr.Value := TModul.GetKontoBalance(Anfang, Ende); es kommt die Meldung: [DCC Fehler] Einkauf.pas(97): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt Was mache ich hier falsch? Walter |
AW: functions aufruf
Moin...
Delphi-Quellcode:
Du mußt mit einer Instanz von TModul arbeiten. Diese muß erzeugt sein.
SuVorjahr.Value := TModul.GetKontoBalance(Anfang, Ende);
Delphi-Quellcode:
Wenn die Funktion eine
MyModul:= TModul.Create;
. . SuVorjahr.Value := MyModul.GetKontoBalance(Anfang, Ende);
Delphi-Quellcode:
wäre würde das funktionieren.
class function
|
AW: functions aufruf
... oder eben als
Delphi-Quellcode:
deklarieren, ist aber bestimmt nicht so gewollt ;)
class function
|
AW: functions aufruf
Hm vestehe ich nicht ganz.
MyModul:= TModul.Create; Wo wird MyModul deklariert? |
AW: functions aufruf
In der aufrufenden Methode:
Delphi-Quellcode:
var
MyModul: TModul; begin MyModul:= TModul.Create; try ... Anfang := '01-01-2012'; Ende := '31-12-2012'; SuVorjahr.Value := MyModul.GetKontoBalance(Anfang, Ende); finally MyModul.Free; end; end; |
AW: functions aufruf
MyModul:= TModul.Create;
Kommt Meldung : [DCC Fehler] Einkauf.pas(94): E2035 Nicht genügend wirkliche Parameter |
AW: functions aufruf
MyModul:= TModul.Create(Self);
so scheint es zu funktionieren. zunächst mal Danke an alle. Walter |
AW: functions aufruf
TModul wird doch sicher ein Datenmodul sein, oder?
Dann hat Delphi automatisch schon eine globale Variable angelegt:
Delphi-Quellcode:
Wahrscheinlich wird das Datenmodul "Modul" beim Start schon automatisch erzeugt.
type
TModul = Class(TDataModule) .... end; var Modul : TModul; // <=== Das lässt sich in den Projektoptionen einstellen. Bei Datenmodulen hat man in der Regel nur eine Instanz. Daher:
Delphi-Quellcode:
begin
... Anfang := '01-01-2012'; Ende := '31-12-2012'; SuVorjahr.Value := Modul.GetKontoBalance(Anfang, Ende); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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