7.7k Aufrufe
Gefragt in Datenbanken von jurasch Einsteiger_in (15 Punkte)
Hallo liebe Experten, weiß jemand von euch, wie man unter MS ACCESS mittels einer INSERT INTO Abfrage mehrere neue Datensätze an eine bestehende Tabelle anfügen kann. Die Daten stammen dabei nicht aus der Datenbank.
Vielen Dank im Voraus.

7 Antworten

0 Punkte
Beantwortet von
Bin zwwar kein Experte, aber importier die Daten in eine temporäre Importtabelle. Danach mittels
BEGIN
INSERT INTO...
INSERT INTO...
COMMIT;
die Daten anfügen, musst aber ggfs. auf die Schlüssel und die Richtige Reihenfolge achten.
Vielleicht hilfts, villeicht auch nicht :P
Gruß
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

interessant wäre auch, woher die Daten kommen. Ist es eine Textdatei (csv, xml, sql), kommen die Daten aus dem WWW oder sind es manuelle Eingaben. Lass es uns wissen.
Und - wie zotti schon anmerkte - gibt es zwischen den Daten Abhängigkeiten?

Gruß
Ralf
0 Punkte
Beantwortet von jurasch Einsteiger_in (15 Punkte)
Hallo, danke für die ersten Antworten. Zu meiner Abfrage kann ich folgendes sagen:
Die brauche ich, um Daten aus einem Excel-Formular mittels einer VBA-Prozedur in eine Access Datenbank zu übertragen. Dabei müssen sie an eine bestimmte Tabelle angefügt werden. Theoretisch könnte ich diese Daten in einer For / For Each Schleife Datensatz für Datensatz in die Tabelle übertragen, was ich vorher auch gemacht habe, da aber jeder Zugriff auf die Datenbank viel Zeit kostet, hab ich mir überlegt, dass man alle Daten auf einen Schlag anfügen könnte. In MySQL wäre so eine mehrfache INSERT-Abfrage möglich:
"INSERT INTO tabelle (feld1, feld2, feld3) VALUES (wert[1,1], wert[1,2], wert[1,3]) , (wert[2,1], wert[2,2], wert[2,3]), (wert[3,1], wert[3,2], wert[3,3]), usw. ... " In Access geht es so leider nicht, deswegen wollte ich mich hier erkundigen, ob jemand von euch zu so einem Problem eine passende Lösung hat.
Vielen Dank für eure Hilfe.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Jurasch,

hast du schon mal probiert, die Excel-Tabelle als externe Tabelle einzubinden (Menü Datei-->Tabelle verknüpfen) und den INSERT über eine einfache Anfügeabfrage durchzuführen, ganz ohne VBA?

Gruß
Ralf
0 Punkte
Beantwortet von jurasch Einsteiger_in (15 Punkte)
Hallo Ralf,

ne, mit Excel direkt hab ich noch nicht versucht diese Abfrage
durchzuführen. Der Grund dafür ist, dass ich ein sehr komplexes
Erfassungsformular hab, wo ganz viele Sachen eingegeben werden
können. Die ganzen Daten liegen zentral in einer Accessdatenbank
und können auch von mehreren Benutzern gleichzeitig verwendet
werden. Nachdem ein Benutzer diese Daten über solche Formulare
eingegeben/aktualisiert hat, müssen die Daten in der Datenbank
angelegt werden. Früher hab ich das mit einer Update-Abfrage
gelöst. Dann habe ich aber gemerkt, dass wenn der Benutzer sehr
viele Daten eingegeben hat und zwischenzeitlich nichts gespeichert
hat, dann muss das Programm zu oft auf die Datenbank zugreifen,
um jeden Datensatz zu aktualisieren (alle Datensätze
unterscheiden sich und können nicht gleichzeitig aktualisiert
werden) und das dauert zu lange. Deswegen hab ich mir gedacht
ich lass das Programm die ganzen neuen und noch nicht
gespeicherten Daten merken und wenn der Benutzer auf
Speichern-Button klickt, dann sollen die ganzen Daten am Stück an
eine bestimmte Tabelle in der Datenbank angefügt werden.
Das ganze System soll später nach PHP/MySQL übertragen
werden, wo unter anderem auch dieses gleichzeitige Anfügen
problemlos funktionieren würde. Bis dahin muss aber das
bestehende Tool stabilisiert und gepflegt werden. Deswegen wollte
ich das ganze bereits in diese Excel/Access-Version einbauen.
Ich hoffe ich hab mein Problem mehr oder weniger verständlich
dargestellt und würde mich freuen, wenn ihr eine Antwort zu meiner
oben gestellten Frage habt, d.h. "..ob ein gleichzeitiges Anfügen von
mehreren Datensätzen in Access möglich ist und wenn nicht wie
man dieses Problem anders lösen könnte, z.B. mit dem UNION-
Operator..."
Danke für eure Hilfe,

Gruß,
Jürgen
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Jürgen,

auch wenn dein Formular in Excel komplex ist, stehen die erfassten Daten doch in einem Sheet
in einer Zeile, oder? Mit diesem Formular erfasst du auch mehrere Datensätze, die dann
in mehreren Zeilen untereinander stehen. Wenn das richtig ist, poste mal ein paar
Beispielzeilen. Die Tabellenstruktur der Accesstabelle wäre auch nicht schlecht.

Gruß Ralf
0 Punkte
Beantwortet von jurasch Einsteiger_in (15 Punkte)
Hallo Ralf,

mit deiner Vermutung bist du leider falsch. Die Daten waren früher
mal in mehreren Registerblättern gespeichert, aber dann, nachdem
der Rahmen von Excel mehrmals gesprengt wurde, hab ich sie alle
in eine Access-Datenbank übertragen, die Formulare sind aber
weiterhin in Excel geblieben, da es ganz viele Formulare sind,
sodass erneutes Erstellen von diesen in Access viel Zeit kosten
würde. Über diese Formulare können nun alle Benutzer auf die
Datenbank, die auf einem zentralen Server steht, zugreifen, sich die
erfassten Daten ansehen, diese korrigieren, bzw. neue Daten
anlegen / erfassen. Die ganzen Aktionen erfolgen über den VBA-
Code, man wird mit der zentralen Datenbank verbunden, man kann
sich die Daten holen, die Daten über Formulare ändern und wieder
in DB speichern. Beim Speichern kann es sein, dass gleichzeitig
ganz viele Datensätze in der Datenbank aktualisiert werden
müssen, das ganze geschieht in einer For Each Schleife, in jedem
Durchgang greift das Programm auf die Datenbank zu und
aktualisiert da den betroffenen Datensatz. Damit das Programm
nicht so oft auf die Datenbank zugreifen muss, hab ich mir gedacht,
dass ich erstmal alle alten Datensätze, die bestimmte Kriterien
erfüllen aus der Tabelle lösche und im nächsten Schritt alle neuen
Datensätze mit einem Schlag mittels einer INSERT-Abfrage an die
Tabelle anfüge. Das scheint in Access aber nicht zu funktionieren,
deswegen verwende ich momentan weiterhin die UPDATE-Abfrage,
die in einer Schleife mehrmals ausgeführt wird.
Ich würde mich sehr freuen, wenn mir jemand eine exakte Antwort
auf meine Frage geben würde. Ich glaube, dass so eine mehrfache
INSERT-Abfrage in ACCESS nicht möglich ist, aber ich möchte das
von jemandem, der das genau weiß, hören. Falls das doch
irgendwie geht, würde das mich umso mehr freuen.

Gruß,
Jürgen
...