Une incrémentation controlée

Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011
- - Dernière réponse : 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
Afficher la suite 

7 réponses

Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Bonjour,
quelle est ta base de données ?
et quel est le mode de saisie, locale ou en réseau ?
cantador
Commenter la réponse de cs_cantador
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011
0
Merci
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
Commenter la réponse de Lunasoft
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011
0
Merci
Salut!
Vraiment personne ne peut me venir en aide...


Étudiant
Delphi le revolutionnaire, Delphi le Conquérant
Commenter la réponse de Lunasoft
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
75
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
16 août 2011
0
Merci
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
Commenter la réponse de Lunasoft
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
"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
Commenter la réponse de cs_cantador
Messages postés
9
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
19 septembre 2011
4
0
Merci
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
Commenter la réponse de boudjaoui19