GotoControl : quoi c'est qu'c' truc ?

Le
Gloops
Bonjour tout le monde,

Ma base me fait des misères pour exécuter un DoCmd.GotoControl

Dans un premier temps, lorsqu'on me disait que le contrôle n'existait
pas, et que je me retrouvais en mode arrêt dans le code, je n'avais qu'=
à
appuyer sur F5 et comme par magie on le retrouvait tout de suite, la
fantaisie étant reproductible à volonté.

Alors, je me suis dit que le fait qu'un code soit en cours d'exécution =

pouvait mettre la zizanie, et j'ai reporté la suite à Form_Timer. Ben=

niët, c'est pareil.

Le plus étrange est que maintenant on me dit qu'il n'y a pas de champ
nommé comme cela dans le jeu d'enregistrements sous-jacent, or l'aide d=
e
GotoControl ne parle pas du tout d'enregistrement, on peut même dire qu=
e
ça lui est complètement étranger : elle parle bien de nom de contrô=
le,
dans un formulaire, pas dans un jeu d'enregistrements.

Alors finalement, c'est le nom du contrôle, qu'il faut mettre, ou celui=

du champ de la requête source du formulaire ? De toute manière, on ne=

veut ni de l'un ni de l'autre.

C'est même au point qu'on me refuse :

DoCmd.GotoControl Screen.ActiveForm(2).Name

En me disant qu'il n'y a pas de contrôle qui s'appelle comme ça, aprè=
s
m'avoir trouvé le nom quand même. Fort, non ?


Je finis pas laisser tomber, et à la place du FindRecord, passer par le=

RecordsetClone. Quand même, ça serait bien de savoir, ne serait-ce
qu'histoire de mourir moins bête.


Une petite précision : le bouton qui a ouvert le formulaire d'où est =

déclenché le code, est dans un sous-formulaire de quatrième niveau,=
dans
le formulaire sur lequel je cherche à déclencher un GotoControl. Le
contrôle visé est dans le formulaire principal, j'ai pris soin de le =

rendre actif, au préalable, avec un SetFocus, et de vérifier le rés=
ultat
par Debug.Print Screen.ActiveControl.Name

Access 2003 SP2 sur Windows XP Pro SP2 2002,
base au format Access 2000.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
C15
Le #6376421
Bonjour,

Et DoCmd.GotoControl "mon controle", cela ne marche pas ?
en prenant la précaution que le nom de ton contrôle dans ton formulaire soit
différent du nom du champ de ta source.

A+

C15


"Gloops"
Bonjour tout le monde,

Ma base me fait des misères pour exécuter un DoCmd.GotoControl

Dans un premier temps, lorsqu'on me disait que le contrôle n'existait
pas, et que je me retrouvais en mode arrêt dans le code, je n'avais qu'à
appuyer sur F5 et comme par magie on le retrouvait tout de suite, la
fantaisie étant reproductible à volonté.

Alors, je me suis dit que le fait qu'un code soit en cours d'exécution
pouvait mettre la zizanie, et j'ai reporté la suite à Form_Timer. Ben
niët, c'est pareil.

Le plus étrange est que maintenant on me dit qu'il n'y a pas de champ
nommé comme cela dans le jeu d'enregistrements sous-jacent, or l'aide de
GotoControl ne parle pas du tout d'enregistrement, on peut même dire que
ça lui est complètement étranger : elle parle bien de nom de contrôle,
dans un formulaire, pas dans un jeu d'enregistrements.

Alors finalement, c'est le nom du contrôle, qu'il faut mettre, ou celui
du champ de la requête source du formulaire ? De toute manière, on ne
veut ni de l'un ni de l'autre.

C'est même au point qu'on me refuse :

DoCmd.GotoControl Screen.ActiveForm(2).Name

En me disant qu'il n'y a pas de contrôle qui s'appelle comme ça, après
m'avoir trouvé le nom quand même. Fort, non ?


Je finis pas laisser tomber, et à la place du FindRecord, passer par le
RecordsetClone. Quand même, ça serait bien de savoir, ne serait-ce
qu'histoire de mourir moins bête.


Une petite précision : le bouton qui a ouvert le formulaire d'où est
déclenché le code, est dans un sous-formulaire de quatrième niveau, dans
le formulaire sur lequel je cherche à déclencher un GotoControl. Le
contrôle visé est dans le formulaire principal, j'ai pris soin de le
rendre actif, au préalable, avec un SetFocus, et de vérifier le résultat
par Debug.Print Screen.ActiveControl.Name

Access 2003 SP2 sur Windows XP Pro SP2 2002,
base au format Access 2000.
Gloops
Le #6375011
C15 a écrit, le 26/11/2007 06:12 :
Bonjour,

Et DoCmd.GotoControl "mon controle", cela ne marche pas ?
en prenant la précaution que le nom de ton contrôle dans ton formul aire soit
différent du nom du champ de ta source.

A+

C15



Tu penses bien que j'ai essayé ça.
Il y a un truc qui m'a échappé, il me semblait que même à suppose r que
j'aie commis une erreur, le message ne s'appliquait pas.
J'ai essayé aussi bien le nom du champ que celui du contrôle.

Je crains que cette affaire demeure mystérieuse ; merci quand même
d'avoir essayé.

Je me demande si, au contraire, ça n'aurait pas marché mieux avec un
contrôle qui porte le même nom que le champ.

Pour finir, je n'ai pas essayé car j'ai réalisé que l'emploi de cet te
instruction ne pouvait de toute manière pas s'appliquer pour ce que je
veux faire, puisque j'ai fini par interdire l'ajout d'enregistrement à
partir du sous-formulaire, donc la zone réservée à ce sous-formulai re
est remplacée par un rectangle bleu si aucun enregistrement n'existe
déjà dans la table du sous-formulaire, pour l'enregistrement au-dessu s.

Du coup ça m'a rafraîchi les idées. Quand on a plusieurs
sous-formulaires imbriqués et que les enregistrements doivent être cr éés
simultanément, qu'il faut donc interdire la création par le formulair e,
pas de GotoControl, mais plutôt quelque chose du style

Set Rs = Qdf.OpenRecordset()

Rs.AddNew
Rs!UnChamp = UneValeur
memClef = Rs!LaClef 'surtout si NuméroAuto
Rs.Update
Rs.Close

Me.Requery ' Très important ;)

Set Rs = Me.RecordsetClone
Rs.FindFirst("LaClef = " & memClef)
Me.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing

et je dis "du style", parce qu'il faut jouer à ça sur plusieurs table s
liées entre elles, donc avec report de clef externe d'un enregistrement
créé sur un autre.

Et pour finir, ça marche.

Publicité
Poster une réponse
Anonyme