Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kundennummer aus Buchstaben und Zahlen erstellen (https://www.delphipraxis.net/47315-kundennummer-aus-buchstaben-und-zahlen-erstellen.html)

Voltzi 9. Jun 2005 09:16


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

alzaimar 9. Jun 2005 09:33

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

Voltzi 9. Jun 2005 09:42

Re: Kundennummer aus Buchstaben und Zahlen erstellen
 
Danke für deine Hilfe. Hat sich aber schon erledigt.

MfG
Voltzi

ibp 9. Jun 2005 09:48

Re: Kundennummer aus Buchstaben und Zahlen erstellen
 
du solltest dir jedenfalls überlegen ob das günstig ist fürs sortieren!

Code:
a001
a002
b001
b002
aa001
aa002
bb001
ab001
wird aufsteigend sortiert zu
Code:
a001
a002
aa001
aa002
ab001
b001
b002
bb001

Catbytes 9. Jun 2005 10:05

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

marabu 9. Jun 2005 10:18

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:
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;
Grüße vom marabu

alzaimar 9. Jun 2005 10:33

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.

marabu 9. Jun 2005 11:11

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:
if iKey > 0 then
  Result := Chr(Pred(iKey) mod 26 + Ord('A')) + Result;
Freundliche Grüße vom marabu

BKempf 9. Jun 2005 11:31

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.

alzaimar 9. Jun 2005 12:17

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:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz