Incrémentation composé chiffre et lettre automatique [Résolu]

- - Dernière réponse :  coeurblanc1351 - 22 juin 2013 à 21:52
salut

j ai une table (cota) qui contient les champs suivant: num_conta, nom_com,date_conta,periode_cota...
mon souci c est comment faire une incrémentation automatique a chaque fois je clique sur nouveau comme suite: 13A 13B 13C 13D....
sachant que 13 change avec la date actuel exemple si on est en 2014 le 1er enregistrement de cette année sera: 14A 2eme 14B 3eme 14C...
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
3
Merci
Bonjour tous,

Oui Dubois, çà fait peu de codes, mais qui sait, il n'a peut-être que très peu de cotations dans l'année. Cà devrait marcher ainsi:
function incremCode(Old_Code:shortstring) : shortstring;
var new_yy : string[2];
    old_a  : char;
begin
   new_yy := formatdatetime('yy', date);
   old_a  := Old_Code[3];
   if new_yy <> copy( Old_Code, 1, 2) then
      result := new_yy+'A'
   else
      result := new_yy + chr(byte(old_a) +1);
end;


Voilà, c'était le petit code du café du matin.
Bon week-end à tous.

solilog

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de solilog
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
3
Merci
coeurblanc1351
Et pis quoi encore, tu veux aussi qu'on te fasse tout ton programme ?
Faut bosser mon gars. Bon, supposons que ta table s'appelle tbCota, dans la proc OnClick ton bouton:
var New_Code = shortstring;
begin
   tbCota.last;   // aller au dernier enregistrement
   New_Code := InCremCode( tbCota.fieldbyname('NumCota').asstring); // calcul de nouveau code
   tbCota.append; // nouvel enregistrement
   tbCota.fieldbyname('NumCota').asstring := New_Code;  // on y colle le code calculé
end;
 

Maintenant tu dois apprendre à bosser seul, moi je m'arrête là.
Bon courage.
solilog

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de solilog
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
3
Merci
Les 2 codes sont corrects et fonctionnent puisque si la condition :
new_yy <> Copy(Old_Code, 1, 2)

est remplie, "else" signifie forcément que :
new_yy = Copy(Old_Code, 1, 2)

donc on peut écrire (c'est mieux puisque new_yy est déjà calculé) :
Result := new_yy + Chr(Byte(old_a) + 1);

ou alors (c'est moins bien puisqu'il faut recalculer le premier terme de l'addition) :
Result := Copy(Old_Code, 1, 2) + Chr(Byte(old_a) + 1);


Conclusion : il vaut mieux coder à l'heure du p'tit déj qu'à celle du goûter !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de korgis
Messages postés
692
Date d'inscription
jeudi 17 avril 2008
Dernière intervention
14 septembre 2018
0
Merci
Salut
Donc ça ne laisse que 26 lignes par an (14A à 14Z)
cela me parait peu pour une compta non !


Dubois77
site perso
Commenter la réponse de dubois77
0
Merci
salut

merci solilog, mais malheureusement puisque je suis débutant en programmation je ne sais pas comment transformé cette fonction pour que je clique sur le bouton Nouveau j'aurais le code afficher sur un dbedit
Commenter la réponse de coeurblanc1351
Messages postés
102
Date d'inscription
mardi 13 novembre 2007
Dernière intervention
19 août 2018
0
Merci
Bonjour,
Par hasard ça ne serait pas


if new_yy <> copy( Old_Code, 1, 2) then // Nouvelle année
result := new_yy+'A'
else // Meme année
result := Copy(Old_Code,1,2) + chr(byte(old_a) +1);



pierrot
Commenter la réponse de pierrotk10d
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
0
Merci
pierrotk10d,
Non j'ai testé ma fonction, elle marche bien.
solilog
Commenter la réponse de solilog
0
Merci
salut

merci à tous et surtout solilog, vraiment je te tire chapeau,
soyer un peut patient avec moi,j'aime bien programmé avec delphi mais....
Commenter la réponse de coeurblanc1351

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.