![]() |
Re: Problem mit stored Procedure und group by
Hi Hansa,
Zitat:
Sollte es aber um die GESMENGE gehen, so kann diese NULL nicht enthalten, wenn man in der SP vor SUSPEND
SQL-Code:
einfügt. Das kann man auch immer einfach auf ..WHERE GESMENGE>0 prüfen.
IF (GESMENGE is NULL) THEN GESMENGE = 0;
Zitat:
Delphi-Quellcode:
alex
procedure TForm1.Button1Click(Sender: TObject);
{ FIBDataSet1.SQLs.SelectSQL: select A.NR, A.BEZ, T.GESMENGE from art A left join TESTSP_GES(:VonMonat,:BisMonat, A.ID) T on (1=1) @@Filter@ } begin FIBDataSet1.Close; FIBDataSet1.ParamByName('VonMonat').AsInteger := StrToIntDef(EVon.Text, 0); FIBDataSet1.ParamByName('BisMonat').AsInteger := StrToIntDef(EBis.Text, 999999); if CBOhne0Mengen.Checked then FIBDataSet1.ParamByName('Filter').AsString := 'where GESMENGE>0' else FIBDataSet1.ParamByName('Filter').AsString := ''; FIBDataSet1.open; end; |
Re: Problem mit stored Procedure und group by
Vor dem Suspend das NULL auswerten ? Oh je, da hätte ich auch selber draufkommen können. 8) Nun gut, das geht natürlich jetzt auch. Aber wo zum Teufel kommen die ganzen Klammeraffen da her ? :shock: Bzw., was machen die ? Die Checkboxen kommen natürlich auch noch ins Spiel und nicht nur eine ! Aber es wird sowieso immer komplizierter. Konkret geht es um 5 SUM-Felder, eines ist das SUM (UMSATZ) und da wirds jetzt richtig kompliziert. Wie baue ich jetzt da noch eventuell eine Mwst.-SP ein, die den Brutto Umsatz errechnet ? Nur so als Vorschau. 8)
|
Re: Problem mit stored Procedure und group by
Zitat:
Damit kann man in einem FIBDataSet z.B. bequem WHERE, ORDER oder sonstige Klauseln setzen, ändern und auch wieder löschen. Zitat:
alex |
Re: Problem mit stored Procedure und group by
Ja, ich habe tatsächlich einige Wechselstaben verbuchtelt, oder wie das heißt. :mrgreen: Zu den Klammeraffen : da ist eine sagenhafte fast nichtssagende Seite über Macro zu finden. Wieso sind da 2 @ und hinten noch einer ? Laut dieser Seite müßte es doch reichen nur @Filter zu schreiben ? Und dann das % usw. wozu ist das gut ? Das ganze paßt irgendwie nicht so richtig in die Firebird-Syntax. Werde wohl mal den SQL-Monitor anschmeißen.
|
Re: Problem mit stored Procedure und group by
Die Macros sind eine reine FIBPlus-Funktionalität, hat also nichts mit Firebird zu tun.
Ich gebe zu es steht nicht viel in der FibPlus53.pdf und außerdem haben ich es mir auch erklären lassen. Das Macro fängt mit (@@) an und endet mit (@). Hinter dem (%) kann man den Default-Wert eintragen. Dieser kommt zu Geltung wenn das Marco nicht über ParamByName gesetzt wird. (#) setzt man wenn der Ausdruck eigentlich in ('..') stehen muß zB. bei Strings oder Datumswerten. where DatumVon>=@@Datum%#01.01.1980@ FibPlus macht daraus: a) wenn Marco nicht gesetzt wird: where DatumVon>='01.01.1980' b) wenn Marco gesetzt wird mit FibDataSet.ParamByName('DatumVon').AsDateTime = StrToDate('25.05.2005') where DatumVon>='25.05.2005' Ich setze Macros aber bisher nur in der einfachen Form ein. alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 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