PDA

Vollständige Version anzeigen : Bestellnr. inkrementieren


embosa
16.02.2003, 19:10
Hi,

ich habe eine Frage betreff meines Feldes BESTELLNR.

Und zwar moechte ich immer wenn ich auf den button "New" druecke,
einen neuen Datensatz anlegen. Dabei sollte aber dann in dem Feld Bestellnr. ein String (Buchstabe und Zahlen) wie z.B. ORD1000 erscheinen, und wenn man mit dem Datensatz fertig ist und dann wieder auf "New" drueckt, sollte ORD1001 dastehen und immer so weiter. Die Zahl steigt immer um 1 wobei ORD jeder Bestellnr. voransteht.

Kann mir da einer aushelfen ?
Vielen Dank schon mal
Embosa

Nouba
16.02.2003, 19:39
Hallo Embosa,

man kann. :)

Am einfachsten kann man Zahlenfelder inkrementieren und die Darstellung entsprechend formatieren. Das macht Sinn, wenn sich die Buchstaben davor nie ändern.

Man kann beide Teile (Text + Zahl) in einem einzelnen Feld speichern, dass dann jedesmal zerpflückt werden muß.

Man kann auch zwei Felder pflegen - eines für den variablen Text und eines für den Zahlenanteil. Dem User werden die Daten ggf. als ein Feld präsentiert.

Das Prinzip der Inkrementierung kann Increment Numeric portion of a string (http://www.mvps.org/access/strings/str0007.htm) entnommen werden.

embosa
17.02.2003, 20:52
Hallo Nouba

Danke mal wieder fuer Deinen Tipp. DOch warum sollte man diesen String (ORD1001) wieder zerpfluecken. Ich benoetige ehrlich gesagt diesen prefix nur, da ich etliche solche Nummern habe. Z.B. CUS1000 fuer Kunden,
ORD1000 fuer Bestellungen, PRO1000 fuer Produktnummer usw. Und ich moechte den ganzen Nummern eine Semantik in FOrm eines Prefixes geben. Ich zerpfluecke die nicht mehr... Macht denn dieses System keinen Sinn ?

Eine andere Frage: Wenn jemand bestellt, bekommt er eine Rechnung.
Also keine Rechnung ohne Bestellung. Macht es Sinn die gleichen Nummern dafuer zu vergeben ?

Gruss
Embosa

Lukro
17.02.2003, 20:55
Ich hatte ein ähnliches Problem und hab mir ne Funktion geschrieben die das löst. Wenn du Interesse hast kann ich die dir mal mailen.
Meld dich mal per ICQ: 144256483 oder halt per Mail.

Lukro

Nouba
17.02.2003, 21:37
Hallo Embosa,

zum Sinn kann ich wenig Auskunft geben. Die richtige Methode wird es vermutlich auch nicht geben. Oft bestimmt der Auftraggeber was richtig ist.

Wenn die Benutzer später diese Kombination lernen müssen/wollen/sollen kann man mit sowas arbeiten. Stellt diese Zurdnung ein natürliches Attribut des Artikels dar, wäre es auch ein Pflichtfeld - z.B. wenn es auf dem Beipackzettel oder Etikett verwendet wird. Wenn die Kombination aber rein willkürlich zustande kommt und nur zur Unterscheidung der Tuples in der DB dient, würde ich darauf verzichten. Ich bin schon froh, wenn ich mir die wichtigsten Telefonnummern merken kann und will mir sowas tunlichst nicht antun. Wenn Du den späteren Benutzer kennst, frage ihn selbst, wie er sich die Arbeit am leichtesten vorstellt.

In beiden Fällen würde ich ein Autowertfeld als Primärschlüssel wegen Schnelligkeit und Platzverbrauch verwenden. Die Entscheidung bleibt aber letztendlich bei Dir und/oder dem Kunden.

Ein Bezug zwischen Rechnung und Bestellung sollte vorhanden sein, wie willst Du sonst Unterscheidungen treffen. Ob in einer Rechnung "Betr.: Ihre Bestellung vom .... drinsteht oder ORD4711 drinsteht, ist von der Anforderung abhängig und kann bestimmt nicht pauschal beantwortet werden. Das oben gesagte zum Primärschlüssel, würde ich auch hier gelten lassen.

embosa
17.02.2003, 23:00
Hi Nouba

Es gibt keinen Kunden. Ich bin ein blutiger Access Anfaenger. Aber ich bin von all den Moeglichkeiten die Access bietet hellauf begeistert. Um so mehr ich herausfinde und herumforsche, desto mehr Fragen tun sich auf....

Ich benutze diese Beispiele nur zum lernen....
Embosa

Nouba
17.02.2003, 23:27
Hallo Embosa,

ich würde mal in einer kleinen DB beide Varianten testen und dann abwägen was Dir am meisten zusagt.

... ich lerne hier im MOF Forum auch noch vieles dazu. :)

jmc
19.02.2003, 06:10
Hallo Embosa

über das WIE man die alphanumerischen "Nummern" inkrementiert, ist ja bereits genügend gesprochen worden.
Auch wenn ich nerve, möchte ich doch meine Meinung dazu kundtun.

