Supportnet / Forum / Datenbanken
Wert anhand eines Maximalwertes Berechnen
Frage
Hallo,
habe eine "Anfängerfrage"....
Habe eine Datenbank erstellt zur Rechnungserstellung und Artikelverwaltung.
Nun möchte ich, das eine Fortlaufende Rechnungsnummer erst dann erstellt wird, wenn ich einen Button drücke (z.B. den der den Bericht [die Rechnung] öffnet).
Demzufolge möchte ich NICHT einen Auto-Wert nutzen, da die Rechnungsnummer auf jeden Fall fortlaufend sein soll.
Ich dachte mir das ganze jetzt so:
Beim anklicken soll er aus der Tabelle [Rechnungen] die höchste vergeben [Rechnungsnummer] finden, eins dazuzählen, und in die entsprechende Spalte schreiben.
Leider weis ich nur nicht so genau, wie ich das anstelle. Programmiere ich das im VBA Code, als Makro, oder in einer Abfrage?
Für einen kleinen Tip (ggf. mit Syntax) wäre ich echt dankbar.
Vielen Dank,
Lelleck
Antwort 1 von MickK
Hi Lelleck,
das geht so. In dem Ereignis 'Beim Klicken' des Buttons (Dein Formularfeld bzw. Dein Tabellenfeld mit der Rechnungsnummer sollen hier ReNr heissen):
Gruß
Mick
das geht so. In dem Ereignis 'Beim Klicken' des Buttons (Dein Formularfeld bzw. Dein Tabellenfeld mit der Rechnungsnummer sollen hier ReNr heissen):
dim zReNr as variant
zReNr = DMax("ReNr","DeineRechnungen")
if isnull(zReNr) then zReNr = 0
Me!ReNr = zReNr + 1
Gruß
Mick
Antwort 2 von Lelleck
Danke Mick,
und wie bekomme ich das jetzt noch hin, das der den Wert auch gleich noch in die dazugehörige Tabelle einträgt?
Müßte doch eigentlich ganz einfach sein, aber irgendwie bekomme ich die Sytax nicht hin.
Die Tabelle heißt "Rechnungen" das Feld heißt "Rechnungsnummer". Ich dachte, das müßte dann irgendwie so aussehen:
[Rechnungen].[Rechnungsnummer] = zReNr
Aber irgendwie funktioniert das net so ganz.
Gruß Lelleck
und wie bekomme ich das jetzt noch hin, das der den Wert auch gleich noch in die dazugehörige Tabelle einträgt?
Müßte doch eigentlich ganz einfach sein, aber irgendwie bekomme ich die Sytax nicht hin.
Die Tabelle heißt "Rechnungen" das Feld heißt "Rechnungsnummer". Ich dachte, das müßte dann irgendwie so aussehen:
[Rechnungen].[Rechnungsnummer] = zReNr
Aber irgendwie funktioniert das net so ganz.
Gruß Lelleck
Antwort 3 von Lelleck
Ich nochmal!
Ich hab´s jetzt endlich hinbekommen (war ja auch nicht wirklich schwer, wenn man mal sein Hirn anstrengt).
Habe jetzt hiner dem Button folgenden Code Liegen:
[CODE]Private Sub Rechnungdrucken_Click()
On Error GoTo Err_Rechnungdrucken_Click
Dim stDocName As String
If (Rechnungsnummer) = 0 Then Me!Rechnungsnummer = DMax("Rechnungsnummer", "Rechnungen") + 1
stDocName = "Rechnungen"
DoCmd.OpenReport stDocName, acPreview
Exit_Rechnungdrucken_Click:
Exit Sub
Err_Rechnungdrucken_Click:
MsgBox Err.Description
Resume Exit_Rechnungdrucken_Click
End Sub
[/CODE]
Nun habe ich allerdings noch ein kleines Timingproblem. Wenn ich den Button drücke, erzeugt er mir zwar in der Tabelle die richtige Rechnungsnummer, jedoch steht im Bericht eine "0". Wenn ich den Button nochmal drücke, steht immer noch die "0". Erst wenn ich das Formular schließe und neu öffne, oder in den Datensätzen ein wenig rumnavigiert habe, und dann nochmal den Button drücke, stimmt auch die Rechnungsnummer im Bericht.
Hat hierzu noch jemand einen Tip. (Ist bestimmt auch nicht schwer, aber ich komme nicht dahinter, wie ich das lösen kann)
Bin für jeden Tip dankbar, da ich jetzt schon stundenlang an dieser "sche..." Funktion mit den Rechnungsnummern rumbastel, und ich net fertig werde :-(
Gruß
Lelleck
Ich hab´s jetzt endlich hinbekommen (war ja auch nicht wirklich schwer, wenn man mal sein Hirn anstrengt).
Habe jetzt hiner dem Button folgenden Code Liegen:
[CODE]Private Sub Rechnungdrucken_Click()
On Error GoTo Err_Rechnungdrucken_Click
Dim stDocName As String
If (Rechnungsnummer) = 0 Then Me!Rechnungsnummer = DMax("Rechnungsnummer", "Rechnungen") + 1
stDocName = "Rechnungen"
DoCmd.OpenReport stDocName, acPreview
Exit_Rechnungdrucken_Click:
Exit Sub
Err_Rechnungdrucken_Click:
MsgBox Err.Description
Resume Exit_Rechnungdrucken_Click
End Sub
[/CODE]
Nun habe ich allerdings noch ein kleines Timingproblem. Wenn ich den Button drücke, erzeugt er mir zwar in der Tabelle die richtige Rechnungsnummer, jedoch steht im Bericht eine "0". Wenn ich den Button nochmal drücke, steht immer noch die "0". Erst wenn ich das Formular schließe und neu öffne, oder in den Datensätzen ein wenig rumnavigiert habe, und dann nochmal den Button drücke, stimmt auch die Rechnungsnummer im Bericht.
Hat hierzu noch jemand einen Tip. (Ist bestimmt auch nicht schwer, aber ich komme nicht dahinter, wie ich das lösen kann)
Bin für jeden Tip dankbar, da ich jetzt schon stundenlang an dieser "sche..." Funktion mit den Rechnungsnummern rumbastel, und ich net fertig werde :-(
Gruß
Lelleck
Antwort 4 von MickK
Versuch es mal mit
vor dem Öffnen des Berichts. Damit wird der aktuell angezeigte Datensatz in der Tabelle gespeichert.
Gruß
Mick
DoCmd.RunCommand acCmdSaveRecord
vor dem Öffnen des Berichts. Damit wird der aktuell angezeigte Datensatz in der Tabelle gespeichert.
Gruß
Mick