Incrémentation composé chiffre et lettre automatique

Résolu
coeurblanc1351 - 22 juin 2013 à 01:18
 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...

8 réponses

solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
22 juin 2013 à 08:06
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
3
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
22 juin 2013 à 17:59
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
3
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
22 juin 2013 à 20:50
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 !
3
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
22 juin 2013 à 07:46
Salut
Donc ça ne laisse que 26 lignes par an (14A à 14Z)
cela me parait peu pour une compta non !


Dubois77
site perso
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coeurblanc1351
22 juin 2013 à 15:47
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
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
22 juin 2013 à 17:51
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
0
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
22 juin 2013 à 18:01
pierrotk10d,
Non j'ai testé ma fonction, elle marche bien.
solilog
0
coeurblanc1351
22 juin 2013 à 21:52
salut

merci à tous et surtout solilog, vraiment je te tire chapeau,
soyer un peut patient avec moi,j'aime bien programmé avec delphi mais....
0
Rejoignez-nous