Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Une matricule à chaque nouvel enregistrement
#1
Bonjour la famille,

Me voici encore, toujours avec un nouveau problème, mais rassurez-vous, cette fois ce n'est pas trop compliqué je pense.
Je vous explose mon problème, je voudrais affecter une matricule de manière automatique à chaque noeuvel enregistrement. J'essaie d'expliquer ma pensée pour que chacun puisse pouvoir m'aider clairement : Je voudrais chaque fois que je vais cliquer sur OK (btn validant ma saisie) que le champ Matricule passe (par exemple de AGENT001 à AGENT002, puis à chaque OK, AGENT003, AGENT004....

Voici le bout de code que j'utilise:

Code :
chain est une chaîne
SI HNbEnr(AGENT)<10 ALORS
  chain="00000"
FIN
SI  HNbEnr(AGENT)>=10 ET  HNbEnr(AGENT)<99 ALORS
  chain="0000"
FIN
SI  HNbEnr(AGENT)>=100 ET  HNbEnr(AGENT)<999 ALORS
   chain="000"
FIN
SI  HNbEnr(AGENT)>=1000 ET  HNbEnr(AGENT)<9999 ALORS
  chain="00"
FIN
SI  HNbEnr(AGENT)>=10000 ET  HNbEnr(AGENT)<99999 ALORS
  chain="0"
FIN
SI  HNbEnr(AGENT)>=100000 ET  HNbEnr(AGENT)<999999 ALORS
  chain=""
FIN
   Matricule="AGENT"+chain+HNbEnr(AGENT)

Je voudrais donc ainsi, avoir cette matricule sans redémarrer la fenêtre. QUE FAIRE ?

