Nächste freie Projektnummer als Defaultwert

Hallo,

ich habe eine Access-Datenbank erstellt, in der wir Projekte führen. Die entsprechende Projektnummer dazu, steuere ich über ein Kombinationsfeld aus einer separaten Tabelle ein.

Die Tabelle hat folgende Felder:
ID_Index - AutoWert - Primärschlüssel
Projektnummer - Textfeld
Projektnummer_vergeben - Ja/Nein-Feld

Wird nun eine Projektnumemr ausgewählt, wird die vergebene Projektnummer durch das Feld Projektnummer_vergeben mit Ja gekennzeichnet und kann somit nicht mehr ausgewählt werden.

Ich möchte mir nun das Kombinationsfeld sparen und die nächste „freie“ Projektnummer automatisch beim Fokuserhalt vergeben. Soweit so gut…

Irgend wie stehe ich auf dem Schlauch, denn ich kriege keine VBA-Routine hin, die mir die nächste freie Projektnummer ausspuckt! Kann mir jemand helfen?

Danke im voraus…

Alex :smile:

Wie setzt sich die Projektnummer zusammen?
Die entsprechende Projektnummer dazu, steuere ich über

ein Kombinationsfeld aus einer separaten Tabelle ein.

Du kannst übrigens auch einen Primärschlüssel aus zwei Feldern definieren. Eventuell reicht das ja schon?

Die Tabelle hat folgende Felder:
ID_Index - AutoWert - Primärschlüssel
Projektnummer - Textfeld
Projektnummer_vergeben - Ja/Nein-Feld
Wird nun eine Projektnumemr ausgewählt, wird die vergebene
Projektnummer durch das Feld Projektnummer_vergeben mit Ja
gekennzeichnet und kann somit nicht mehr ausgewählt werden.
Ich möchte mir nun das Kombinationsfeld sparen und die nächste
„freie“ Projektnummer automatisch beim Fokuserhalt vergeben.

Muss die Projektnummer denn unbedingt ein Textfeld sein? Ansonsten ginge das ja auch mit AutoWert.

Soweit so gut…
Alex :smile:

Dann fällt mir noch ein, dass Du ja auch für die Projektnummer jedes einzelne Zeichen definieren kannst, bis hin zu Großbuchstaben (auch bei Eingabe von Kleinbuchstaben) etc.
Aber wenn Du die Projektnummern schon in einer Tabelle zu stehen hast und nur aus diesen - daraus noch nicht vergebenen - auswählen lassen willst, dann vielleicht am besten mit einer Aktualisierungsabfrage, mit der Du nur jeweils die noch nicht vergebenen Namen in eine Tabelle schreibst?
Sorry, aber so ohne Anschauungsmaterial fällt mir das etwas schwer. Wenn Du magst, kannst Du mir ja mal eine (evtl. abgespeckte) Version schicken, damit ich das besser sehe.
Aber mich würde interessieren, ob das „vergeben: ja“ automatisch eingetragen wird - und wenn ja, wie Du das gemacht hast :smile:)
Gruß Verena

Hallo Verena,

ein AutoWert fällt flach, da ich Datensätze in unterschiedliche Tabellen verteile und hier mein Auto-Index (AutoWert) mein „roter Faden“ der Datensätze ist.

Zu deiner Frage:
Ich habe die Markierung der Projektnummern (Projektnummer vergeben Ja / Nein) über eine Aktualisierungsabfrage, gekoppelt an das Kombinationsfeld (AfterUpdate), gelöst.

VBA-Statement:
DoCmd.SetWarnings False
DoCmd.RunSQL "Update tblProjektnummer SET tblProjektnummer.Projektnummer_vergeben = [Projektnummer_vergeben]=0 " _
& „WHERE (((tblProjektnummer.ID)=[Formulare]![frmAnforderungsblatt]![cbm_Projektnummer]));“
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.SetWarnings True

Vielleicht hilft dir das, mein Problem besser zu verstehen…

Gruß,
Alex :smile:

Hallo Verena,
ein AutoWert fällt flach, da ich Datensätze in
unterschiedliche Tabellen verteile und hier mein Auto-Index
(AutoWert) mein „roter Faden“ der Datensätze ist.

Und was ist mit dem Primärschlüssel aus zwei Tabellenfeldern? Hilft das vielleicht?

Vielleicht hilft dir das, mein Problem besser zu verstehen…

Uff, leider nicht - VBA ist für mich ein Buch mit sieben Siegeln. Aber trotzdem danke.

Gruß,
Alex :smile:

Gruß Verena

Codiere im Ereignis „vor Eingabe“ des Formulars:

Dim NächsterIndex as long

'holt die nächste Projektnummer
‚richtet sich nach der fortlaufendenen Nummerierung
‚geht davon aus, dass die Projektnummern in der Reihe der aufsteigenden Index-Nr. vergeben werden soll
NächsterIndex =Dmin(„ID_Index“, „Tabellenname_Mit_ProjektNummern“, „Projektnummer_Vergeben=0“)
me.Projektnummer=DLookUp("Projektnummer ", „Tabellenname_Mit_ProjektNummern“, „ID_Index=“ & NächsterIndex)
currentproject.connection.execute "Update Tabellenname_Mit_ProjektNummern Set Projektnummer_Vergeben=-1 where Projektnummer=‘" & me.ProjektNummer &"‘")

Herzlichst
EPa

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]