76julien
Messages postés58Date d'inscriptionlundi 14 janvier 2008StatutMembreDernière intervention 4 juin 2010
-
4 févr. 2008 à 17:21
76julien
Messages postés58Date d'inscriptionlundi 14 janvier 2008StatutMembreDernière intervention 4 juin 2010
-
7 févr. 2008 à 08:21
Salut tout le monde, j'ai fait du DELPHI dans mon jeune temps mais je ne sais pas comment peut-on incrémenter un numéro de série contenant des lettres et des chiffres. Je veux juste incrémenter les chiffres...les lettres ne changent pas..
Mon numéro de série est du type CD20080001
et je voudrais incrémenté du type
CD20080002
CD20080003
CD20080004
**********
**********
CD20080101
etc....
En effet je veux juste incrémenter les quatres derniers chiffres en rouge...
Merci de me laisser un petit message ou cas ou vous avez une solution...
a+
function CheckSerial(const Serial: TSerialNum): boolean;
begin
with Serial do result :(A 'C') and
(B = 'D') and
(C = 2008) and
((D >= 1) and (D <= 9999));
end;
76julien
Messages postés58Date d'inscriptionlundi 14 janvier 2008StatutMembreDernière intervention 4 juin 2010 6 févr. 2008 à 16:30
Oui je vois ce que tu veux dire le numéro de commande sera le même pour les trois commande...
C'est vrai que sa peut poser des problèmes, mais dans mon cas c'est en général le même utilisateur qui entrera les commandes donc pas possibilité de doublons...
Mais par curiosité et pour ma culture générale, j'aimerai bien connaitre la facon de gérer ce genre de probleme...
Si tu peux me poster un message concernant ceci sa serait sympa...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 6 févr. 2008 à 17:53
Si tu as un seul utilisateur, le problème est réglé..
et la situation est durable alors même pas besoin de serveur..tu colles le programme et la base le tout sur un seul poste.
Le Multi-Utilisateurs en réseau, c'est bcp + chaud..
tout dépend aussi du type de SGBD...
Il y a tellement de cas de figures possibles qu'il est difficile de tout décrire..
Mais juste par exemple dans ton cas :
En principe, on gérer les clés primaires par des champs auto-incrémentals
du coup, on se débarrasse de la gestion du + 1 et aussi des conflits de partage
(ce qui n'est pas rien)
C'est la machine qui fait tout.
Mais évidemement cela n'empêche nullement d'afficher un champ calculé qui
pourrait être une concaténation du style 'CD2008' + IntToStr(NumIncrement).
Mais tu as choisi de gérer une clé composite et dans le cas d'une mise en réseau.
il faudra attendre la fin de chaque validation avant d'en attaquer une autre.
Autrement dit il faudra faire une boucle d'attente qu'on peut traiter à la manière rude:
ok := 0;
cree := false;
while True do
begin
try
DataModule.Query1.Post;
cree := true;
break;
except
if ok = 3 then
begin
showmessage('Vous ne pouvez pas créer de fiche pour l'' instant, essayez plus tard.');
DataModule.Query1.Cancel;
break;
end;
ok := ok + 1;
end;
end;
76julien
Messages postés58Date d'inscriptionlundi 14 janvier 2008StatutMembreDernière intervention 4 juin 2010 7 févr. 2008 à 08:21
Salut cantador,
Merci pour l'info, je ne vais pas me servir de sa de suite mais je conserve la source pour plus tard (sa peut toujours servir ...) !!
Encore merci !!
@+ pour un nouveau pbm qui sait !!