Merci d'avance pour vos contributins.
[b][u]Claude ELENGA [/u][/b]:: L'humilité précède la gloire et l'orgueil la déchéance.
Répondre
#2
Code :
matricle = 1
numeriqueverschaine(matricule,"06d) -> "000001"

matricle = 127
numeriqueverschaine(matricule,"06d) -> "000127"
Répondre
#3
Bonjour,

En complément d'information, vous pouvez lire ce post :

http://windev.tunidev.net/forum-windev-1...t7498.html

Bon courage et bon dev !

Daniel.
Répondre
#4
J0r a écrit :
Code :
matricle = 1
numeriqueverschaine(matricule,"06d) -> "000001"

matricle = 127
numeriqueverschaine(matricule,"06d) -> "000127"


Bonjour J0r, je viens de lire ta réponse, ce que tu me propose est à faire manuellement ou peut être que je ne comprend pas ce que tu me propose, je vais essayre de t'expliquer ce que je veux exactement : J'ai une fenêtre FEN_ESSAI dans laquelle j'ai des champs Matricule (en affichage seule, et qui affiche automatiquement AGENT0001, au 1er lancement de FEN_ESSAI), Nom, Prénom, ..., un btnOK et btnFermer. Après avoir saisi les données, et lorsque je clique sur OK, il vide tous les champs et remplace AGENT0002 sans que j'ai à fermer FEN_ESSAI et relancer, je ne sais pas mais, JE M'EXCUSE VRAIMENT J0r, avec ce 2ème post, je pense avoir été un peu plus clair pour avoir par exemple un code qui me permettrait de me dépanner.

Merci pour ta réponse rapide, à bientôt.
[b][u]Claude ELENGA [/u][/b]:: L'humilité précède la gloire et l'orgueil la déchéance.
Répondre
#5
Daniel-Québec a écrit :Bonjour,

En complément d'information, vous pouvez lire ce post :

http://windev.tunidev.net/forum-windev-1...t7498.html

Bon courage et bon dev !

Daniel.


Bonjour Daniel, et merci pour ton lien, comme je l'ai dit dans mon post à J0r, je te demande de lire un peu sans abuser de ton temps, ce post et peut que les bonnes idées vont fusées. A bientôt mon brave. Big Grin Big Grin Big Grin
[b][u]Claude ELENGA [/u][/b]:: L'humilité précède la gloire et l'orgueil la déchéance.
Répondre
#6
Bonjour,

Je pense que tu n'as pas compris ce que j0r t'a proposé.
Il veut t'éviter d'écrire 15 lignes de code au lieu d'une.

Sur le clic du bouton

Code :
Matricule="AGENT"+numeriqueverschaine(HNbEnr(AGENT)+1,"06d)

Ceci est un exemple à adapter en fonction des besoins ...
Cordialement

Madsl@nD
Répondre
#7
Madsl@nd a écrit :Bonjour,

Je pense que tu n'as pas compris ce que j0r t'a proposé.
Il veut t'éviter d'écrire 15 lignes de code au lieu d'une.

Sur le clic du bouton

Code :
Matricule="AGENT"+numeriqueverschaine(HNbEnr(AGENT)+1,"06d)

Ceci est un exemple à adapter en fonction des besoins ...



Bonjour mon cher Madsl@nd, Comme je l'avais dit à J0r dans mon post,je ne l'avais vraiment pas compris. Merci beaucoup pour ton coup de pouce, je vais tester et adapter à mes besoins et je vous tiendrais informer à toi et J0r (à qui je présente encore mes vives excuses).

Cordialement et encore merci.
[b][u]Claude ELENGA [/u][/b]:: L'humilité précède la gloire et l'orgueil la déchéance.
Répondre
#8
Bonjour à tous,

Dans votre traitement, il y a quand même un risque dans le cas où vous avez des suppressions d'agent
de se retrouver avec le même numéro !

Ce n'est peut-être pas le cas....

Sinon, il vaut mieux aller rechercher le numéro du dernier et l'incrémenter.

Bon dev.
Bon dev.
Répondre
#9
Bonjour,

herve63 a raison
si vous basez le N° sur les N° d'enregistrements il peut y avoir un problème lors des reindexations

la suppression d'un enregistrement ne fera pas évoluer le N° d'enr car l'enreg supprimé reste dans le fichier en rayé ou supprimé jusqu'a une reindexation avec compactage qui elle supprimera physiquement les enreg et recalculera les n° d'enreg donc dephasera le N° avec le code formaté pour l'identifiant et on peut avoir un doublon

vous avez deux solutions :

1 - stocker le dernier N° prix dans un autre fichier (paramètres) en général c'est ce qui est utilisé car dans un traitement on lit la table des N° on ajoute 1 et on enregistre les paramètres , dans le même temps on insère l'enreg : le tout en blocant l'enregistrement des paramètres pour éviter la prise par un autre

2 - faire un traitement qui prennent le dernier N° dans le fichier et ajoute 1 et insère le nouveau
mais la attention comme votre identifiant est une chaine le fait de lire sur l'identifiant n'est pas suffisant pour les avoir dans l'ordre voulu sauf si comme on vous l'a donné les N° sont complétés avec des 0 car en chaine 127 est plus petit que 21 ! par contre 000127 est plus grand que 000021. idem aussi pour le multi poste : faire cela en blocant pour éviter qu'un autre user arrive a prendre le même numéro car tant que l'enregistrement n'est pas inséré le N° dispo est toujours le même

voila en tout cas évitez de basé vos ID sur le N° d'enreg qui est contrôlé par windev et non par le développeur


.
[b]une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...
[/b]
Bon dev
@+

[b]Firetox[/b]
[url]http://www.Emidev.fr[/url]

[PS] je ne repond pas au message privé[/PS]
Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  selection d'une ligne de la table à chaque traitement kamdem 5 1,346 02-10-2012, 03:47 PM
Dernier message: Samifred
  NOUVEL ENREGISTREMENT DANS LA COMBO ACHOUR SAID 2 968 01-02-2012, 05:03 PM
Dernier message: ACHOUR SAID
  Changement de plan a chaque changement d'une boite a outils patric1014 4 1,315 10-06-2011, 03:32 PM
Dernier message: Samifred
  [RESOLU]comptabiliser nombre d'occurence de chaque caractere answer27 8 4,359 31-05-2011, 10:18 AM
Dernier message: emidev
  [RESOLU] NUMEROTER CHAQUE LIGNE D'UN ETAT sabson 3 2,275 11-03-2011, 11:18 AM
Dernier message: sabson
  probleme nouvel enregistrement anelinette 2 1,281 05-11-2010, 12:05 AM
Dernier message: TheDuke
  Ouvrir une table sur un nouvel enregistrement luckyluke54 1 765 19-07-2010, 07:39 PM
Dernier message: Daniel-Québec
  position sur le nouvel enregistrement dans une table memoire beruz 0 982 18-01-2010, 12:17 PM
Dernier message: beruz
  probleme nouvel enregistement dans une table gregcoco 1 940 28-06-2009, 10:22 AM
Dernier message: morodashi
  Insérer un executable et programmer l'execution chaque jour kinbou 6 1,458 29-09-2008, 09:45 AM
Dernier message: helmi

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)