2017-06-04 2 views
0

In der Vergangenheit habe ich Berichte immer generiert, indem ich eine Datenbank abfragen, auf ein Arbeitsblatt ablegen, sortieren, in ein Array einlesen und dann die Dokumente durchforsten. Ich versuche jetzt, die Berichte direkt aus dem Recordset zu generieren.Bedingte Schleife mit ADO-Recordset in VBA

Das Problem, das ich habe, ist, wenn Arrays verwenden Ich hatte eine absolute Datensatznummer, so dass ich überprüfen konnte, ob ein Feld im vorherigen Datensatz der gleiche wie im aktuellen Datensatz war.

Was ist der beste Weg, dies mit einem Recordset zu tun? Speichern Sie den Feldwert in einer Variablen? Verwenden Sie verschachtelte While-Schleifen? Holen Sie sich eine Gesamtzahl von Datensätzen und verwenden Sie absolute Positionen, um sich hin und her zu bewegen (was nicht als eine gute Idee erscheint)?

UPDATE Das Recordset enthält mehrere Datensätze von 20 verschiedenen Unternehmen. Ich sortiere die Abfrage nach dem Firmennamen und starte dann die Schleife durch. Ich muss dann jeden Datensatz überprüfen, um zu sehen, ob es von der gleichen Firma wie die vorherige stammt, und wenn nicht, ein neues Arbeitsblatt für diese Firma erstellen.

+0

Einige von denen scheinen wie vernünftige Ansätze - warum nicht einen Versuch? –

+0

Ich fühlte, dass dies wahrscheinlich eine häufige Aufgabe war und jemand würde es schnell beantworten können. Was noch wichtiger ist, ich war daran interessiert, herauszufinden, was der beste Ansatz war, damit ich nicht mit etwas fertig werde, das funktioniert, aber aus irgendeinem Grund nicht verwendet werden sollte. – pheeper

+3

Es ist schwierig zu wissen, was der beste Ansatz ist, ohne genau zu wissen, wie genau Sie Ihre Berichte erstellen müssen. Wenn Sie nur nachverfolgen müssen, wenn sich der Wert eines oder mehrerer bestimmter Felder ändert, funktioniert die Verwendung einer Variablen zum Verfolgen des vorherigen Werts einwandfrei. –

Antwort

0

Normalerweise mache ich die Sortierung in der Abfrage mit einer "Order By" -Klausel. Durchlaufen Sie dann die sortierten Datensätze mithilfe einer Variablen, um den aktuellen Sortierreihenfolgennamen zu verfolgen, und erkennen Sie die Namensänderung, indem Sie das Feld des aktuellen Datensatznamens mit dem Variablenwert vergleichen.