|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() |
Bonjour,
Je m'en remet à vous car je ne comprend pas pourquoi mon code ne fonctionne pas. J'ai un formulaire basé sur requête contenant 2 tables jointes (jointure externe FROM T_employes LEFT JOIN T_capacitesDefaut ). Lorsque je rajoute un nouvel enregistrement sur ce formulaire (cela insère un nouvel employé), j'exécute le code suivant : Code :
Si quelqu'un sait d'où vient cette bizarrerie, je lui en serais reconnaissant. Cordialement.
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!! |
||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 263 ![]() |
J'avoue ne pas pouvoir répondre directement à ta question "quelqu'un sait-il d'où vient cette birarrerie ?" mais ...
J'ai eu un problème à peu près identique à celui que tu rencontres (après un ajout d'enregistrement). J'ai moi aussi quelque peu galéré avant de trouver une procédure de contournement. Celle-ci est très loin d'être parfaite, et je suis conscient qu'il y a sans doute beaucoup plus simple, mais elle a eu l'avantage de me sortir d'affaire. Voici ce que j'ai fait : 1/ J'ai créé une variable publique à mon formulaire qui enregistre le n° d'enregistrement affiché (avant insertion) par un Me.CurrentRecord (xNumEnr = Me.CurrentRecord) 2/ Je fais ensuite mon insert et après ce dernier je me positionne sur le dernier enregistrement connu (Me.SelTop = xNumenr) 3/ Je passe ensuite la commande "DoCmd.GoToRecord , , acFirst" Je ne sais pas si c'est applicable à ton problème mais pour le mien, ça a marché... une piste peut-être Michel |
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() |
Merci pour ta réponse Orion mais ce n'est pas applicable dans mon cas. La requête sur laquelle se base mon formulaire (qui est en fait un sous-formulaire pour ceux qui n'auraient pas remarqué le Me.Parent ^^) est triée par ordre alphabétique. Donc quand j'ajoute un nouvel enregistrement, Me.CurrentRecord me renverrait 344 par exemple. Puis si je fais Me.requery, mon nouvel enregistrement ne serait plus 344 mais 143 par exemple...J'ai essayé tout un tas de solutions comme ci-dessous mais le formulaire reste toujours sur le dernier enregistrement
Code :
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!! |
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 263 ![]() |
Dans ce cas peut-être peux-tu simplement refaire ton "RecordSource" initial à la place de ton "DoCmd.GoToRecord , , acFirst"
|
|
|
00
|
|
|
#5 | ||
|
Membre éclairé
![]() |
Grrrr Même si, Après ma requête d'insertion, je fais :
Code :
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!! |
||
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 263 ![]() |
Faut pas vider le Recordsource (d'où les erreurs). Ce que je voulais dire c'était :
Me.recordsource = "Select....." (ton select initial utilisé quand tu rentres sur ton formulaire pour le charger) et ce, à la place de ton docmd.gotoRecord... suivi éventuellement d'un Me.requery. Ce qui provoquerait me semble-t-il un réaffichage complet dans ton formulaire, prenant en compte ton "ORDER BY" Michel |
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() |
J'ai bien compris ce que tu voulais dire
Pour être sûr malgré tout, j'ai qd même essayé ce que tu disais mais bien évidemment, ça fait la même chose...
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!! |
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() |
J'ai trouvé une solution !!! Après 4h de combat acharné avec VBE, Google, la FAQ, le forum, etc.
J'ai placé cette procédure sur l'évènement afterUpdate des champs txt_nom et txt_prenom : Code :
! lol Mais on est tellement content d'avoir trouvé ![]() Que de temps perdu pour ce genre de ![]() Merci quand même
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com