Supportnet Computer
Planet of Tech

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):

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


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


Antwort 4 von MickK

Versuch es mal mit

DoCmd.RunCommand acCmdSaveRecord

vor dem Öffnen des Berichts. Damit wird der aktuell angezeigte Datensatz in der Tabelle gespeichert.

Gruß
Mick

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: