Hallo,
viele meiner Formulare enthalten eine automatische, fortlaufende Nummernvergabe. Um dies profesioneller zu gestalten, möchte ich, dass der erste Datensatz (also ID 1) die entsprechende, erste Nummer aus einem extra dafür angelegten Nummernkreise-Formular holt, in dem die jeweils erste Nummer für die entsprechenden Formulare definiert ist.
Hier die Namen von Tabelle und Formular von "Nummernkreise":
Tabelle: tbl_Nummernkreise
Formular: frm_Nummernkreise
Hier die beiden Suchkriterien von "Nummernkreise":
Suchkriterium 1 (automatische Vergabe): NrKr_AutomVerg -> nur, wenn auf "ja" geschaltet (Checkbox mit Häckchen drin)
Suchkriterium 2 (Name der Anwendung): NrKr_Anwend_IDRef -> hier "Kundenstamm" (ist ein Kombifeld, in dem "Kundenstamm" ausgewählt ist, die ID wäre, falls erforderlich, in diesem Fall die 1)
Hier steht die Nummer drin:
NrKr_Anfang
Hier der Code (Beispiel Kundenstamm), die gepunktete Linie soll die mir fehlende Codezeile darstellen:
Private Sub button1_Click()
DoCmd.GoToRecord , , acNewRec 'Neuer Datensatz
If Me.CurrentRecord = 1 Then 'Prüfung, ob es sich um 1. Datensatz handelt
....................................................................... 'Verweis auf die 1. Nummer im Nummernkreise-Formular
Else
Me!KundSt_KundNr = DMax("KundSt_KundNr", "tbl_Kundenstamm") + 1 'Vergabe neuer fortlaufender Nummer
End If
End Sub
Ich habe mehrere Versuche unternommen, bisher ohne Erfolg.
Hat jemand eine Ahnung, wie dies verwirklicht werden könnte? Vielen Dank!
Viele Grüße
Rainer
Hallo,
Vermutlich:
Private Sub button1_Click()
If Dcount ("*","tbl_Kundenstamm") = 0 Then
If Dlookup("NrKr_AutomVerg","tbl_Nummernkreise","NrKr_Anwend_IDRef=1") Then
Me!KundSt_KundNr.Defaultvalue = 1
Else
Me!KundSt_KundNr.Defaultvalue = Dlookup("NrKr_Anfang","tbl_Nummernkreise","NrKr_Anwend_IDRef=1")
End If
Else
Me!KundSt_KundNr.Defaultvalue =DMax("KundSt_KundNr", "tbl_Kundenstamm") +1
End If
DoCmd.GoToRecord , , acNewRec 'Neuer Datensatz
End Sub
Hallo Franz,
oje, warum bin ich nicht selbst drauf gekommen - mit Dlookup hätte ich das Problem lösen können. :o
Dein Code gibt immer die Nummer "1" zurück und der Datensatz lässt sich nicht speichern.
Habe ihn deshalb umgebaut, bei dieser Variante hat es dann geklappt:
Private Sub button1_Click()
DoCmd.GoToRecord , , acNewRec 'Neuer Datensatz
If Me.CurrentRecord = 1 Then 'Prüfung, ob es sich um 1. Datensatz handelt
Me!KundSt_KundNr = DLookup("NrKr_Anfang", "tbl_Nummernkreise", "NrKr_AutomVerg = -1 AND NrKr_Anwend_IDRef=1") 'Codezeile
Else
Me!KundSt_KundNr = DMax("KundSt_KundNr", "tbl_Kundenstamm") + 1 'Vergabe neuer fortlaufender Nummer
End If
End Sub
Vielen Dank für Deine Hilfe! :D
Viele Grüße
Rainer