Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Verweis auf Nummer

Begonnen von Rainer 1984, September 19, 2013, 19:39:09

⏪ vorheriges - nächstes ⏩

Rainer 1984

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

DF6GL

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

Rainer 1984

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