Une incrémentation controlée

Lunasoft Messages postés 75 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 16 août 2011 - 27 mai 2011 à 10:15
boudjaoui19 Messages postés 9 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 19 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.last;
tb_num_controle.text:= table1.FieldByName('num_controle').Asstring;

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

7 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
27 mai 2011 à 10:28
Bonjour,
quelle est ta base de données ?
et quel est le mode de saisie, locale ou en réseau ?
cantador
0
Lunasoft Messages postés 75 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 16 août 2011
27 mai 2011 à 10:47
C'est juste une petite base de donnée Access. Le mode de saisie est local (pas sur réseau).

Étudiant
Delphi le revolutionnaire, Delphi le Conquérant
0
Lunasoft Messages postés 75 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 16 août 2011
28 mai 2011 à 23:37
Salut!
Vraiment personne ne peut me venir en aide...


Étudiant
Delphi le revolutionnaire, Delphi le Conquérant
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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
0

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

Posez votre question
Lunasoft Messages postés 75 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 16 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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 juin 2011 à 09:34
"Il n'est pas possible d'insérer une ligne vide. Il doit au moins avoir un chiffre defini".

ta clé primaire reste vide je pense..(il suffit de tester..)
Elle doit être déclarée en auto-incrémentale.

cantador
0
boudjaoui19 Messages postés 9 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 19 septembre 2011 4
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
0
Rejoignez-nous