codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 2015
-
28 janv. 2008 à 14:17
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 2015
-
31 janv. 2008 à 08:37
Bonjour à tous,
je cherche comment générer une clé alphanumérique.
J'ai une table clients avec CLICOD et CLINOM.
Quand je saisi le nom dans un edit (ou dbedit je ne sais pas encore) j'aimerais arriver à générer une clé du type:
Saisi nom TOTO ALAIN
Clé générée: TOTOAL0008
C'est à dire prendre les 6 premiers caractères du nom et 4 chiffres s'affichant dès la saisie de la première lettre du nom.
Ces 4 chiffres s'incrémentant en fonction des 6 premier caractères existant
Par exemple:
S'il existe déja TOTOAL0008 le suivant devra être TOTOAL0009
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 29 janv. 2008 à 18:41
Oui, c'est normal, pour un champ incrémental, si un numéro saute, on ne peut pas le récupérer pour des raisons de sécurité.
Ce n'est pas forcément ce que tu veux..
Est-ce si important que tu n'es pas de trou dans ta numérotation ?
Un jour ou l'autre, tu seras peut-être amené à supprimer un enregistrement ce qui te feras aussi un trou..
Il faut que tu réfléchisses un peu à cet aspect avant de poursuivre ...................................................
.......................................................................................................................
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 20151 28 janv. 2008 à 16:56
Bonsoir,
j'ai créer les functions Min et Max. En fait c'est la fonction Min qu'il faut utiliser pour mon besoin.
Ceci dit il faudrait que j'arrive à gérer les espaces car le nom et le prénom sont saisie dans le même Edit.
TOTO ALAIN doit égaler TOTOAL
Tu sais faire?
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 29 janv. 2008 à 10:03
Je supprimerai le blanc et du coup le reste est simple :
procedure TForm1.Button1Click(Sender: TObject);
var
Str, Extr : string;
begin
Str := 'TOTO ALAIN';
Extr := copy(AnsiReplaceStr(Str, ' ',''),1,6);
ShowMessage(Extr);
end;
Pour la numérotation, je créerai un champ incrémental automatique comme çà on évacue, le souci du + 1..
et ensuite, il suffit de faire un champ calculé (non stocké)
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 20151 29 janv. 2008 à 10:15
Bonjour,
merci pour cette réponse, mais pourrais tu expliciter cette partie:
"Pour la numérotation, je créerai un champ incrémental automatique comme çà on évacue, le souci du + 1..
et ensuite, il suffit de faire un champ calculé (non stocké)"
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 29 janv. 2008 à 11:50
Un champ auto-incrémental se crée dans une table..
(je suppose que tu utilises BDE + paradox..)
Ta concanétation:
doit d'afficher à l'écran dans un Edit (et non un DBEdit)
Edit1.text := Extr + IntToStr(ChampIncr));
pour connaître le nombre d'enregistrements renvoyés par une requête stockée dans un TQuery :
Query1.RecordCount
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 20151 29 janv. 2008 à 12:59
Bonjour
Pour l'erreur c'est bon
Extr:=Copy(AnsiReplaceStr(Str,'',"),1,6);
Sur les premiers '' j'avais oublié de mettre un espace.
Excuse!
Par ailleurs, j'ai créer un champ AUTO pour créer ma structure AAAA0001
le problème est que si une saisie est annulée le numéro AUTO est quand même pris en compte et donc la prochaine saisie va sauter un numéro.