und ergänzend zu mkinzler, wenn du da alle variablen als return parameter drin hast, kannst du bei naherzu jeder
Query Komponente, die du auch für einen select benutzen kannst, die property
sql mit dem execute block .... text füllen und mit open dann durch die datenmenge laufen.
und wenn es mal eine summe, aber auch mal keine summe geben könnte , dann geht noch folgende änderung
Code:
select sum(Menge) from VorgangPos where substring(ArtikelNr from 1 for 5) = Gruppe into :Gruppenmenge;
suspend;
damit würdest du auch einen record zur äußeren Hauptdatenmenge bekommen, wenn es gar keine details in VorgangPos gibt
(ist in diesem fall wegen dem Sum() nicht so wichtig, weil der immer genau einen record liefert, wen das die einzige spalte ist, aber wichtig ist das der "for select ... into" auf einer datenmenge die immer nur einen record liefert auch wenig sinnvoll.
und als logik: immer wenn dein quelltext in einem execute block oder auch in eine sp beim schlüsselwort suspend landet, wird das was in den return parametern steht als record erzeugt und kann damit in delphi bei der
query mit while not eof und next ausgewertet werden
eine execute block muss auch gar noch zwingend auf einer datenmenge entstehen auch so was geht nämlich
Code:
execute block
returns (anz integer)
as
begin
anz=1;
suspend;
anz=2;
suspend;
end
auf dem weg kann man sehr komplexe ergebnisse zeilenweise und spaltenweise zusammenstellen, bei denen man mit einem
sql statement abstruse verschachtelungen oder unions brauchen würde