PDA

Vollständige Version anzeigen : Erstellen einer fortlaufenden Rechnungsnummer


ebbi
06.06.2012, 08:34
Hallo,

mir ist bewusst, dass dieses Thema schon oft in diesem Forum behandelt wurde, jedoch konnte ich keine der Hilfen umsetzen.
Leider ist es schon eine Ewigkeit her, dass ich mit Access gearbeitet habe (ca. 8 Jahre) und von VBA hab ich so gut wie keine Ahnung :( .

Ich habe die Tabelle tbl_Angebot erstellt:
AgebotID - AutoWert
AngebotNr - Zahl
AngebotDatum - Datum
AngebotBetreff - Text

Ich möchte nun, dass AngebotNr mit einer laufenden Nummerierung versehen wird, die wie folgt aussehen soll:
2012-001
Bei jeder Neuangabe soll diese automatisch erscheinen. Wenn es möglich ist, sollte sich die Jahreszahl automatisch ändern bei Jahresbeginn und die laufende Nr auf 1 zurücksetzen.

Ich hab schon einige Codes ausprobiert, aber irgendwie funktionieren diese nicht und Beispieldatein aus diesem Forum kann ich nicht öffnen, um mir ein paar Tipps zu holen.

Bedanke mich schon im Voraus für Eure Hilfe!!!

Da ich übers verlängerte WE nicht zu Hause bin, werde ich erst spätestens am Montag wieder hier online sein. Danke im Voraus für eure Mühe!!

LG
Ebbi

Atrus2711
06.06.2012, 08:42
Hi,

wenn du das alles scho gelesen hast, kennst du ja auch Sinn und Unsinn des Fortlaufs. Ich spare mir die Kommentare dazu.

Die billigste Lösung dürfte ein Dcount() sein. DCount ist ein VBA-Befehl, der "eine Abfrage simuliert, die Sätze zählt". Zu zählen wären die Sätze, die Angebote darstellen und im aktuellen Jahr liegen. Diese Anzahl +1 wäre die nächste Nummer. Das Jahr kommt einfach als fester Text davor.

Auszuführen wäre das z.B. bei einem Buttonklick ("Nummer vergeben") oder auch BeforeUpdate des Formulars.

Da ich deine Tabellen- und Feldnamen nicht kenne, kann ich hier nur Dummies (fett) benutzen, die du auf deine Verhältnisse anpassen musst. Ich hoffe, es ist verständlich:
Me!Angebotsnummer = Year(Date()) & "-" & Format(DCount("*", "TabelleOderAbfrageDerAngebote", "Year(Angebotsdatum) = Year(Date())")+1,"000)

Edith: Deine Überschrift spricht von Rechnungsnummer, aber im Text redest du von Angeboten. Was denn nun? Wenn es um Rechnungsnummer gemäß deutschem UStG geht, da gibt es durchaus rechtsfeste Alternativen zur fortlaufenden Nummer.

Maxel
06.06.2012, 08:47
Hallo und willkommen im Forum! :hands:

So sollte es gehen:
Year(AngebotDatum) & "-" & Format(Val(Mid(Nz(DMax("RN", "tblRechnung", "Left(RN,4)= '" & Year(AngebotDatum) & "'"), 0), 6)) + 1, "000")

ebbi
06.06.2012, 10:56
Hallo,

vielen Dank für die raschen Antworten.

Eigentlich betrifft es Angebotsnummern, möchte aber auch dies dann in weitere Folge für Rechnungsnummern auch verwenden, sorry für den Fehler.

Vielen lieben Dank für eure Hilfe!!!!

ebbi
06.06.2012, 11:22
Hallo,

also bei mir sieht der Code wie folgt aus wenn ich ihn eingebe:

Sub lfd()
Year (AngebotDatum) & "-" & Format(Val(Mid(Nz(DMax("AngebotID", "tbl_Angebot", "Left(AngebotID,4)= '" & Year(AngebotDatum) & "'"), 0), 6)) + 1, "000")
End Sub

Ist das korrekt?? Ich bekomme keine Fehlermeldung aber die bei der Nummerierung in der Tabelle tut sich nichts.

Muss ich noch Einstellungen in der Entwurfsansicht der Tabelle ändern. Derzeit hat das Feld AngebotNr den Typ Text.

Oder muss ich den Code wo anders eigeben. Wie gesagt, kenne mich null aus.

Bin euch sehr dankbar für eure Hilfe!!

LG
Ebbi

Atrus2711
06.06.2012, 11:28
Code irgendwohin schreiben reicht nicht. Er muss auch irgendwann mal ausgeführt werden.

Auszuführen wäre das z.B. bei einem Buttonklick ("Nummer vergeben") oder auch BeforeUpdate des Formulars.

Da fällt mir ein, dass die Nummer ja auch nur vergeben werde darf, wenn noch keine dasteht. SOnst wird die jedesmal überschrieben, wenn du am Angebot was änderst.
If Len(NZ(Me!Angebotsnummer)) = 0 Then
Me!Angebotsnummer = Year(Date()) & "-" & Format(DCount("*", "TabelleOderAbfrageDerAngebote", "Year(Angebotsdatum) = Year(Date())")+1,"000)
End If

Maxels Ansatz halte ich zudem für umständlicher, weil das Jahr des Angebots aus der Angebotsnummer rausgepopelt wird, es aber leichter aus dem Angebotsdatum genommen wird, wo es ja auch herkommt.

ebbi
08.06.2012, 07:05
Danke euch herzlich für die Hilfe, funktioniert jetzt so wie ich es haben wollte.

Vielen Dank!!!!

LG
Ebbi