Access : passage de valeurs
bob_eponge
Messages postés
262
Statut
Membre
-
zenon Messages postés 729 Statut Membre -
zenon Messages postés 729 Statut Membre -
Bonjour,
le pb c'est qu'il faut que je passe le n°id du formulaire "identification" au n°id du menu (formulaire switchboard2).
voici le code de mon formulaire "identification"
et voici le code de mon menu (formulaire Switchboard2)
j'ai vérifier la valeur dans openArgs, c'est la bonne ... mais il bugge au niveau du else:
et la valeur ne passe pas dans Me.[n°id]
Can you help me please ?!
merci
le pb c'est qu'il faut que je passe le n°id du formulaire "identification" au n°id du menu (formulaire switchboard2).
voici le code de mon formulaire "identification"
Private Sub Menu_visite_Click() Application.DoCmd.OpenForm "Switchboard2", , , , acFormAdd, , Me.[n°id] On Error GoTo Err_Menu_visite_Click Dim stDocName As String stDocName = "Menu_visites" DoCmd.RunMacro stDocName Exit_Menu_visite_Click: Exit Sub Err_Menu_visite_Click: MsgBox Err.Description Resume Exit_Menu_visite_Click End Sub
et voici le code de mon menu (formulaire Switchboard2)
Private Sub Form_Open(Cancel As Integer) ' Minimize the database window and initialize the form. ' Move to the switchboard page that is marked as the default. Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' " Me.FilterOn = True If IsNull(Me.OpenArgs) Then 'rien à faire Else Me.[n°id] = CLng(Me.OpenArgs) End If End Sub
j'ai vérifier la valeur dans openArgs, c'est la bonne ... mais il bugge au niveau du else:
Me.[n°id] = CLng(Me.OpenArgs)
et la valeur ne passe pas dans Me.[n°id]
Can you help me please ?!
merci
5 réponses
Salut,
Je pense que tu te compliques la vie inutilement:
Si je comprends bien tu veux ouvrir le Form Switchboard2 en mode ajout et attribuer le N°ID récupéré du form sur lequel se trouve ton bouton pour l'ajouter au nouvel enregistrement de Switchboard2?
DoCmd.OpenForm "Switchboard2", , , , acFormAdd
L'argument Me.[n°id] est inutile puisque par définition tu es sur un nouvel enregistrement...
Pour ajouter la valeur Id:
Forms!Switchboard2!N°id=Me!N°id
Si tu veux exécuter une macro tu peux t'y référer directement sans déclarer de variable comme l'aide le propose toujours:
DoCmd.RunMacro "NomDeLaMacro"
Personnellement, je préfère exécuter le code directement...
Je ne comprends pas ce que tu veux faire avec la deuxième partie de ton code. (jamais entendu parler de Clng())
D'autre part, le terme OpenArg ne fonctionne pas tel quel mais tu dois ajouter les arguments que tu veux voir appliquer.
Je pense que tu te compliques la vie inutilement:
Si je comprends bien tu veux ouvrir le Form Switchboard2 en mode ajout et attribuer le N°ID récupéré du form sur lequel se trouve ton bouton pour l'ajouter au nouvel enregistrement de Switchboard2?
DoCmd.OpenForm "Switchboard2", , , , acFormAdd
L'argument Me.[n°id] est inutile puisque par définition tu es sur un nouvel enregistrement...
Pour ajouter la valeur Id:
Forms!Switchboard2!N°id=Me!N°id
Si tu veux exécuter une macro tu peux t'y référer directement sans déclarer de variable comme l'aide le propose toujours:
DoCmd.RunMacro "NomDeLaMacro"
Personnellement, je préfère exécuter le code directement...
Je ne comprends pas ce que tu veux faire avec la deuxième partie de ton code. (jamais entendu parler de Clng())
D'autre part, le terme OpenArg ne fonctionne pas tel quel mais tu dois ajouter les arguments que tu veux voir appliquer.
Sur ouverture de ton Form accueil, tu peux mettre le N°id dans un champ texte indépendant, par exemple et y faire référence lorsque tu ouvres tes autres formulaires.
Pour ça il suffit soit sur ouverture du Form, soit sur clic d'un bouton de commande du form identification d'ajouter
NomDuChampTexte = Forms!Identification!N°id
puis tu ajoutes le code sur clic dans un bouton de commande du Form accueil:
DoCmd.OpenForm "NomDuForm",,,AcFormAdd
Forms!NomDuForm!N°id = Forms!FormAccueil!NomDuChampTexte
Maintenant, il faut être sûr que l'utilisateur ne peut passer par le Form accueil que s'il doit ajouter un enregistrement puisque à chaque ouverture, tu vas ajouter un enregistrement...
Ne serait-ce pas plus simple d'appeler ces formulaires directement à partir du Form identification?
Pour ça il suffit soit sur ouverture du Form, soit sur clic d'un bouton de commande du form identification d'ajouter
NomDuChampTexte = Forms!Identification!N°id
puis tu ajoutes le code sur clic dans un bouton de commande du Form accueil:
DoCmd.OpenForm "NomDuForm",,,AcFormAdd
Forms!NomDuForm!N°id = Forms!FormAccueil!NomDuChampTexte
Maintenant, il faut être sûr que l'utilisateur ne peut passer par le Form accueil que s'il doit ajouter un enregistrement puisque à chaque ouverture, tu vas ajouter un enregistrement...
Ne serait-ce pas plus simple d'appeler ces formulaires directement à partir du Form identification?
merci pour la réponse !!
A ta question je répondrais "c'est pas faux !".
j'avoue que je n'avais pas pensé à çà ... je peux le faire en incluant sur mon form identification des boutons clic qui vont directement sur les formulaires ?!
je vais tenter çà, effectivement je pense que çà doit être plus simple ?!
j'essaie et je te tiens au courant !
encore merci
A ta question je répondrais "c'est pas faux !".
j'avoue que je n'avais pas pensé à çà ... je peux le faire en incluant sur mon form identification des boutons clic qui vont directement sur les formulaires ?!
je vais tenter çà, effectivement je pense que çà doit être plus simple ?!
j'essaie et je te tiens au courant !
encore merci
Il y a aussi la possibilité du ou des sous-formulaires.
Avec des relations 1-n et en paramétrant les champs père et fils le N°id peut être ajouté automatiquement par access et les sous -formulaires sont triés automatiquement.
On peut appeler un ss formulaire par un bouton (le plus simple pour commencer serait de les construire avec l'assistant, ce qui n'empêche pas de les modifier par la suite).
Avec des relations 1-n et en paramétrant les champs père et fils le N°id peut être ajouté automatiquement par access et les sous -formulaires sont triés automatiquement.
On peut appeler un ss formulaire par un bouton (le plus simple pour commencer serait de les construire avec l'assistant, ce qui n'empêche pas de les modifier par la suite).
Bonjour,
Pour donner suite :
1.) Ouvrir le formulaire en mode édition
2.) Sélectionner le bouton
3.) Menu //Affichage / Propriété / Onglet Évènement
4.) Choisir la ligne [ Sur clic ... ] / Sélectionner [ Procédure événementielle]
5.) Cliquer sur les trois petits points, vous arriverez directement dessus :-)
Lupin
Pour donner suite :
1.) Ouvrir le formulaire en mode édition
2.) Sélectionner le bouton
3.) Menu //Affichage / Propriété / Onglet Évènement
4.) Choisir la ligne [ Sur clic ... ] / Sélectionner [ Procédure événementielle]
5.) Cliquer sur les trois petits points, vous arriverez directement dessus :-)
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour ce qui concerne l'assistant:
Tes tables connexes doivent comporter une référence (clé externe, au format entier long) à la clé primaire de ta table identification et tu devrais établir une relation entre ces tables (probablement 1-n) (ça tu le sais déjà puisque tu essaies d'inclure la valeur de la clé dans les autres tables).
Choisis "créer un formulaire avec l'assistant".
La première boite de dialogue permet de sélectionner les champs que tu veux avoir dans le formulaire mais aussi plusieurs tables. C'est là qu'access va permettre de créer automatiquement les paramètres qui vont lier les tables et permettre la mise à jour automatique des clés externes.
Les autres boites de dialogue sont moins importantes. Elles concernent la présentation (tableau, feuille de données...) qu'on peut modifier ensuite mais elles permettent aussi de choisir des sous-formulaires ou des formulaires dépendants appelés par des boutons de commande.
Tu n'obtiendras surement pas exactement ce que tu recherches mais la structure sera là et tu pourras voir comment ça marche pour être à même de le faire sans l'assitant par la suite.
Tu verras qu'avec ce système, il n'est pas nécessaire de définir soi-même la valeur de la clé externe mais qu'Access l'ajoute automatiquement et trie les enregistrement existants pour n'afficher que ceux qui sont liés à l'enregistrement actif du formulaire principal...
Tes tables connexes doivent comporter une référence (clé externe, au format entier long) à la clé primaire de ta table identification et tu devrais établir une relation entre ces tables (probablement 1-n) (ça tu le sais déjà puisque tu essaies d'inclure la valeur de la clé dans les autres tables).
Choisis "créer un formulaire avec l'assistant".
La première boite de dialogue permet de sélectionner les champs que tu veux avoir dans le formulaire mais aussi plusieurs tables. C'est là qu'access va permettre de créer automatiquement les paramètres qui vont lier les tables et permettre la mise à jour automatique des clés externes.
Les autres boites de dialogue sont moins importantes. Elles concernent la présentation (tableau, feuille de données...) qu'on peut modifier ensuite mais elles permettent aussi de choisir des sous-formulaires ou des formulaires dépendants appelés par des boutons de commande.
Tu n'obtiendras surement pas exactement ce que tu recherches mais la structure sera là et tu pourras voir comment ça marche pour être à même de le faire sans l'assitant par la suite.
Tu verras qu'avec ce système, il n'est pas nécessaire de définir soi-même la valeur de la clé externe mais qu'Access l'ajoute automatiquement et trie les enregistrement existants pour n'afficher que ceux qui sont liés à l'enregistrement actif du formulaire principal...
toujours aussi bien ce site !
merci pour ta réponse !
(Clng convertit en entier long)
le truc c'est que dans mon premier formulaire (identification) je rentre les données principale (nom,..) et un numéro d'id se crée automatiquement (n°id). ensuite je valide et arrive mon menu avec différents autres formulaires. Je veux simplement que mon id soit recopier dans ces autres formulaires.
je vais essayer comme tu me l'as expliqué.
encore merci
peux tu me dire où je dois mettre le code que tu m'as donné stp (je ne suis pas super à l'aise avec le code...)
parce que là je me suis trompé çà marche pas... il dit que "il ne trouve pas n°id auquel il est fait référence dans mon expression" .. ?