Access Tabellen
Liebe Access-Profis,
gleich noch eine zweite Frage, deren Beantwortung mir sehr helfen würde:
Wie kann man Datensätze aus einer Access-Tabelle in eine andere Tabelle innerhalb derselben Datenbank übernehmen? Konkret soll es so ablaufen, dass zu alle Datensätzen, die in Tabelle 1 mit einem bestimmten Merkmal versehen sind, automatisch in Tabelle 2 übertragen werden.
Ich bräuchte eine Anleitung, mit der ich als totaler Programmier-Laie nicht überfordert bin. Es wäre toll, wenn mir jemand helfen könnte!
Danke schon jetzt dafür.
Viele Grüße
Bernd
Antwort schreiben
Antwort 1 von Teddy7 vom 08.11.2019, 08:33 Options
Mach einfach eine Abfrage, die die gewünschten Datensätze enthält. Dann änderst Du die Abfrageart in "Anfügeabfrage" - den Rest macht der Assistent.
Gruß
Teddy
Antwort 2 von rookie44 vom 08.11.2019, 13:24 Options
Wow, das hört sich schon mal sehr gut an. Damit komme ich auf jeden Fall weiter.
Kann man der Anfügeabfrage auch weitere Spalten hinzufügen? Das wäre dann noch besser.
Grüße
Bernd
Antwort 3 von rookie44 vom 08.11.2019, 13:39 Options
Hallo Teddy7,
das mit der Anfügeabfrage klappt leider nicht auf Anhieb:
Die Abfrage wird als normale Abfrage problemlos ausgeführt, sobald ich sie als Anfügeabfrage speichere, bekomme ich die Meldung, die Datensätze (alle) könnten wegen Schlüsselverletzungen nicht angefügt werden. In meiner Tabelle gibt es lediglich einen Primärschlüssel und derzeit sind noch keine Beziehungen vorhanden.
Woran kann das liegen?
Danke nochmals für deine Hilfe.
Bernd
Antwort 4 von lleopard vom 08.11.2019, 14:55 Options
Hallo Bernd,
das liegt vielleicht daran, daß Quell- und Zieltabelle nicht identisch (indiziert) sind, sprich du zB einen AutoWert an ein Textfeld anfügen willst...
Überprüfe im Entwurf deiner Tabellen, ob die Formate übereinstimmen und deine anfügeabfrage wird funktionieren!
Gruß leo
Antwort 5 von rookie44 vom 08.11.2019, 16:47 Options
Hallo Leo,
sorry, jetzt bin ich ganz verwirrt:
Ich hab gar keine Zieltabelle. Bisher gibt es bloß die Quelltabelle und die Anfügeabfrage.
Wie definiere ich denn eine Tabelle als Zieltabelle?
Vielleicht liegt es daran, dass beim Ändern der Abfrage in eine Anfügeabfrage bei mir kein Assistent oder Dialog gestartet ist.
Kannst du mir Anfänger das nochmal schrittweise beschreiben?
Danke und Grüße
Bernd
Antwort 6 von rookie44 vom 08.11.2019, 17:07 Options
Okay, ich hab rausgefunden, was ich zuvor falsch gemacht hatte. Trotzdem klappt es auch jetzt noch nicht.
Habe testweise die Quelltabelle kopiert und als Zieltabelle definiert, um sicherzustellen, dass die Feldtypen übereinstimmen. Leider lässt sich meine Anfügeabfrage gar nicht starten. Es gibt auch keine Fehlermeldung. Und die Zieltabelle füllt sich auch nicht.
Ein ratloser Bernd.
Antwort 7 von Marie vom 09.11.2019, 00:55 Options
Zitat:
könnten wegen Schlüsselverletzungen nicht angefügt werden. In meiner Tabelle gibt es lediglich einen Primärschlüssel
Primärschlüssel ist ein Feld mit eindeutigem Wert. Wenn Du versuchst einen Datensatz anzuhängen, der denselben Inhalt in dem Feld hat, der bereits vorhanden ist, dann wird der Datensatz nicht angehängt mit der Meldung der Datensatz könne wegen Schlüsselverletzung nicht angefügt werden.
Wenn alle Datensätze nicht angefügt werden, dann verletzen wohl alle den Schlüssel. Nun musst Du halt mal schauen und hier posten was Du anhängen wolltest und was im Primärschlüsselfeld eingegeben ist.
Gruß marie
PS: Willst Du Tabellenspalten per VBA anhängen? Wenn ja schreib bitte ein beispiel: Name der Tabelle und Name der Spalte, die angehängt werden soll, Format der Spalte, dann schick ich Dir den Code so, dass Du ihn gleich verstehst.
Gruß Marie
Antwort 8 von Marie vom 09.11.2019, 01:03 Options
Zitat:
sorry, jetzt bin ich ganz verwirrt:
Ich hab gar keine Zieltabelle. Bisher gibt es bloß die Quelltabelle und die Anfügeabfrage.
Wie definiere ich denn eine Tabelle als Zieltabelle?
Du hast die Abfrage gemacht und klickst dann im Abfrageentwurf auf den Menüpunkt "Abfrage" und dann auf "Anfügeabfrage". Dann öffnet sich automatisch ein Fenster mit der Frage: Anfügen an Tabellenname und dort ist ein Klappfeld, da wählst Du die Zieltabelle aus.
Dann erscheinen unter der Zeile Sortierung die Felder "anfügen an", hier musst Du jetzt gar nichts tun, wenn die Zieltabelle exakt dieselben Feldnamen hat. Die Zeile wird dann automatisch ausgefüllt. Ist jedoch in der Zieltabelle ein Feld nicht vorhanden, dann musst Du das Feld auswählen, wo das Quelltabellenfeld angehängt werden soll, oder aber dieses feld in der Abfrage löschen, wenn es kein entsprechendes Feld in der Zieltabelle gibt.
Gruß marie
Antwort 9 von Marie vom 09.11.2019, 01:11 Options
Zitat:
Habe testweise die Quelltabelle kopiert und als Zieltabelle definiert, um sicherzustellen, dass die Feldtypen übereinstimmen. Leider lässt sich meine Anfügeabfrage gar nicht starten. Es gibt auch keine Fehlermeldung. Und die Zieltabelle füllt sich auch nicht.
Kopier mal die Quelltabelle mit "nur Struktur", damit die nicht nur leer ist, sondern auch gewährleistet ist, dass da kein gelöschter Autowert vorhanden ist, der nicht mehr belegt werden kann.
Und dann muss die natürlich auch einen anderen namen haben. Dann machst Du folgendes, damit Du sicher bist, dass Du das Anfügen an die richtige Tabelle ausgewählt hattest: Klickst im Abfrageentwurfsmenü "Abfrage Auswahlabfrage" an und dann erneut "Abfrage Anfügeabfrage" und wählst dann korrekt die Zieltabelle als "anfügen an" aus der Auswahlliste aus.
Gruß Marie
Antwort 10 von rookie44 vom 09.11.2019, 08:02 Options
Guten Morgen, Marie,
vielen Dank für deine super ausführlichen Antworten! Und super erklärt!
Die Schritte, die du beschreibst, hab ich alle genau so ausgeführt (nach einigen Anlaufschwierigkeiten...). Trotzdem hab ich jetzt das Problem, dass meine Anfügeabfrage sich gar nicht ausführen lässt. Wie schon beschrieben, gibt es noch nicht mal eine Fehlermeldung, es tut sich einfach gar nichts, wenn ich drauf klicke.
Da ich noch nicht mal genau weiß, was eigentlich genau in welcher Reihenfolge passieren müsste, hänge ich jetzt fest.
Was passiert beim Ausführen der Anfügeabfrage (wenn es dann klappt)?
Wird die Zieltabelle direkt gefüllt? Wird die Anfügeabfrage dabei auch gefüllt? Kann man es einrichten, dass vorhandene Datensätze durch neue überschrieben werden? Da meine Zieltabelle zusätzliche Spalten enthalten soll (die momentane Testversion enthält diese noch nicht): was würde beim Überschreiben vorhandener Datensätze mit den Einträgen in den zusätzlichen Spalten passieren?
Und natürlich immer noch die Frage: Wieso lässt sich meine Anfügeabfrage nicht ausführen?
Viele Fragen, ich weiß, aber ich bin lernfähig und dankbar für jede Hilfe.
Gruß Bernd
Antwort 11 von rookie44 vom 09.11.2019, 08:08 Options
Zitat:
Willst Du Tabellenspalten per VBA anhängen? Wenn ja schreib bitte ein beispiel: Name der Tabelle und Name der Spalte, die angehängt werden soll, Format der Spalte, dann schick ich Dir den Code so, dass Du ihn gleich verstehst.
@Marie:
Vielen Dank für dieses super Angebot. Ich kann bloß im Moment noch nicht genau sagen, ob ich das brauche. Vielleicht komm ich aber noch darauf zurück. ;-)
Grüße!
Bernd
Antwort 12 von Marie vom 09.11.2019, 12:52 OptionsLösung
Zitat:
Und natürlich immer noch die Frage: Wieso lässt sich meine Anfügeabfrage nicht ausführen?
Vermutlich weil Du nicht das gemacht hast, was ich Dir geschrieben habe??
Zitat:
Was passiert beim Ausführen der Anfügeabfrage (wenn es dann klappt)?
Die Daten aus der Quelltabelle, die nicht wegen Schlüsselverletzungen nicht angefügt werden können, werden an die Zieltabelle angefügt.
Zitat:
Wird die Zieltabelle direkt gefüllt?
Ja
Zitat:
Wird die Anfügeabfrage dabei auch gefüllt?
Das verstehe ich nicht, die Abfrage wird nicht angezeigt sondern ausgeführt. Du klickst auf den Button, dass die ausgeführt wird und dann öffnest Du die Zieltabelle und schaust nach ob sie da sind.
Zitat:
Kann man es einrichten, dass vorhandene Datensätze durch neue überschrieben werden?
Nicht mit einer Anfügeabfrage, die fügt, wie der Name sgt, Datensätze an. Di bereits vorhandenen werden ignoriert, da es eine Schlüsselverletzung gibt bei Deinem Primärschlüssel.
Zitat:
Da meine Zieltabelle zusätzliche Spalten enthalten soll (die momentane Testversion enthält diese noch nicht): was würde beim Überschreiben vorhandener Datensätze mit den Einträgen in den zusätzlichen Spalten passieren?
Du überschreibst doch nicht vorhandene Datensätze. Du hängst zuerst mal leere Spalten an. Dann machst Du eine Aktualisierungsabfrage und füllst nur die neuen Spalten.
Gruß Marie
Antwort 13 von rookie44 vom 09.11.2019, 18:23 Options
Hallo Marie,
vielen Dank für die ausführlichen Erläuterungen. Jetzt klappt's endlich mit der Anfügeabfrage und die Zieltabelle wird gefüllt.
"nur Struktur" kopieren hat die Lösung gebracht, in diesem Punkt hatte ich deine Anleitung zunächst nicht befolgt.
Die anderen Punkte sind klar geworden, als ich die funktionierende Prozedur dann gesehen habe.
Danke nochmals und ein schönes Wochenende!!!
Bernd