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

Le
Gloops
Bonjour tout le monde,

Ma base me fait des misres pour excuter un DoCmd.GotoControl

Dans un premier temps, lorsqu'on me disait que le contrle n'existait
pas, et que je me retrouvais en mode arrt 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'excution =

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

nit, 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 mme dire qu=
e
a lui est compltement 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 contrle, qu'il faut mettre, ou celui=

du champ de la requte source du formulaire ? De toute manire, on ne=

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

C'est mme au point qu'on me refuse :

DoCmd.GotoControl Screen.ActiveForm(2).Name

En me disant qu'il n'y a pas de contrle qui s'appelle comme a, apr=
s
m'avoir trouv le nom quand mme. Fort, non ?


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

RecordsetClone. Quand mme, a serait bien de savoir, ne serait-ce
qu'histoire de mourir moins bte.


Une petite prcision : le bouton qui a ouvert le formulaire d'o est =

dclench le code, est dans un sous-formulaire de quatrime niveau,=
dans
le formulaire sur lequel je cherche dclencher un GotoControl. Le
contrle vis est dans le formulaire principal, j'ai pris soin de le =

rendre actif, au pralable, avec un SetFocus, et de vrifier le rs=
ultat
par Debug.Print Screen.ActiveControl.Name

Access 2003 SP2 sur Windows XP Pro SP2 2002,
base au format Access 2000.
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