|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Bonjour,
Dans une table Firebird (GDB) j'ai un champ auto appelé LIV_ID. Ce champ qui commence à 100 me sert de numéro de bon de commande. Quand je saisi un bon de commande, tous les champs se mettent bien dans mon DBGrid sauf mon numéro (LIV_ID) qui ne s'affiche que lorsque je relance mon prog. Ce que je cherche à faire c'est à l'afficher dès la saisie pour le visualiser. Pour me connecter à ma base j'utilise TIBDataBase et pour mettre à jour la table un TIBDataSet avec INSERTSQL, ModifySQL et DeleteSQL renseignés. Comment je peux faire? D'avance merci Codial |
|
|
00
|
|
|
#2 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Salut,
Sur ton FIBDataSet renseigne la propriété GeneratorField. Tu lui associes le Générateur qui incremente ton champ auto, et tu précises quand tu veux y faire appel (à l'insertion ou avant le post). [edit] C'est une question que j'aurais posé dans le forum Delphi/Bases de données puisque qu'il s'agit d'un composant Delphi. [/edit] @+
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Bonjour,
merci beaucoup pour la réponse, celà fonctionne avec "Lors de la validation". Cordialement Codial |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Bonjour,
je reviens car je viens de m'apercevoir que maintenant mon champ auto s'incrémente de 2 ? Or j'aimerai qu'il ne s'incrémente que de 1 |
|
|
00
|
|
|
#5 | ||
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Re,
Modifie ton trigger before insert sur ta table, et appelle le GEN_ID uniquement si ta clé est NULL. Code :
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
||
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Re,
c'est ce que j'ai fait: Code :
|
||
|
|
00
|
|
|
#7 | |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Citation:
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
que ça s'incrémente de 2
|
|
|
00
|
|
|
#9 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Jusqu'à présent lorsque tu postais ton enregistrement la valeur de LIV_ID était à NULL. Mais à présent tu appelles le générateur depuis l'application qui te fournit la valeur de ta clé.
Donc au moment du Post (dans ton appli) la valeur de LIV_ID est déjà renseignée. C'est pour cela qu'il faut poser cette condition dans ton trigger (if new.LIV_ID is NULL) pour éviter que le générateur ne soit appelé un 2° fois. Voiloù. En fait c'est tout bête ! @+
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
re,
comme je l'ai dit plus haut ce test existe dans mon trigger Code :
|
||
|
|
00
|
|
|
#11 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Ah OK la condition existait déjà !
Qu'est qui est inscrit pour la propriété GeneratorField: C'est ça ?
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
oui c'est ça
|
|
|
00
|
|
|
#13 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Ah c'est bizarre !
Nul part ailleurs tu ne fais appel au générateur, ou modifie la valeur de LIV_ID dans ton prog ?
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#14 | ||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Non, nul par ailleurs, dans mon InsertSQL j'ai:
Code :
|
||
|
|
00
|
|
|
#15 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Bon ben j'ai du mal à comprendre !
Je viens de faire un petit test: Un IBDataSet, avec GeneratorField de renseigné, je saisi dans un DBGrid et tout fonctionne correctement. Mes clés se suivent. A moins que... Est-ce que tu utilises des champs persistents, et si oui est-ce la propriété AutoGenerateValue du champ LIV_ID est bien à arNone (et non arAutoInc) ?
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
il y un trigger d'affecté à l'ID ?
|
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
j'ai vérifié mon champ persistant LIV_ID est bien sur GeneratorField = arNone .
Ceci dit j'ai recréé mon champ LIV_ID non plus en auto mais en integer avec GeneratorField renseigné et là quand je saisi, j'ai bien mes numéros qui se suivent. Celà me pose une autre question: Quand j'annule une saisie la numérotation tient compte du numéro annulé, existe il une méthode pour repartir à partir du dernier numéro saisi plus un ? |
|
|
00
|
|
|
#18 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Si tu appelles le GEN_ID avant le post (lors de la validation) normalement si tu annules ta saisie avant de poster, l'incrément n'est modifié (contrairement à 'sur le nouvel enregistrement').
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 285 ![]() |
Bonsoir,
je te remercie pour pour tes réponses qui m'ont bien éclairées, effectivement j'avais mis le GeneratorField sur ' Sur le nouvel enregistrement' qui avait l'avantage de visualiser dès la saisie le numéro du bon (le champ incrémenté). Maintenant, sur 'lors de la validation' il s'affiche après. Mais bon ça me convient. Encore merci pour ta patience. Cordialement Codial |
|
|
00
|
|
|
#20 | |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 757 ![]() |
Citation:
@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com