# Datensatz hinzufügen [Access]



## danielandross (15. Mai 2006)

Hallo,
ich möchte ein Formular in Access gestalten auf dem man in Textfelder Daten eingeben kann und dann auf einen Button drückt. Danach sollen die Textfeldinhalte in eine Tabelle als neuen Datensatz eingetragen werden.
Mein SQL-Code für die Abfrage, die mit dem Button aufgerufen wird lautet: 

INSERT INTO Adressen
SELECT *
FROM Adressen
WHERE (((Adressen.Name) Like Formulare!Frm3Suchfelder!Text2) And ((Adressen.Vorname) Like Formulare!Frm3Suchfelder!Text0) And ((Adressen.PLZ) Like Formulare!Frm3Suchfelder!Text8) And ((Adressen.Straße) Like Formulare!Frm3Suchfelder!Text10) And ((Adressen.Geschlecht) Like Formulare!Frm3Suchfelder!Text12));

leider  das ganze nicht so es erscheint zwar eine Frage ob ich die Tabelle wirklich verändern wird--- ich drücke ja-- danach kommt die Meldung es wurden 0 Datensätze hinzugefügt. Der Datensatz ist dann auch nicht in der Tabelle.

weiß jemand wo der Fehler liegt oder vielleicht hat jemand ein leicht nachzuvollziehendes Beispiel?


----------



## Slizzzer (16. Mai 2006)

Hallo!

Ich verstehe jetzt nicht ganz den Sinn in deiner Vorgehensweise?! Normalerweise erstellt man eine Tabelle für die Daten. Primärschlüssel würde ich einen Autowert empfehlen.
Dann erstellst Du entweder mit Hilfe des Assistenten, oder eben manuell ein Formular BASIEREND auf der Tabelle. (Eigenschaften->Datenherkunft)
Wenn du nun einen Datensatz eingibst, wird er bereits nach dem ersten Buchstaben in der Tabelle gespeichert. Sobald du in das nächste Eingabefeld springst, ist auch der Inhalt des vorherigen bereits gespeichert. Einen extra Schalter zum Speichern brauchst du also nicht!

Ansonsten lege auf den Schalter den VBA-Befehl 

docmd.RunCommand acCmdSaveRecord 

z.B.


Gruß
Ralf


----------



## danielandross (16. Mai 2006)

Hallo,

erstmal danke für deine Antwort Ralf.

Du meinst also ich soll einfach die Tabelle aufrufen lassen und den user dann selbst den neuen Datensatz in die tabelle eintragen lassen?
Das wäre auch möglich ich muss diese Funktion aber für die Schule haben und mein Lehrer ist sehr genau bei sowas.
Das Problem wäre nämlich dass der user dann auch gleichzeitig alle anderen Datensätze ändern kann (weil ja die ganze Tabelle angezeigt wird).
Ich sollte das deshalb mit Textfeldern hinbekommen deren werte als neuer Datensatz übernommen werden.


----------



## Slizzzer (17. Mai 2006)

Hi!

Also wenn ein Formular auf einer Tabelle basiert, kann man normalerweise alle Daten der Tabelle ansehen und ändern. Dies kannst Du natürlich einschränken, indem du nur Neueinträge zulässt, das löschen verbietest, etc.

Ich hab mal ne kleine DB angehängt, die das macht, was du möchtest. Kannst ja mal analysieren. Das Listenfeld im Formular habe ich nur als Kontrolle eingebaut, damit Du siehst, dass da auch wirklich was in der Tabelle ankommt ;o)

Die SQL-Abfrage lautet dann übrigends 

INSERT INTO tabNamen ( Vorname, Nachname )
VALUES (Formulare!frmEintrag!txtVorname, Formulare!frmEintrag!txtNachname);

bezogen auf meine DB. Die Feldnamen und Tabellennamen sind natürlich austauschbar ;o)

Gruß Ralf


----------



## danielandross (17. Mai 2006)

Danke Ralf,
jetzt  es mit deinem SQL Code.
Vielen Dank, hast mir echt aus der Patsche geholfen
Gruß
danielandross


----------



## danielandross (18. Mai 2006)

Hm irgendwie will jetzt meine Abfrage mit Delete die Textfelder meines Formulars nicht annehmen wenn ich speichere werden beim nächsten Aufruf zB die [] nicht mehr angezeigt. Muss man bei DELETE irgendwas besonderes beachten?


----------

