seppel: VBScript: Recordset zeilenweise kopieren

Beitrag lesen

Nabend,

erstmal danke, dass du dir die Zeit nochmals genommen hast dich mit meinem "Problem" zu befassen!

Grundsätzlich: Deinen angeführten Performancegrund gegen ein Union halte ich für unnötig konstruiert. Will heissen, du machst einen Denkfehler.

Korrigier mich bitte wenn ich mit folgender Annahme falsch liege: Ich dachte nur, dass mein Code beim Zusammenführen mehrerer Ergebnisse schneller ist, als die Datenbank mit einem SQL-Statement zu quälen, welches bis zu 1000 Unions umfassen würde...geschweigedenn alle Suchkriterien (in meinem Fall Kunden-Nummern) in eine "in(1,2,3,...,n)-Bedingung" zu packen.

Bevor du jetzt (zu Recht) anmerkst, dass ich mir doch dann lieber Gedanken über eine Gruppen-Nummer o.ä. machen sollte...das hab ich mir dann nämlich auch überlegt und werde es wahrscheinlich so lösen.

Daten, die du sowieso zusammen verarbeiten willst in mehreren Teilen (Aufrufen) zu holen (was bedeutet zusätzliches Marshaling, Interprozess-Kommunikation usw) und dann im Arbeitsspeicher zusammenzufügen wirkt sich noch negativer auf die Performance aus, das 2. Original Recordset bleibt ja erstmal erhalten und das 1. wird um das 2. noch vergrössert.

Najo, das 2. wird ja innerhalb der Schleife jedes Mal geschlossen und mit einer anderen Query wieder zum fetchen der neuen Sätze benutzt.

Aus deinen Beiträgen entnehme ich: Ein Union ist technisch gesehen möglich, die Daten haben auch dieselbe Struktur und sie stammen wohl aus der selben Quelle (Datenbank).

Jo ;)

  1. Thema: Wohin und warum willst du die zusammengeführten Daten übergeben?

die behalte ich im Arbeitsspeicher, damit ich nicht jedes mal neu abfragen muss...sonst springen mir die DB-Leute aufn Kopf. Ich kann mir schon denken das es da bestimmt bessere/sauberere Möglichkeiten gibt (Trigger, o.ä.) aber 1. läuft es so gut und 2. kann ich das nicht ;)

Aber effektiver (performanter) als
a) eine Schleife und .AddNew oder
b) eine Union Abfrage
wirst du nicht sein.

Kannst du mir sagen (ernst gemeinte Frage) was es für die Datenbank bedeutet, einen Union über x Abfragen zu machen...führt er das intern einzeln aus und fügt es nur für die Ausgabe zusammen oder ist es, wie ich gedacht hatte, ein Mehraufwand im Gegensatz zu einzelnen Abfragen?

Mit anderen Worten, überdenke bitte dein Vorhaben nochmal von Anfang an. Es gibt ganz sicher einen besseren Weg.

Auch damit könntest du Recht haben, ich denke mit der Einführung der Gruppen-Nr und einem entsprechenden Index werde ich die Rückgabe der Daten auch in einer Query performant machen können.

Fassen wir zusammen, für jene die ggf. doch an dem Thema: Recordset zeilenweise kopieren interessiert waren und deshalb den Thread gelesen haben: es scheint also keinen anderen Weg ausser (wie von Frank beschrieben) den über das XML-Gefuckel zu geben, um einen Recordset einem anderen "anzuhängen".

Trotzdem vielen Dank und schönen Abend noch
Seppel