IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Saisie automatique dans le champ d'un nouveau formulaire


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut Saisie automatique dans le champ d'un nouveau formulaire
    Bonjour,

    J'ai créé sur le formulaire principal (qui permet de saisir un nouvel employé) un bouton qui ouvre un autre formulaire (pour saisir un nouveau contrat). Je voudrais que ce 2ème formulaire reprenne le champ Nom ([NOM__PR_NO]) du 1er formulaire (j'ai mis DUPOND pour l'exemple mais même avec ça , cela ne fonctionne pas).

    J'ai mis le code ci-dessous en procédure événementielle au clic sur mon bouton. Qu'est-ce qui ne va pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Commande60_Click()
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , , acFormAdd
    Forms![frmFiltre]![frmSaisieContrat].Form![NOM__PR_NO] = "DUPOND"
    End Sub
    Il me met un message "objet requis".

    PS : le champ [NOM__PR_NO] est un champ du sous-formulaire frmsaisiecontrat qui lui-même se trouve sur un formulaire indépendant frmFiltre qui me sert pour faire des filtres ...

    Merci de votre réponse.

    Fred

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Tu précises "le champ [NOM__PR_NO] est un champ du sous-formulaire frmsaisiecontrat qui lui-même se trouve sur un formulaire indépendant frmFiltre" alors que tu ouvres "frmSaisieContrat" en tant que formulaire indépendant. Il faudrait a priori ouvrir dans ce cas "frmFiltre".

    D'autre part il me parait judicieux d'utiliser plutot la propriété "DefaultValue".

  3. #3
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Bonjour,

    Est-ce que la FAQ ne comporte-t-elle pas quelques réponses :
    http://access.developpez.com/faq/?page=Forms#PassValeur


    SE

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Voilà mon code (j'ai suivi le conseil de Stéphane) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Commande60_Click()
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , "[NOM__PR_NO] =" & Forms![frmFiltre]![frmSaisieContrat].Form![NOM__PR_NO], acFormAdd
    End Sub
    Il me répond "impossible de trouver le formulaire "frmFiltre" auquel il est fait référence.

    Pourtant je l'ai bien nommé.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Excusez-moi, j'avais une fausse manip. Avec la condition Where, le système est un peu différent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Commande60_Click()
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , "[NOM__PR_NO] =" & Forms![FrmFiltreInterim]![frmInterim1].Form![NOM__PR_NO], acFormAdd
    End Sub
    Il faut que le champ [NOM__PR_NO] soit le même que le champ [NOM__PR_NO] du formulaire de saisie des employés...

    PS : Comme précédemment, le champ [NOM__PR_NO] est le champ du sousformulaire frmInterim1 qui lui-même se trouve sur le formulaire Indépendant FrmFiltreInterim.

    Le problème est qu'il me dit : "Syntax error (missing operator) in query expression '[NOM__PR_NO]=Dupond' "

    Je comprends pas ce qu'il manque.

  6. #6
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    As-tu essayé en laissant la constante Mode de données vierge 'acFormAdd'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , "[NOM__PR_NO] =" & Forms![FrmFiltreInterim]![frmInterim1].Form![NOM__PR_NO]
    et attention au paramètre sur lequel s'exécute le filtre (numérique, texte, etc)

    SE

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Ca ne marche pas non plus.
    J'ai essayé autre chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim stDocName As String
        stDocName = "frmContratOK"
     
        'regarde ce qu'il y a sur le formulaire principal frmInterim1
        Forms![frmInterim1]![NOM__PR_NO].SetFocus
     
        'Ouvre le formulaire secondaire frmContratOK
        DoCmd.OpenForm stDocName
     
        'Dans le formulaire secondaire, reprend le même nom que celui
        'qui est actuellement dans le formulaire principal.
        Me![NOM__PR_NO] = Forms![frmInterim1]![NOM__PR_NO]
    Par contre, il ne me reprend toujours que le nom qui s'affiche à l'ouverture du formulaire principal. Même si je change le nom dans le formulaire principal (si je passe par exemple à l'enregistrement 2), il reste lorsqu'on ouvre le formulaire secondaire avec l'enregistrement 1.
    On dirait qu'il ne sait pas regarder de manière dynamique. Le setfocus est-il bon ???

  8. #8
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Dans le premier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , "[NOM__PR_NO] =" & Forms![FrmFiltreInterim]![frmInterim1].Form![NOM__PR_NO]
    le frmFiltreInterim est-il ouvert à l'ouverture du frmSaisieContrat ?

    SE

  9. #9
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Il faut préciser que cette syntaxe est valable pour une variable numérique...

    Regarde ce post de la FAQ sur la syntaxe selon les types de variables :
    http://access.developpez.com/faq/?pa...riteres#txtQry

    SE

  10. #10
    Invité
    Invité(e)
    Par défaut


    Ce que j'utilises dans ce genre de développement, c'est "OpenArgs"

    Dans ton formulaire principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande60_Click()
    DoCmd.OpenForm "frmSaisieContrat", acNormal, , , acFormAdd,,"DUPOND"
    End Sub
    Dans ton formulaire "Contrat", tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
      If Not IsNull(Me.OpenArgs) Then
        Me.ChampNom.value = Me.OpenArgs
      Endif
    End SUb
    Voilà

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Stéphane, en effet, le problème venait du fait que le formulaire filtre n'était pas ouvert. Mais il ne m'affiche toujours pas ce qu'il faut.

    Bruno, je teste ta solution mais il me dit : "Impossible d'attribuer une valeur à cet objet".

    Je crois savoir ce qu'il se passe mais je ne sais pas comment y remédier.

    En fait, j'ai deux tables : TB interimaire et TB contrat. Les deux sont liées par un champ n°Interim qui est la clé primaire de la TB interimaire et la clé secondaire de la TB contrat.
    Lorsque je crée un nouvel intérimaire avec le formulaire principal, j'ai mis un bouton qui m'ouvre le formulaire secondaire et qui me permet de créer pour cette personne un contrat. j'ai stipulé qu'un contrat ne pouvait pas exister si il n'était pas affecté à un intérimaire.
    Lorsque j'appuie sur mon bouton, access n'arrive peut être pas à trouver un lien entre les deux formulaires. Pourtant je lui ai bien dis (au bouton) d'ouvrir un formulaire mais je lui dis de n'ouvrir que les enregistrements spécifiques qui correspondent dans les deux tables (n°interim.TBInterimaire <--> n°Interim.TBContrat). C'est cela je pense qui le gêne.

    Dans mes tables tout fonctionne bien mais je n'arrive pas à le mettre en place au niveau des formulaires.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Il me met, lorsque je passe la souris sur le code Me.NOM__PR_NO.Value=null

  13. #13
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Citation Envoyé par fredpeca
    Stéphane, en effet, le problème venait du fait que le formulaire filtre n'était pas ouvert. Mais il ne m'affiche toujours pas ce qu'il faut.
    ....
    1ère réponse apporté au sujet :

    Citation Envoyé par DelphiManiac
    Tu précises "le champ [NOM__PR_NO] est un champ du sous-formulaire frmsaisiecontrat qui lui-même se trouve sur un formulaire indépendant frmFiltre" alors que tu ouvres "frmSaisieContrat" en tant que formulaire indépendant. Il faudrait a priori ouvrir dans ce cas "frmFiltre".

    D'autre part il me parait judicieux d'utiliser plutot la propriété "DefaultValue".
    Il faudrait peut être lire les réponses ^^

  14. #14
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    J'ai bien lu mais je ne comprends pas bien comment on utilise ta solution.
    Cela fait trois jours que je suis dessus et j'ai tout qui se mélange...

  15. #15
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    Je viens de trouver la solution.

    En fait, mon formulaire secondaire était basé sur une requête qui liait les deux tables avec une intégrité référentielle. J'ai simplement modifié la jointure afin que tous les enregistrements de la TB interimaire soir afficher même s'il n'ont pas encore passé de contrat ... et ça marche !!

    Merci pour vos solutions qui maintenant fonctionnent (open args).

    A+

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2002] Saisie automatique dans un champ texte
    Par Jean-Luc80 dans le forum IHM
    Réponses: 2
    Dernier message: 19/07/2009, 06h39
  2. Réponses: 6
    Dernier message: 14/01/2009, 08h35
  3. Empêcher la saisie automatique dans un champ
    Par zooffy dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/01/2008, 12h51
  4. Préfixe automatique dans un champ
    Par curt dans le forum Access
    Réponses: 1
    Dernier message: 12/06/2006, 19h27
  5. saisie obligatoire dans un champs de formulaire
    Par Didi17 dans le forum Access
    Réponses: 2
    Dernier message: 28/10/2005, 03h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo