Bonjour;
Voilà je possède une table Client dont la Clé est en 4 position de typer String,
je voudrai insérer automatiquemet durant la saisie dans un Edit.Text des zeros au debut de chaque Clé si la Clé est < à 4 Position.
Exp: 0030 au lieu de 30
Bonjour;
Voilà je possède une table Client dont la Clé est en 4 position de typer String,
je voudrai insérer automatiquemet durant la saisie dans un Edit.Text des zeros au debut de chaque Clé si la Clé est < à 4 Position.
Exp: 0030 au lieu de 30
dois-je conclure que la clé sera toujours numérique ?
si oui facile
devrait faire l'affaire, attention à l'erreur de conversion sinon !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part Edit1.Text:=format('%.4d',strtoint(Edit1.Text))
une autre solution est d'utiliser un tmaskEdit pour forcer l'utilisateur à entrer les zeros, de plus cela permet de verifier que ce n'est que des chiffres
ta cle est tjrs convertible en interger ... je me demande pk mettre un champ string dans le cas ou ta cle ne contiendra que des chiffres ... vu que tu n'as qu'a faire la convertion donnée au dessus a chaque affichage
au passage j'espere que ton champ clé c'est pas ta primary key parce que c pas optimisé du tout
bein si ta clé est Alpha numérique voici un code que j'ai créer pour une clé 3 lettres est 6 chiffres si cela te convient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 function Aj_code(table:Ttable;fields,symb:string):string; //Symb:sont les trois lettres carateristique var CO,CL,CO1: string; j,l,m,k: Integer; i,max:integer; begin max:=0; if table.IsEmpty then begin result:=symb+'000001'; end else begin CL:=''; table.First; while not table.Eof do begin CO1:=''; for j:=4 to length(table.FieldByName(fields).AsString) do //J:=4 car le symb est composé de 3 lettres vous pouvez bien sur changer! CO1:=Co1+table.FieldByName(fields).AsString[j]; if strtoint(co1)> max then max:=strtoint(co1); table.Next; end; for m:=1 to 3 do // de même m de 1 à 3 car 3 lettres CL:= CL+table.FieldByName(fields).AsString[m]; i:=max+1; CO:=co+inttostr(i); L:=6- length(CO);// L=6 car le code est sur 6 entiers for k:=1 to L Do CO:='0'+CO; result:=Symb+CO; end; end;
une mini idée:dans onleave de TEdit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 begin while length(edit1.text)<4 do edit1.text:='0'+edit1.text;
pour mes besoin j'ai utilisé cette function.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Function AjouterZero(Valeur:String):String; begin case Length(Valeur) Of 1: Result :='000'+Valeur; 2: Result :='00'+Valeur; 3: Result :='0'+Valeur; 4: Result :=Valeur; end; end;
Salut
Personnelement je me suis écrit cette petite fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function LPad(AText: string; ALength: Integer; AFillChar: Char): string; begin if (Length(AText) >= ALength) or (ALength < 1) then result := AText else result := StringOfChar(AFillChar, ALength - Length(AText)) + AText; end;
Et s'utilise comme ceci:
AText est la chaine à traiter
ALength est la longueur de la chaine retournée
AFillChar est le caractère de remplissage
@+ Claudius
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(LPad(Edit1.Text, 4, '0')); end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager