![]() |
Erfahrungen mit Abfragen, die mehrere Ergebnismengen liefern
Hallo Gemeinde,
hat hier irgendwer Erfahrungen mit der Verarbeitung von SQL-Abfragen, die mehrere Ergebnismengen liefern? Ich meine folgendes (Beispiel ohne wirklichen Sinn):
Delphi-Quellcode:
Gruß
DieAbfrage : TQuery/TAdoQuery/TAdoDataSet; // je nachdem - unwichtig...
... DieAbfrage.SQL.Add('select * from TabelleA'); DieAbfrage.SQL.Add('select * from TabelleB'); ... DieAbfrage.Open; end; |
Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie
Hallo Leuselator,
bist Du Dir sicher, dass das funktioniert. Von sowas habe ich weder gehört noch gelesen. Ich denke es wird (wenn keine Fehlermeldung vom Server kommt) die erste Ergebnismenge verworfen wenn das zweite Statement ausgeführt wird. |
Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie
Hi Jens,
Das geht (jedenfalls mit MSSQL-2000, wer will kanns mit QueryAnalyzer und DB Northwind ausprobieren) und würde an einer Stelle für mich auch richtig Sinn machen. Auf jeden Fall wird es mit den DataSets eine Trickserei sein, Ziel dieses Threads war, herauszufinden ob jemand sich schonmal an der Erfindung dieses Fahrrads versucht hat. Gruß |
Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie
Also mit delphi dürfte das nicht gehen. Die Programme die ich kenne mit denen man zwei abfragen absendet führen beide hintereinander aus, werden also vor dem absenden auseinander gebastelt
|
Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie
Hallo Leuselator,
die einzige Möglichkeit, die SQL hier bietet ist die UNION Anweisung, die aber nur funktioniert, wenn beide Abfragen eine Datenmenge zurückliefern, die eine identische Struktur hat (die Feldnamen dürfen dabei ruhig unterschiedlich sein, dann solltest du aber noch den AS Operator verwenden, um festzulegen, wie das Feld der Vereinigung heißen soll. |
Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie
@Thema: ich komme auf die Idee, weil im PSDK zu finden ist:
Zitat:
Wenn ich jedoch auf dem Server eine Stored Procedure aufrufe, die mehrere RecordSets zurückliefert (und genau um diesen Fall gin es mir eigentlich) dann kann man mit:
Delphi-Quellcode:
wunderbar die einzelnen Recordsets durchparsen. Allerdings nur 1x, von Anfang bis Ende ("PreviousRecordSet" gibts nicht)
var i : Integer;
try MeinAdoDataSet.RecordSet := MeinAdoDataSet.NextRecordSet(i); except // Ende erreicht - keine weiteren RecordSets end; @MrSpock: Werde trotzdem mal in der Richtung graben... @All: Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 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