![]() |
Kundennummer aus Buchstaben und Zahlen erstellen
Hi Leute!
Ich habe folgendes Problem. Ich muss eine fortlaufende Kundennummer aus Buchstaben und Zahlen erstellen. Ich habe mir das so gedacht, dass ich mit der Kundennummer A001 anfange, dann weiter mit A002 bis Z999 gehe. Danach soll es weiter mit AA001, AA002 bis ZZ999 gehen. Nun weiß ich leider nicht, wie ich das per Quellcode realisieren soll. Kann mir jemand helfen? MfG Voltzi |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Wie lernt man in der Schule zu addieren?
Code:
1. Von rechts anfangen. (i=1)
2. Wenn i> Länge(Nummer) dann Hänge ein 'A' vorne an die Nummer an Sonst Wenn Nummer[i]=höchste Ziffer dann Nummer[i] := Kleinste Ziffer inc (i) Wiederhole Schritt 2 sonst inc (Nummer[i]) |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Danke für deine Hilfe. Hat sich aber schon erledigt.
MfG Voltzi |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
du solltest dir jedenfalls überlegen ob das günstig ist fürs sortieren!
Code:
wird aufsteigend sortiert zu
a001
a002 b001 b002 aa001 aa002 bb001 ab001
Code:
a001
a002 aa001 aa002 ab001 b001 b002 bb001 |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Hallo,
in der Regel macht man das per "K" (Kreditor) oder "D" (Debitor). Also z.B. K123456 oder D546765 So kann man gleich anhand des Buchstabens erkennen, ob es ein Kunde oder Lieferant ist. Wenn nur Nummern gewünscht sind, ist der Kunde meist 1,2,3,4,5,6 und der Lieferant >6. Also Kunde = 123456 Lieferant = 789101 |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Hallo Voltzi,
mit einem so vorbildlich formulierten Titel für einen thread lohnt sich später auch die Suchfunktion. Die Schlüssel AA001 .. ZZ999 ergeben einen Schlüsselvorrat von 26 * 26 * 1000 - 1 Schlüsseln. Hier eine Abbildungsfunktion:
Delphi-Quellcode:
Grüße vom marabu
function CompoundKey(iKey: cardinal; iDigits: integer): string;
var i, iRange: cardinal; begin iRange := 10; for i := 2 to iDigits do iRange := iRange * 10; Result := IntToStr(iKey mod iRange); while Length(Result) < iDigits do Result := '0' + Result; iKey := iKey div iRange; Result := Chr(iKey mod 26 + Ord('A')) + Result; iKey := iKey div 26; Result := Chr(iKey mod 26 + Ord('A')) + Result; end; |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Ab jetzt wird geklugscheissert: :nerd:
Volzi wollte 'A001'..'Z999','AA000','ZZ999' und nicht 'AA001'..'ZZ999' @marabu: 6! Setzen! Nachsitzen! :warn: Nee, im Ernst: Ich bevorzuge auch Nummern mit konstanter Länge, insofern ist deine Abbildung natürlich ok. |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Hallo alzaimar,
ich habe meinen Code bewusst nicht an die Anforderung von Voltzi angepasst, weil ich auf die Macht des Faktischen zählen wollte. Durch Hinzunahme des Schlüsselbereichs A001 .. Z999 vergrößert man ohne Zweifel den Schlüsselvorrat, aber die von dir und anderen betonten Nachteile überwiegen doch bei weitem. Ich würde dann wohl eher zu AAA001 .. ZZZ999 greifen. Aber wer kennt schon die genauen Anforderungen? Nur als technische Spielerei - eine kleine Änderung der letzten Zeile:
Delphi-Quellcode:
Freundliche Grüße vom marabu
if iKey > 0 then
Result := Chr(Pred(iKey) mod 26 + Ord('A')) + Result; |
Re: Kundennummer aus Buchstaben und Zahlen erstellen
Wenn die Reihenfolge "erst einige Buchstaben, danach Ziffern" nicht unbedingt notwendig ist, genügen sechs Hex-Ziffern für einen Schlüsselvorrat von 16^6 =~ 16 Mio., und außerdem werden "politisch sensible" Buchstabenkombinationen verhindert.
|
Re: Kundennummer aus Buchstaben und Zahlen erstellen
@marabu: Nee, is schon klar, aber manchmal will man einfach mal seinen Senf hinzugeben.
@BKempf: Ich weiss nich, ob man sich darüber noch Gedanken machen sollte. Dann dürfte ja auch die Funkzentrale, die ich gerade programmiere, politisch unsensibel sein. Und Wasser erst recht (Hupsa! nicht rechts!). Buchstabensalatkundennummern sind ohnehin Unsinn. Wer will schon FUK007 heissen. Und mit HEX-Zahlen ginge das auch: FAC007 :-D. Dessenungeachtet will ich die Firma sehen, die 16. Mio Kunden ihr eigen nennt und sich nicht mal 8 stellige numerische Kundennummern leisten will/kann. Aber, da kommt man vom Hundersten ins Tausendste: Will ich als Kunde die Nr. 69 (obwohl meine Frau nicht drauf steht?) oder die 666, obwohl ich Muslime bin? Dann stell ich mich lieber naiv (oder vernünftig, je nach Sichtweise) und beanspruche die Gnade der späten Geburt sowie Scheuklappen für mich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz