AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fortlaufende Kundennummer

Ein Thema von xSkaschY · begonnen am 21. Jun 2006 · letzter Beitrag vom 23. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#1

Fortlaufende Kundennummer

  Alt 21. Jun 2006, 23:43
Hallo zusammen,

nun muss ich auch einen Beitrag in diesem Forum hinterlassen. Hab schon vieles durch DP gelernt, und neben dem Easy Helper meine 2te Anlaufstelle für Probleme mit Delphi

Meine frage ist eigentlich schon kurz aber Aussagekräftig im Topic formuliert.

Ich habe eine "Dynamische" Kundennummer dessen Prefix frei definierbar ist, ist in einer MySQL abgespeichert.

Nun habe ich die letzte Kundennummer im String 'currentcustomerno',

wie kann ich nun den Prefix zbs. "weblab{number}", um eine Zahl erweitern?

Was ich noch dazusagen muss, die Anzahl der Int's kann auch defieniert werden, ergo hab ich am ende {prefix}{number}.

in PHP Hab ich das so realisiert
Code:
function generateKundennr()
{
   $query = $this->MYSQL->query("SELECT `kundennr` FROM `".$GLOBALS["sql_cfg"]["table_kunden"]."` ORDER BY `id` DESC");
   $data = $this->MYSQL->fetch_array($query);

   $kundennr = substr($data["kundennr"], strlen(str_replace("{nummer}", "", $GLOBALS["system"]["kdnrprefix"])));
   $kundennr++;
   $maxcount = $GLOBALS["system"]["kdnrzeros"]-strlen($kundennr);

   for ($i = 0; $i < $maxcount; $i++) {
      @$zeros .= "0";
   }

   $kdnr = str_replace("{nummer}", @$zeros.$kundennr, $GLOBALS["system"]["kdnrprefix"]);
   return $kdnr;
}
In Delphi jedoch habe mich mit der Manipulation von Strings noch nicht so auseinander gesetzt.

Ich hoffe ich könnt meinem Vorhaben folgen.


Mit freundlichen Grüssen
Tobias Ehrig
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 06:31
Herzlich willkommen in der Delphi-PRAXiS, Tobias.

Den Schlüsselbereich würde ich in der Datenbank selbst verwalten. Die Erzeugung der Kundennummer, welche aus einem Präfix und einer Zahl fester Länge besteht, ist dann so möglich:

Delphi-Quellcode:
const
  KDNR_PREFIX = 'DP';
  NUM_LENGTH = 6;
var
  kdnr: String;
  next: Cardinal;

function GetNext(prefix: String): Cardinal;
begin
  // ... deine Schlüsselverwaltung
end;

begin
  // ...
  kdnr := Format('%s%.*d', [KDNR_PREFIX, NUM_LENGTH, GetNext(KDNR_PREFIX)]));
  // ...
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:00
Hallo marabu,

danke für die Willkommensworte!

Soweit hab ich das ja schon! Habe mich wol fälschlicher Weise falsch formuliert.

Ich habe die Bereits bestehende Kundennummer in einem String.

Müsste den aber zerteilen nach den, in der Datenbank befindlichen, Pattern (prefix usw.) und so die nächste Kundennummer erstellen.

Mir fehlen leider jedoch die Ansätze diesbezüglich, den String aanhand eines Pattern zu splitten (Thema RegEx?)

Kapische ?

Ach und noch was, Guten Morgen *Tasse Kaffee heb!*
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:07
Welche mysql-Version setzt du ein?
Markus Kinzler
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:09
Die 4er *kurz und knapp*

EDIT: nachgeschaut: 4.1.11
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:09
Ich hatte das schon verstanden, aber muss vielleicht etwas deutlicher werden. Es ist absolut unüblich die Folgenummer aus den bereits vergebenen Nummern der Kundentabelle abzuleiten. Man verwendet grundsätzlich einen unabhängigen Generator. Wenn der nicht verfügbar ist, dann kann man sich mit einer speziellen Tabelle behelfen, deren Tupel den Prefix und die zuletzt vergebene Nummer enthalten.

Soweit zu den Grundlagen, jetzt zu deinem Problem. Die Länge des Präfix ist doch bekannt:

Delphi-Quellcode:
function GetNext(s: String): String;
var
  next: Cardinal;
begin
  next := Succ(StrToInt(RightStr(s, NUM_LENGTH)));
  Result := Format('%s%.*d', [KDNR_PREFIX, NUM_LENGTH, next]));
end;
marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:13
Meine Frage nach der Version, bezog sich auf die Tatsache, das Mysql dann wohl auch Trigger kann aber im Allgemeinen sollte man Schlüssel als Integer ( autoinc; Sequence-gesteuert o.ä) oder als GUID nehmen, String ist nicht so optimal.
Markus Kinzler
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:14
Danke,

ich hätte es auch gern einfach gemacht;

Code:
Prefix -> (Aus der Config Tabelle)
KundenID -> (Kunden Tabelle @ UNIQUE & AUTO_INCREMENT @ DB)
Aber Kundenwünsche......
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:24
Suche dir einen anderen Kunden, Tobias. In einer Mehrbenutzerumgebung können bei deiner "kundenorientierten" Vorgehensweise Zugriffskonflikte entstehen - wenn beispielsweise zwei Benutzer den selben Schlüssel ermitteln und als PK speichern wollen. Der Kunde sollte sich auf die Formulierung seiner spezifischen Anforderungen aus der problem domain beschränken und nicht über programminterne Fragen nachdenken.

marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Fortlaufende Kundennummer

  Alt 22. Jun 2006, 07:28
Was ist noch alles vorgegeben, wäre es möglich das DBMS zu wechseln oder zumindest ein Upgrade auf MySQL 5? Am Besten auf eine Datenbank, die Generatoren/Sequences und Trigger unterstützt.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
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