Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: datekk am Januar 23, 2014, 16:28:39

Titel: ID-Vergabe bei neuen Datensätzen mittels Makro oder VBA...?
Beitrag von: datekk am Januar 23, 2014, 16:28:39
Hallo :)

Ich habe eine Auftragserfassung erstellt. In einem Formular wird der Auftrag erfasst. Die Werte werden Beispielsweise in einer Tabelle "Aufträge" erfasst.

Jedem Auftrag wird ein Kunde zugeordnet. Dafür habe ich eine Schaltfläche auf dem Auftragsformular. Vor dieser Schaltfläche werden keine weiteren Daten erfasst. Drückt man diese Schaltfläche, so wird die TempVar mit der AuftragsID vergeben und ein neues Fenster mit der Kundenliste aus der Tabelle "Kunden" öffent sich.

Beim klick auf einen Kunden wird wiederum mittels TempVar und einer Aktualisierungsabfrage die ID des Kunden in die Tabelle "Aufträge" erfasst.

Das ganze geht super bis auf das ich bei neuen Datensätzen ohne weitere Erfassung keine AuftragsID habe.

Wie kann ich es einrichten, dass bei neuen Aufträgen (ID steht auf Neu) eine ID vergeben wird, welche dann als TempVar dient?


Ich hoffe, ich konnte mein Problem so verständlich wie möglich beschreiben.
Titel: Re: ID-Vergabe bei neuen Datensätzen mittels Makro oder VBA...?
Beitrag von: Stapi am Januar 24, 2014, 20:58:23
Hallo datekk

Bei einem richtigen Datenbankaufbau sind keine Schaltflächen zum kopieren von ID nötig. Hier für ist dann die Konstrukt Hauptformular (Hafo) Unterformular (Ufo) zu wählen die über die ID verknüpft wird
Titel: Re: ID-Vergabe bei neuen Datensätzen mittels Makro oder VBA...?
Beitrag von: database am Januar 25, 2014, 10:30:17
Hallo,

ZitatWie kann ich es einrichten, dass bei neuen Aufträgen (ID steht auf Neu) eine ID vergeben wird, welche dann als TempVar dient
Eigentlich gar nicht!

Ich gehe davon aus, das deine Tabelle so aufgebaut ist, dass die ID, also der PK als Autowert erstellt wird.
In dem Fall ist es einfach so, dass der neue Primärschlüssel erst dann vergeben wird, wenn Daten in ein Feld des Datensatzes eingegeben werden.
Es gäbe natürlich die Möglichkeit, den höchsten PK der Tabelle zu ermitteln und mit +1 den nächsten PK zu berechnen, nur muss ich dir von solchen Ideen von Vorne herein und mit allem Nachdruck abraten!
Abgesehen davon, dass bei ordnungsgemäßer Erstellung der Tabellenbeziehungen es nicht möglich sein darf, einen nicht vergebenen PK in die Detailtabelle zu schreiben (referenzielle Integrität), würdest du ein Datenchaos erzeugen, das die ganze Datenbank völlig wertlos macht.

Erstell und konfiguriere die Tabellen und deren Beziehungen so wie es die Regeln einer relationalen Datenbank erfordern,
baue deine Formulare in der Weise, wie sie auch Stapi  schon angesprochen hat und überlasse das Erzeugen und Schreiben von Schlüsselwerten Access selbst, du wirst dir so jede Menge an Ärger ersparen
Titel: Re: ID-Vergabe bei neuen Datensätzen mittels Makro oder VBA...?
Beitrag von: datekk am Februar 03, 2014, 10:20:58
Vielen Dank. Ich habe das Problem mehr oder weniger dadurch gelöst, erst einmal eine andere Eingabe vom User zu verlangen, wodurch der Datensatz angelegt wird.