AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Erfahrungen mit Abfragen, die mehrere Ergebnismengen liefern
Thema durchsuchen
Ansicht
Themen-Optionen

Erfahrungen mit Abfragen, die mehrere Ergebnismengen liefern

Ein Thema von Leuselator · begonnen am 9. Jan 2004 · letzter Beitrag vom 13. Jan 2004
Antwort Antwort
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#1

Erfahrungen mit Abfragen, die mehrere Ergebnismengen liefern

  Alt 9. Jan 2004, 19:39
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:
DieAbfrage : TQuery/TAdoQuery/TAdoDataSet; // je nachdem - unwichtig...
...
DieAbfrage.SQL.Add('select * from TabelleA');
DieAbfrage.SQL.Add('select * from TabelleB');
...
DieAbfrage.Open;
end;
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie

  Alt 9. Jan 2004, 19:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#3

Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie

  Alt 9. Jan 2004, 19:59
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ß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie

  Alt 9. Jan 2004, 20:12
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie

  Alt 9. Jan 2004, 20:59
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Erfahrungen mit Abfragen, die mehrere Ergebnismengen lie

  Alt 13. Jan 2004, 23:22
@Thema: ich komme auf die Idee, weil im PSDK zu finden ist:
Zitat:
Receiving Multiple Recordsets
The Microsoft OLE DB Provider for SQL Server supports returning multiple Recordset objects for a single command containing multiple SQL statements, one Recordset per SQL statement. The order in which the Recordsets are returned follows the order in which the SQL statements are placed in the command text.

The first code example in this section demonstrates this feature by querying two tables, Orders and Customers, in the Northwind database to examine who is the customer whose ID is "ALFKI" and where are the orders shipped.

The Microsoft OLE DB Provider for SQL Server also returns multiple resultsets to ADO when the command contains a COMPUTE clause. For example, a command containing the following SQL statement—

SELECT ProductID, ProductName, UnitPrice
FROM PRODUCTS
COMPUTE AVG(UnitPrice)
—will return the results in two Recordset objects: one for the rowset of (ProductID, ProductName, UnitPrice), and the other for the average price of all products in the table. You can use the Recordset.NextRecordset method to enumerate the two objects as shown in the second code example in this section.
und siehe da TADODataSet kennt auch die Methode NextRecordSet! Das es trotzdem nicht auf Anhieb funktioniert hat, scheint daran zu liegen, dass das TAdoDataSet (auch BetterAdoDataSet) das 2. Select ignoriert?
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:
var i : Integer;
try
  MeinAdoDataSet.RecordSet := MeinAdoDataSet.NextRecordSet(i);
except
  // Ende erreicht - keine weiteren RecordSets
end;
wunderbar die einzelnen Recordsets durchparsen. Allerdings nur 1x, von Anfang bis Ende ("PreviousRecordSet" gibts nicht)

@MrSpock: Werde trotzdem mal in der Richtung graben...

@All: Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:05 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