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

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

8 réponses

Répondre au sujet
solilog 273 Messages postés samedi 13 juin 2009Date d'inscription 18 avril 2015 Dernière intervention - 22 juin 2013 à 08:06
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de solilog
solilog 273 Messages postés samedi 13 juin 2009Date d'inscription 18 avril 2015 Dernière intervention - 22 juin 2013 à 17:59
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de solilog
korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention - 22 juin 2013 à 20:50
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de korgis
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - 22 juin 2013 à 07:46
0
Utile
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
coeurblanc1351 - 22 juin 2013 à 15:47
0
Utile
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
pierrotk10d 101 Messages postés mardi 13 novembre 2007Date d'inscription 16 mars 2018 Dernière intervention - 22 juin 2013 à 17:51
0
Utile
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
solilog 273 Messages postés samedi 13 juin 2009Date d'inscription 18 avril 2015 Dernière intervention - 22 juin 2013 à 18:01
0
Utile
pierrotk10d,
Non j'ai testé ma fonction, elle marche bien.
solilog
Commenter la réponse de solilog
coeurblanc1351 - 22 juin 2013 à 21:52
0
Utile
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.