Abfragen einer bereits vorhandenen ADODB-recordset im Arbeitsspeicher, der Verwendung von filtern und Aggregat-Funktionen (advanced ADODB-Bibliothek?)

Habe ich einige bestehende code, der die Abfrage auf eine SQL-Datenbank immer wieder mit verschiedenen Parametern und ich dachte, es wäre wahrscheinlich besser, wenn ich es geändert wählen Sie einen großen Teil der Daten in ein ADODB.Recordset an den start, und dann innerhalb der Schleife der Abfrage dieses recordset eher als die Datenbank selbst.

Eine weitere Einschränkung ist, dass ich Aggregatfunktionen (SUM,MIN,MAX,AVG), wenn ich die Ausführung dieser sub-queries.

Codierung wäre das nicht auch furchtbar schwierig, aber etwas, das offensichtlich scheint, wie es gewesen wäre, getan Tausende Male vorher, so dass ich mich Frage, ob es eventuell ein open-source-Bibliothek von einer Art gibt, enthält diese Art von Funktionalität? Ich schwöre, ich traf ein paar Jahre zurück, aber bin nicht in der Lage zu verfolgen es auf google.

EDIT:

Ein guter Vorschlag (von TimW) in den Kommentaren war, alles zu tun, die aggregation auf dem Datenbank-server und zurück an den client übergeben, und dann nur die Filterung auf dem client.
(Obwohl, in diesem Fall funktioniert es nicht, da 2 von den Spalten mit der Filterung angewendet werden DateTime-Spalten)

UPDATE

Hier ist die Bibliothek, die ich bisher gestoßen:

http://code.google.com/p/ado-dataset-tools/

Nicht sicher, ob der Autor aufgegeben hat oder nicht (sein plan schien zu sein, Sie zu aktualisieren und zu konvertieren c#), aber die VBA-Versionen der einzelnen Bibliotheken scheinen hier erhältlich:

http://code.google.com/p/ado-dataset-tools/source/browse/trunk/ado-recordset-unit-tests.xls?spec=svn8&r=8#ado-recordset-unit-tests.xls

Spezifische ADO-Bibliothek, die ich war daran interessiert, ist hier:

http://code.google.com/p/ado-dataset-tools/source/browse/trunk/ado-recordset-unit-tests.xls/SharedRecordSet.bas

Sehen, speziell die GroupRecordSet() Funktion.

Nur SUM,MIN,MAX-Aggregat-Funktionen scheinen unterstützt zu werden.

Eine andere mögliche alternative (wenn Sie innerhalb von Excel)

Schreiben von SQL-Abfragen in Virtuellen Tabellen im Excel-VBA -

http://www.vbaexpress.com/forum/showthread.php?t=260

Nicht sicher, wie Sie dies durchführen würde, sondern ziehen die raw-Daten (mit teilweise pre-aggregation) in einem lokalen Arbeitsblatt in Excel, und verwenden Sie dann das Arbeitsblatt als Datenquelle in nachfolgenden Abfragen könnte eine sinnvolle option sein.

  • Jemand könnte haben einen benutzerdefinierten Anbieter verwenden kann, ein Recordset als Datenquelle und akzeptieren und verarbeiten von SQL-gegen ihn, aber ich glaube nicht, dass ich jemals einen gesehen.
  • Könntest du vielleicht ändern die Weise, die Sie ausführen Ihre sub-queries zu tun, als eine große Abfrage? Eg: select Min(t.blah), Max(t.blah) ... where t.key in(1,2,3,4) eher als ein buch von separaten select Min(t.blah), Max(t.blah) ... where t.key=1-Typ Abfragen.
  • das ist ein ausgezeichneter Vorschlag, danke....so kann ich noch tun, client-side-Filter, aber lassen Sie die sql server-pre-Aggregat alles.
InformationsquelleAutor tbone | 2012-04-05
Schreibe einen Kommentar