![]() |
Datenbank: ADS • Version: 5.04 • Zugriff über: ADS Komponenten (Query)
ADS SUM
Hallo,
ich habe da ein kleines Problem mit volgender Abfrage die so aussieht
Delphi-Quellcode:
Die Query sagt mir das sie das Feld "Preis" nicht finden kann... aber es steht in der Query! Oder hat ADS ein Problem mit SUM()?
with Q_Preis do
begin Active := False; SQL.Clear; SQL.Add(' SELECT SUM(PREIS), '+ ' DATUM '+ ' FROM ESSEN '+ ' WHERE DATUM BETWEEN :Datum1 AND :Datum2 '+ ' GROUP BY DATUM '); Prepared := True; Params.ParamByName('Datum1').Value := DateOf(MonthCalendar2.Date); Params.ParamByName('Datum2').Value := DateOf(MonthCalendar3.Date); Active := True; end; Danke für die Hilfe Greets |
Re: ADS SUM
Gibt es das Feld Presi in der Datenbanktabelle?
|
Re: ADS SUM
Ja das gibt es...
SQL-Code:
das funktioniert auch alles... nur eben nicht wenn ich das ganze mit SUM(PREIS) versuche... ADS will dann auch GROUP BY haben aber das ist weniger das Problem... ich brauche eben die Summe in der Zeitspanne...
SELECT * FROM ESSEN
|
Re: ADS SUM
Verpass deiner Abfrage für die Summe von Preis mal einen Alias, auf den du dann zugreifst, etwa so:
Delphi-Quellcode:
In obigem Beispiel griefst du dann nicht auf das Feld PREIS sondern auf den Alias SUMME_PREIS zu. Das ist auch kein ADS Problem, sondern gilt für alle Datenbanken: sobald du auf Aggregate zugreifen möchtest, mußt du einen Alias verwenden.
with Q_Preis do
begin Active := False; SQL.Clear; SQL.Add(' SELECT SUM(PREIS) SUMME_PREIS, '+ ' DATUM '+ ' FROM ESSEN '+ ' WHERE DATUM BETWEEN :Datum1 AND :Datum2 '+ ' GROUP BY DATUM '); Prepared := True; Params.ParamByName('Datum1').Value := DateOf(MonthCalendar2.Date); Params.ParamByName('Datum2').Value := DateOf(MonthCalendar3.Date); Active := True; end; Grüße Mikhal |
Re: ADS SUM
Hast du vielleicht persistente Zugriffsfelder für Q_PREIS angelegt?
@mikahl: Mü?te es nicht SELECT SUM(PREIS) as SUMME_PREIS heißen? Kenne mich in ADS nicht aus, aber in Standard-SQL braucht man das as. |
Re: ADS SUM
@mkinzler: Da hast du wohl Recht. Ich programmiere hauptsächlich mit Oracle und MS SQL Server, und da brauchst du es nicht. Ich kenne ADS nicht so genau und deshalb weiß ich nicht ob ADS ohne "AS" auskommt.
Grüße Mikhal |
Re: ADS SUM
Zitat:
BTW: Das SQL einmal im Architect ausgeführt und Du siehst das Ergebnis (wobei - hast Du schon einen Architect bzw überhaupt SQL? - ADS hat seit Version 5.5 eine SQL Erweiterung, Du hast ja noch 5.04....Fragen über Fragen). |
Re: ADS SUM
@joachimd
Da hast du vollkommen recht und ich habe wieder alles vergessen was ich mal gelernt hatte.... zu Vollständigkeit... so funzt es...
Delphi-Quellcode:
Danke für die Hilfe/Erklärung
with Q_Preis do
begin Active := False; SQL.Clear; SQL.Add(' SELECT SUM(PREIS) AS SUMME_PREIS, '+ ' DATUM '+ ' FROM ESSEN '+ ' WHERE DATUM BETWEEN :Datum1 AND :Datum2 '+ ' GROUP BY DATUM '); Prepared := True; Params.ParamByName('Datum1').Value := DateOf(MonthCalendar2.Date); Params.ParamByName('Datum2').Value := DateOf(MonthCalendar3.Date); Active := True; end; DBText1.DataField := 'SUMME_PREIS'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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 by Thomas Breitkreuz