Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TADOQuery (https://www.delphipraxis.net/175120-tadoquery.html)

Walter Landwehr 31. Mai 2013 13:28

Datenbank: MSSql • Version: 8 • Zugriff über: TADOConnection

TADOQuery
 
Hallo,

ich Habe in eriner TADOQuery folgenden SQL Befehl:

SELECT SUM(B.Soll) as SollBetrag, SUM(B.Haben) as HabenBetrag
FROM Konto K INNER JOIN
Buchung B ON B.DVKontonummer = K.DVKontonummer INNER JOIN
Beleg BL ON BL.DVBelegnummer = B.DVBelegnummer
WHERE (BL.Buchungsperiode Between '01-01-2012' and '31-03-2012')
and (BL.Belegart = 'ER'
or BL.Belegart = 'EG')
and K.Kontonummer = 81356
and B.InfoGegenkonto = '3425'

Der SQL Befehl funktioniert ohne Fehler.

Frage ich nun die Spalten SollBetrag und HabenBetrag folgendemaßen ab:

SuVorjahr.Value := modul.BuchungenQry.FieldByName('HabenBetrag').AsFl oat - modul.BuchungenQry.FieldByName('SollBetrag').AsFlo at;

bekomme ich die Meldung: Das Feld HabenBetrag wurde nicht gefunden.

Was mache ich da falsch?

Gruß Walter

sx2008 31. Mai 2013 14:14

AW: TADOQuery
 
Vielleicht hast du vergessen die Query zu öffnen.
Ich würde empfehlen, den Code für die Berechnung in das Datenmodul zu legen:
Delphi-Quellcode:
function TModul.GetKontoBalance():Currency;
begin
  BuchungenQry.Close;
  BuchungenQry.open;
ShowMessage(BuchungenQry.FiledList.Text); // Alle Feldnamen anzeigen zu Debugzwecken
  Result := BuchungenQry.FieldByName('HabenBetrag').AsCurrency - BuchungenQry.FieldByName('SollBetrag').AsCurrency;
end;
Wenn dieser Code läuft, dann würde ich zusätzlich noch die Parameter wie Kontonummer, Buchungszeitraum dieser Funktion übergeben.

Zusätzlich ist zu beachten, dass alle Berechnungen mit Geldbeträgen mit dem Datentyp Currency ausgeführt werden sollten um Rundungsfehler zu vermeiden.

Walter Landwehr 31. Mai 2013 15:09

AW: TADOQuery
 
Hallo,

vielen Dank für die Antwort. Ich Trottel habe doch tatsächlich die Query mit ExecSQL ausgeführt anstatt sie zu öffnen.

Walter


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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