AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit stored Procedure und group by
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit stored Procedure und group by

Ein Thema von Hansa · begonnen am 29. Aug 2005 · letzter Beitrag vom 31. Aug 2005
Antwort Antwort
Seite 3 von 3     123   
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#21

Re: Problem mit stored Procedure und group by

  Alt 30. Aug 2005, 21:41
Hi Hansa,

Zitat:
HAVING (SUM (UMSATZ) <> NULL) Mit "0" geht das zwar, aber ich habe gesehen, daß da doch ziemlich viele NULL Werte drin sind. Wie grenze ich denn die jetzt noch aus ?
Wie lautet das ganze SQL-Statement? "UMSATZ" ist bisher noch nicht aufgetaucht.
Sollte es aber um die GESMENGE gehen, so kann diese NULL nicht enthalten, wenn man in der SP vor SUSPEND
    IF (GESMENGE is NULL) THEN GESMENGE = 0; einfügt. Das kann man auch immer einfach auf ..WHERE GESMENGE>0 prüfen.

Zitat:
Aber wie greife ich denn jetzt mit Delphi darauf zu ?
wo ist den das Problem?
Delphi-Quellcode:
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;
alex
Alexander
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#22

Re: Problem mit stored Procedure und group by

  Alt 31. Aug 2005, 01:44
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 ? 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)
Gruß
Hansa
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#23

Re: Problem mit stored Procedure und group by

  Alt 31. Aug 2005, 07:31
Zitat von Hansa:
Aber wo zum Teufel kommen die ganzen Klammeraffen da her? Bzw., was machen die ?
Sieh doch mal in der Hilfe zu FIBPlus unter Macros nach.
Damit kann man in einem FIBDataSet z.B. bequem WHERE, ORDER oder sonstige Klauseln setzen, ändern und auch wieder löschen.
Zitat von Hansa:
Wie baue ich jetzt da noch eventuell eine Mwst.-SP ein, die den Brutto Umsatz errechnet ? Nur so als Vorschau. 8)
Etwa die SP von Letztens, mit den MwSt-Kennzeichen? Holen mich jetzt etwa meine unbedachten Äußerungen wieder ein?
alex
Alexander
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#24

Re: Problem mit stored Procedure und group by

  Alt 31. Aug 2005, 21:24
Ja, ich habe tatsächlich einige Wechselstaben verbuchtelt, oder wie das heißt. 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#25

Re: Problem mit stored Procedure und group by

  Alt 31. Aug 2005, 21:54
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
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20:08 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