Durchläuft Access-Tabelle und für jede Spalte mit Daten
Ich denke, das sollte einfach sein, aber ich kann nicht den richtigen Weg finden, es zu tun. Ich habe eine Tabelle mit einer ID-Spalte und 10 Zeilen folgenden beschriftet Frage #1 Frage #2, und so weiter.
Gibt es keine doppelten ID-Nummern, aber jede ID-Nummer haben könnte, mehr als eine Reihe von Fragen stellen.
Möchte ich die ID-Zeile und für jede andere Frage, wo anwendbar, erstellen Sie eine neue Zeile mit der gleichen ID. Also, wenn eine ID-Nummer hat, eine Frage, finden Sie unter der Frage #1 und Frage #2, Id wie um ein Duplikat zu erstellen, die für diese ID-Nummer haben und haben beide Fragen aufgelistet, die unter einer Spalte nennen wir es "Fragen Insgesamt", nach dieser ID-Nummer. Dies kann durch erstellen einer neuen Tabelle.
Beispiel:
Aus:
+-------+---------------------------+---------------------------+
| ID | Question #1 | Question #2 |
+-------+---------------------------+---------------------------+
| 11111 | Was it notated correctly? | Was it completed on time? |
+-------+---------------------------+---------------------------+
Zu:
+-------+-------------------------------------+
| ID | Total Questions |
+-------+-------------------------------------+
| 11111 | Was it notated correctly? |
| 11111 | Was it completed on time? |
+-------+-------------------------------------+
- Das ist verwirrend. Sie sagen, dass Access-Tabelle in den Titel, aber dann nur tagged 'excel', 'loops' und 'excel-vba'. So sind diese Tabellen in Access oder nicht? Wenn ja, könnten Sie führen eine Abfrage (keine Schleifen erforderlich) auf der ursprünglichen Tabelle ausgeben, wie Sie wollen.
- Sorry, aber ich bin nicht zu sehen, einen Verweis auf excel überall. Ich beziehe mich auf eine Access-Tabelle wenn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine einfache Lösung mit
DAO
Die Erklärung:
Was ich Tue, ist:
"Question"
erstellen Sie einen neuen Datensatz in der Ausgabe-Tabelle, mit derId
von der input-Tabelle und der Wert der ausgewählten Spalte.Dies ist nur ein Entwurf. Sie müssen den code optimieren, um Ihren Bedarf zu passen.
Hoffe, das hilft.
Alternativen
Nach zu denken, ein wenig, vielleicht habe ich eine alternative zu dem problem, das Sie erwähnen in Ihren Kommentaren.
Ich denke, Sie können ändern Sie die Schleife wie diese:
Statt Durchlaufen auf der
Fields
Sammlung mit einem index, wird diese Iteration mit jedemField
Mitglied in ihm. Das sollte verhindern, dass die "Item not found in collection" - Ausgabe.Warnung: Nicht getestet
.next
Zeile im code (springen zum nächsten Datensatz inrecIn
). Als für das "Item not found in collection", sollten Sie den code Debuggen und zu sehen, wo es passiert ist (führen Sie Schritt für Schritt durch und prüfen, wo die Ausführung löst einen Fehler aus). Wenn in der Tabelle hinterrecIn
hat eine Feste Anzahl von Spalten, ändern Sie die Schleife, um zu prüfen, nur die Spalten, die Sie brauchen..moveNext
. Als für das "Item not found in collection", kann es ein Problem mit dem index des Feldes (der Wert voni
). Ich weiß nicht Recht erinnern, wenn der index beginnt bei null oder eins. Verwendendebug.print recIn.fields(i).Name
zu zeigen, in der die sofortige Fenster, welches Feld gelesen wird. Übrigens..., Sie verstehen, was dieses Ding tut, richtig? (check Die Zehn Gebote von Access 😉 )Versuchen ein paar Anfragen wie diese: