valume91
Goto Top

Access, aktuellen Datensatz kopieren und als Neuer anfügen

Wie kann ich in einem Formular per Button den aktuellen Datensatz kopieren und als neuer anlegen?

Guten Morgen liebes Forum
Ich komme mal wieder nicht weiter und brauche eure Hilfe.

Ich möchte in meinem Formular "Formular Produkteingabe" einen Button der mir den aktuell angezeigten Datensatz kopiert und als neuer Datensatz einfügt. Jedoch sollten die Felder "O Nummer" und "EANummer" nicht kopiert, bzw. nachträglich wieder gelöscht werden.

Wie stelle ich das an?

MfG Valume

Content-Key: 117770

Url: https://administrator.de/contentid/117770

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: jato11
jato11 09.06.2009 um 23:47:03 Uhr
Goto Top
Hallo Valume,
Das kannst du sicherlich mit einer Anfüge-Abfrage machen.
Bei Kriterium schreibst du das Feld vom Formular rein.
z.B. "=Formulare!Formular Produkteingabe!Produktname"

Als Makro könnte es auch gehen
- Datensatz makieren
- Kopieren
- am Ende anfügen

Ich habe es jetzt nicht geprüft. Sollte aber funktionieren

Viele Grüße
Torsten
Mitglied: Valume91
Valume91 10.06.2009 um 13:32:11 Uhr
Goto Top
Hi Jato

Erstmal danke für deine Antwort!
Das mit dem Makro wäre schon eine Möglichkeit. Jedoch, wie kann ich die Felder "O Nummer" und "EANummer" vom kopieren ausschliessen? Bzw. wie kann ich diese nachträglich löschen?

MfG Valume
Mitglied: jato11
jato11 10.06.2009 um 15:10:51 Uhr
Goto Top
Da könntest du mit "Gehe zu Steuerelement" hingehen und den Inhalt löschen.

Ich würde es aber mit der Anfügeabfrage versuchen.

Viele Grüße
Torsten
Mitglied: Valume91
Valume91 15.06.2009 um 08:51:19 Uhr
Goto Top
Hi jato
Leider führt bei mir beides zu einem Fehler:

Die Anfügeabfrage bringt eine Schlüsselverletzung.
Und bei der Methode mit dem Makro bringt er eine Meldung:
"Aktuelles Feld muss dem Verknüpfungsschlüsel "etwas_ID" auf der 1 Seite der 1-n beziehung entsprechen. Und danach bringt er noch die Meldung "Ungültiger Felddatentyp".
Gibt es sonst noch eine Möglichkeit?

Gruss Valume
Mitglied: jato11
jato11 15.06.2009 um 09:00:25 Uhr
Goto Top
Schau ich mir heute Abend an, dass muss funktionieren.

Welche Access-Version hast du?

Viele Grüße
Torsten
Mitglied: Valume91
Valume91 15.06.2009 um 11:23:51 Uhr
Goto Top
Hi jato
Ich arbeite mit Access 2003.
Danke für deine Hilfe!

Gruss Valume
Mitglied: jato11
jato11 17.06.2009 um 12:10:01 Uhr
Goto Top
Ich habe es jetzt mit der Version 2000 ausprobiert.

-Ich habe eine Anfügeabfrage erstellt

- unter Ansicht die Funktionen eingeschaltet und unten inder Tabelle "Gruppierung" ausgewählt

- In der ersten Spalte trage ich folgende Werte ein:
Feld = "Produktname:[Formulare]![Formular Produkteingabe]![Produktname]"
Tabelle = leer
Funktion= Gruppierung
Sortierung leer
Anfügen an= Produktname
Kriterien= leer

Für die weiteren Felder kannst du es genauso aufbauen. Jedes Feld eine Spalte.
Die Felder die nicht brauchst lässt du weg

Das ganze starte ich im Formular per Makro (ÖffnenAbfrage) und anschließend (Aktualisieren Daten)

Viel Erfolg und viele Grüße
Torsten
Mitglied: Valume91
Valume91 17.06.2009 um 13:54:57 Uhr
Goto Top
HI jato