Die Frage ist doch vielmehr WARUM und da gibt es m.E. KEINEN Grund bei einer neu aufzubauenden Anwendung mit solchen "sprechenden Nummern" zu arbeiten. Die Zeiten sind definitiv vorbei ...

Die Nummern in den Tabellen, welche als Primary-Key dienen, sollten lediglich als technisches Hilfsmittel betrachtet werden, eben gerade für den PK. Der Benutzer sollte tunlichst nichts damit zu tun haben.
Oder kannst du mir sagen, wie der Kunden CUS004711 heisst ?? (ne den mit dieser Nummer kennt man vielleicht ;) ) oder was die Bestellung ORD001234 ist ?

Ich suche doch viel lieber nach dem Kunden mit dem Namen 'Fritz Meier', dessen Kundennummer 8499 mir völlig wurscht ist. Oder wer hat vor einer Woche den Artikel 'XYZ' bestellt? usw.

Abgesehen davon, dass du dir eine ganze Menge Mehrarbeit etc. etc. einhandelst - siehe die Diskussion oben mit den angesprochenen Lösungsansätzen.

Um es in Abwandlung zu Hans-Dieter Hüsch zu sagen: Nummern sind Schall und Rauch ...

Axel37
19.02.2003, 08:39
hallo embosa

Eine andere Frage: Wenn jemand bestellt, bekommt er eine Rechnung.
Also keine Rechnung ohne Bestellung. Macht es Sinn die gleichen Nummern dafuer zu vergeben ?

in der praxis zeigt sich wie schnell die nummern auseinanderlaufen können, zb durch sammelrechnungen oder teillieferungen, stornierungen... einfach weil nix nach einem schema läuft.
deshalb wäre eine durchgehende nr in den einzelnen nummernkreisen m.e. die sinnvollste lösung.

axel

embosa
19.02.2003, 19:51
Hi

@Jean
Eigentlich haste ja recht, aber wie erklaert man sich dennoch die Verwendung von Kundennummern oder Artikelnummer groeesserer Kaufhaeuser oder dem Otto Katalog. Ob nun CUS oder ORD hin muss oder nicht, darueber laesst sich sehr wohl streiten.
Bist Du den "sprechenden Nummern" skeptisch oder solchen Kundennummer allgemein ?
Ich denke, Artikelnummer und so weiter machen sehr wohl Sinn und wenn man sie schon hat, kann man ihnen noch eine Semantik mitgeben. Danke fuer Deine viele Beitraege um mir zu helfen. Ich lerne jeden Tag ein Stueck der Access Welt....

@Axel37
Ich bin der selben Meinung, dass es Sinn macht die Summern zu separieren. Fuer den Fall der Faelle sozusagen. Danke fuer Deine Meinung

Gruss
TomTom

Axel37
19.02.2003, 20:34
in meinem artikelstamm hab ich auch sprechende artikelnummern, weils einfacher ist, ich kann dadurch bei angebots-/rechnungslegung ruckzuck den artikel anklicken und muss nicht artikelbez. durchforsten
kann man aber nur in kleinen beständen machen.
axel

jmc
19.02.2003, 23:30
Hi embose - oder TomTom

du bringst es ja selbst auf den Punkt:
Otto-Versand oder was auch immer: wenn du natürlich einen Katalog hast, dann ist eine Artikelnummer sicher nicht nur für den technischen Gebrauch ... der Kunde muss ja selbst damit bestellen.
ABER: die sind dann meist nach einem System aufgebaut. Habe keinen Otto-Katalog aber den von Konrad Elektronik, da sieht's z.b. so aus:
61 02 80-22 Glühbirne 9 Watt
61 02 81-22 Glühbirne 11 Watt
61 02 82-22 Glühbirne 15 Watt etc.
(komischerweise ist hinten immer -22, aber was soll's)
Da ist vermutlich ein System drin. Nur, das kannst du nicht mit einem Automatismus lösen, der dir einfach aufaddiert ...
Wenn du einfach 'PRO' und eine fortlaufende Nummerierung hast, dann ist das kein System im eigentlichen Sinn.
Was du schlussendlich machst, ist selbstredend dir überlassen, und ich denke was Axel sagt hat auch seine Berechtigung. Denn ab einer gewissen Menge kann man auch sprechende Nummern nicht mehr auswendig wissen ...
Jedenfalls: viel Spass beim Programmieren mit Access und bis zum nächsten Problem (übrigens gerade heute an einem Vortrag gehört: Problem ist nichts schlechtes, denn PRO heisst ja FÜR - sonnst müsste es ja eigentlich Contra-blem heissen ;) )

Axel37
20.02.2003, 07:18
@ jmc

die -22 bedeutet aus welchem katalog bei konrad bestellt wird, vermutl können sie da auch rückschlüsse auf bestellhäufigkeiten aus bestimmten spezialkatalogen/flyern schliessen und somit auch ihre werbung steuern.
noch kurze info zu meinen artikelnummern: die haben teilweise sogar namen zb INST für installationsstd vor ort... da brauch ich mir keine nummern merken, lol

axel