Access : passage de valeurs

bob_eponge Messages postés 262 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"
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

zenon Messages postés 729 Statut Membre 180
 
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.
0
bob_eponge Messages postés 262 Statut Membre 7
 
hello
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
0
bob_eponge Messages postés 262 Statut Membre 7
 
juste une petite chose : )

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" .. ?
0
zenon Messages postés 729 Statut Membre 180
 
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?
0
bob_eponge Messages postés 262 Statut Membre 7
 
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
0
zenon Messages postés 729 Statut Membre 180
 
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).
0
bob_eponge Messages postés 262 Statut Membre 7
 
je crée un bouton commande avec l'assistant mais après j'ai un tas d'options ??? la quelle dois je prendre pour faire çà ? car je veux qu'il m'ouvre le formulaire et qu'il me recopie mon id .

??
0
Utilisateur anonyme
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zenon Messages postés 729 Statut Membre 180
 
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...
0