Danke für deine Hilfe!
Wie soll ich das mit den Schlüsseln machen?
Ich habe nämlich in meiner Abfrage auf der das Formular basiert mehrere verschiedene Tabellen ausgewählt.
Und ich kann ja nur jeweils an eine Tabelle Anfügen. (Am besten wäre natürlich wenn man an eine Abfrage anfügen könnte)
Wie soll ich das machen?

Gruss Valume
Mitglied: jato11
jato11 24.06.2009 um 22:23:56 Uhr
Goto Top
Hallo Valume,

auch das funktioniert. Nur mit zwei Anfügeabfragen.

Beide Tabellen müssen ja etwas gemeinsames haben wie eine Artikel- oder Kundennummer,
sonnst könntest Du sie ja nicht verknüpfen.
Das Feld nimmst Du mit in die Abfrage.
Du kannst auch in der Abfrage einen neuen Wert berechnen z.B. [ArtikelNr ]+1

Viele Grüße
Torsten
Mitglied: scaku1974
scaku1974 28.03.2010 um 14:26:05 Uhr
Goto Top
Hallo Torsten,

ich habe genau nach dieser Antwort gesucht und sie hier gefunden.
Nach der Übertragung auf meine Datenbank hinsichtlich Formular- und Feldnamen funktioniert es fast. Problem: wenn ich die Anfügeabfrage aufrufe, möchte Access immer ALLE in der Tabelle vorhandenen Datensätze anfügen (derzeit 902 Stück).

Ich kriege also den Bezug von dem Datensatz, bei dem ich gerade bin, wenn ich auf meinen Button drücke, nicht hin, dass NUR DIESER eine Datensatz dupliziert und hinten angehängt wird.

Kannst du mir hier bitte noch einen Tipp geben?

Das Problem mit dem IDs habe ich auch noch. Ich habe die ID in der Tabele ursprünglich aus mehreren einzelnen IDs verknüpfter Tabellen kombiniert. Die auf diese Weise erzeugte ID dient der Verknüpfung mit anderen Datensätzen.

Hintergrund: ich habe in der Tabelle Schulungsveranstaltungen (identifiziert an Workshop_ID), zu denen jeweils Termine und Referenten aus anderen Tabellen verknüpft werden. Also brauche ich für jeden einzelnen Datensatz eine eindeutige ID, sonst funktioniert die Zuordnung ja nicht.
Eine neue ID generieren kann ich nicht, weil sonst die Historie der bisherigen Datenbank (18 Monate Pflege und mehrere Tausend Verknüpfungen) im Eimer wären.

Wäre schön, wenn ihr mir noch weiterhelfen könntet.

Danke
Steffen
Mitglied: jato11
jato11 28.03.2010 um 18:54:22 Uhr
Goto Top
Hallo Steffen,

Ich kriege also den Bezug von dem Datensatz, bei dem ich gerade bin, wenn ich auf meinen Button drücke, nicht hin, dass NUR DIESER eine Datensatz dupliziert und hinten angehängt wird.

der Datensatz muss ja etwas eindeutigen haben wie Kunden Nr, Artikel Nr, o.ä.

Dann trage in der Abfrage bei dem Feld unter Kriterien folgendes ein (Formular und Feldname anpassen):
"=Formulare!Formularname!Feldname"

Viele Grüße
Torsten
Mitglied: scaku1974
scaku1974 28.03.2010 um 19:09:00 Uhr
Goto Top
Hallo Torsten,

das stand auch in der vorherigen Antwort und ich habs probiert. Die Abfrage wird aber unabhängig vom aktuellen Datensatz im Formular geöffnet.
Ich habe es zwischenzeitlich als Workaround mit einem Kriterium in der Abfrage gelöst (leeres Feld, die ID muss zur Ausführung manuell eingegeben werden). Das war der einzige Weg, um zu verhindern, dass immer alle Datensätze gezogen werden.

In dem Feld (heißt [Workshop_ID]) steht für jeden Datensatz ne andere ID. Wenn ich als Kriterium ne konkrete ID nehme, dann funktioniert es, aber die kann ich ja nicht fest eintragen, weil sie immer wieder anders ist. Wenn ich aber "=Formulare!Workshops_Eingabe_der_Termine!ID_Workshop" nehme, dann ist ja das Feld selbst das Kriterium für sich und lässt wieder alle 900 Einträge durch.
Oder ich bin zu doof. Sorry, ich komm mir grad ein bisschen vernagelt vor ;=)

