Lunasoft
Messages postés75Date d'inscriptionsamedi 28 juin 2008StatutMembreDernière intervention16 août 2011
-
27 mai 2011 à 10:15
boudjaoui19
Messages postés9Date d'inscriptionjeudi 6 mars 2008StatutMembreDernière intervention19 septembre 2011
-
12 sept. 2011 à 15:53
Salut!
J'ai un petit problème de logique qui me passe un peu par la tête.
Je voulais faire une incrémentation controlée.
Que veux-je dire par là?
J'ai une table de trois champs: ID (key), Num_controle(Texte), Nom(caract).
Sur mon Form: deux textbox (tb_num_controle et tb_nom).
Au moment de la saisie de donnée, à chaque fois que j'enregistre la numérotation du champs ID qui est automatisée comme nous le savons tous.
Mais j'aimerai que le champ "Num_controle" aie une saisie manuelle (cela veut dire que je dois inserer seul le numéro consécutivement). Mais à une condition: si par exemple, le dernier numéro que j'ai introduit été 7, le prochain sera 8 à introduire. Mais si j'introduisais 9 par mégarde. Que j'ai un message m'avertissant que le suivant numéro ne pas celui-là.
voici ce que j'ai fait:
table1.Append;
table1.FieldByName('num_controle'):= tb_num_controle.text;
table1.FieldByName('nome'):= tb_nome.text;
table1.post;
if not table1.isEmpty then
begin
end else
showMessage('');
Je crois fermément que je suis en erreur dans la logique de ces codes. Prière de m'orienter.
Étudiant
Delphi le revolutionnaire, Delphi le Conquérant
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 30 mai 2011 à 11:34
Bonjour,
hé, il fait beau...c'est le moment du farniente..
dans ton cas, puisque tu souhaites gérer une deuxième incrémentation..
et qu'il n'est pas possible sous access d'en avoir deux.
il faut donc tester la saisie de ce champ :
Ce n'est pas bien compliqué..
On pourrait tester sur l'évènement OnChange du TEdit mais cela impliquerait que le numéro serait toujours un chiffre..
ou un nombre a deux chiffres..etc
procedure Valider;
var
stocode : integer
begin
table1.last;
stocode := StrToInt(table1.FieldByName('num_controle').Asstring);
table1.Append;
if StrToInt(edit1.text) = stocode + 1 then
table1.post
else
begin
showmessage('Le numéro n''est pas correct !');
table1.cancel;
Edit1.text := '';
Edit1.setfocus;
end;
end;
je n'ai pas testé..
et il y a d'autres possibilités :
création d'une erreur (si numéro incorrect) ou
utilisation des transactions
cantador
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lunasoft
Messages postés75Date d'inscriptionsamedi 28 juin 2008StatutMembreDernière intervention16 août 2011 10 juin 2011 à 23:33
Merci Cantador!
J'ai essayé les codes. Mais il se pose un petit problème.
Si dans la colonne "num_controle" était déjà introduit le chiffre 1. Lors de l'insértion du même chiffre 1. Il dit que: "le numéro n'est pas correct". Ça c'est déjà BON!. De même quand je le fais avec un chiffre beaucoup plus supérieur à 1 (par exemple 3). Il dit la même chose "le numéro n'est pas correct". C'est aussi BON!.
Mais quand j'introduit un chiffre beaucoup plus proche (par exemple 2). Il y a un message qui "Il n'est pas possible d'insérer une ligne vide. Il doit au moins avoir un chiffre defini".
Étudiant
Delphi le revolutionnaire, Delphi le Conquérant
boudjaoui19
Messages postés9Date d'inscriptionjeudi 6 mars 2008StatutMembreDernière intervention19 septembre 20114 12 sept. 2011 à 15:53
salut .... j'aimerie bien de m'aaider a propos ce problemme ..
j'ai un base de données dBase et je veur inserer un champ autoincrement personaliser comme:xxxx/mois/année
remarque xxx si le champs qui sera incrementer ..
svp aider mois