Danke
Steffen
Mitglied: jato11
jato11 28.03.2010 um 20:23:38 Uhr
Goto Top
Versuch es mal nach meinem Muster vielleicht funktioniert das

Das mit der Hardcopy hat leider nicht so funktioniert wie ich wollte.

Versuch mal das Kriterium ohne Gleichheitszeichen und den Formularnamen und Feldnamen in eckige Klammern zu setzen
[Formulare]![Formularname]![Feldname]

Viele Grüße
Torsten
Mitglied: scaku1974
scaku1974 28.03.2010 um 23:06:09 Uhr
Goto Top
Guten Abend,

Respekt! Ich muss gestehen, dass ich es nicht geglaubt habe (weil schon so lang rumprobiert), aber es funktioniert! Geil!
An die ID des neuen Datensatzes hänge ich einen Timestamp dran - das hab ich aber schon vorher gebastelt ;=)

Letzte Frage erst mal: der neue Datensatz erscheint bisher nur, wenn ich das Formular schließe und wieder öffne. Die Aktion "AktualisierenObjekt" mit dem Formular in der Detailangabe funktioniert nicht.
In meinem Access2003 gibt es nur noch "AktualisierenDaten" im Makro-Editor. Da muss ich aber ein Steuerelement angeben, das dann gezielt aktualisiert wird. Aber das ganze Formular (inkl. eines gegebenenfalls manuell gesetzten Filters) wird nicht neu geladen, d.h. mein Datensatz ist da, aber ich seh ihn nicht.
Geht momentan auch so, aber könnte noch optimiert werden. Hast du nen Tipp dafür?

Besten Dank!
Steffen
Mitglied: jato11
jato11 29.03.2010 um 16:30:35 Uhr
Goto Top
Klasse,
lag es nur am Syntax?

Was passiert denn wenn Du F9 drückst?

Wie ist die Datenherkunft ? Direkt auf die Tabelle oder über eine Abfrage?

Eine Abfrage kannst Du neu per Makro aufrufen (ich glaube das habe ich schon gemacht - muss ich nachsehen)


Viele Grüße
Torsten
Mitglied: scaku1974
scaku1974 30.03.2010 um 00:04:51 Uhr
Goto Top
Hallo Torsten,

lag wohl am Syntax. Das "=" vielleicht...

Wenn ich F9 drücke, passiert gar nichts. Das hilft nur, wenn im Hintergrund die Daten z.B. einer Auswahlliste geändert wurden, um dann ohne neues Öffnen auch die neuen Einträge zu sehen... Aber das Formular wird deswegen nicht komplett neu eingelesen.

Die Daten aus dem Formular kommen aus einer Abfrage, die im Hintergrund eingerichtet ist und auf die Tabelle zugreift. Die Abfrage ist aber nicht als eigene Abfrage gespeichert, insofern kann ich sie nicht direkt per Makro ansteuern. Kann ich aber, wenn ich sie mit Namen speichere. Hab das mal so probiert. Nun öffnet Access am Ende des Makros die Abfrage (als Datenblatt). Ist also auch nichts.

Wie oben schon geschrieben, hat die Aktualisierung des Formulars auch nix gebracht. Mist. Und nu?

Weiß nicht, wie das hier so üblich ist. Ich schick dir auch gern mal die Datenbank gezippt...

Viele Grüße
Steffen
Mitglied: jato11
jato11 30.03.2010 um 15:52:52 Uhr
Goto Top
Hallo Steffen,

Ich mache für die Formulare und Berichte immer Abfragen und speicher sie entsprechend ab.
Das ist zwar nicht immer nötig, aber ich finde es besser.
Manchmal kann ich eine Abrfrage für mehrere Formulare bzw. Berichte nutzen.

Im Formular trage ich bei Datenherkunft die Abfrage für dieses Formular ein (nicht die Tabelle in der die Daten gespeichert sind)
Dann sollte es auch mit dem aktualisieren gehen.

Viele Grüße
Torsten