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 :

ouverture d'un formulaire à partir d'une table de données


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut ouverture d'un formulaire à partir d'une table de données
    Bonjour à tous,

    J'ai un sous-formulaire (nommé vue appellation) en mode feuille de données composé de IDvin (N°Auto d'identification), Appellation (nom de l'apellation), et Région.
    Le code ci dessous me permet, lorsque j'ai sélectionné une ligne voulue, d'ouvrir un formulaire "caractéristique de l'appellation" et de trouver l'enregistrement correspondant (je sais le script est barbare mais je suis débutant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub Commande10_Click()
    On Error GoTo Err_Commande10_Click
     
    DoCmd.GoToControl "vue appellation"
    DoCmd.GoToControl "ID vin"
    DoCmd.RunCommand acCmdCopy
    DoCmd.OpenForm "caractéristique appellation", acNormal, "", "", , acNormal
    DoCmd.GoToControl "Modifiable18"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Modifiable18"
    DoCmd.RunCommand acCmdRefresh
    End
    Err_Commande10_Click:
    Dim chMsg As String, strEntrée As String
    chMsg = "Sélectionner l'appellation choisie."
     
    MsgBox chMsg, vbExclamation, "Mauvais choix!"
    End
     
    End Sub
    Question :
    Y-a t'il un moyen pour que la colonne IDvin n'apparaisse pas dans mon sous-formulaire table de données car elle ne contient que des numéros et en terme d'affichage c'est pas terrible.
    En la masquant les données ne sont plus accessibles et le système de copier /coller ne fonctionne plus.

    Auriez-vous une idée :
    Merci d'avance pour toutes vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu peux masquer les données (colonne) et bénéficier tout de même de la valeur de ce contrôle. C'est une des finesses d'Access.
    D'ores et déjà, nomme tes controles, évite les "Modifiable18", les Commande10 etc...

    Voici un exemple:
    'A écrire dans un nouveau module (Module1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public gIDVin As Variant
    Dans ton formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande10_Click()
      gIDVin = Me![vue appellation]
      If IsNull(gIDVin) Then
        MsgBox "Sélectionner l'appellation choisie.", vbExclamation, "Mauvais choix!"
        Exit Sub
      End If
      DoCmd.Close
      DoCmd.OpenForm "caractéristique appellation", acNormal, "", "", , acNormal
      Me!Modifiable18 = gIDVin
      Me!Modifiable18.SetFocus
    End Sub
    Voilà...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonjour et tout d'abord un grand merci pour le travail que vous fournissez

    Bon 2 choses à voir :
    1. Si je masque le champ ID vin de ma colonne, celui-ci n'est plus actif et il m'envoit le message d'erreur comme quoi ID vin n'est pas trouvable

    2. j'ai essayé le code et j'obtiens le message suivant :
    Erreur d'exécution 2467
    l'expression entrée fait référence à un objet fermé ou supprimé
    Oups, c Grave docteur???

    Merci encore de votre aide précieuse.

    cordialement,

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Non, c'est pas grave...

    L'erreur 2467 vient du fait que tu fais référence, comme c'est écrit, à un objet (Formulaire) qui est fermé !

    Dans l'exemple que je t'ai donné, je suppose que le Commande10 est un bouton qui figure dans le formulaire initial (là ou la colonne est cachée).
    De là, gIDVin prend la valeur du contrôle, comme c'est une variable à portée publique, même si les form sont fermés, elle garde la valeur...

    As tu créés le module et écris la déclaration comme je te l'ai précisé ?

    A toi...
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Merci de la réponse rapide, c'est qu'on cela ne chôme pas ici

    J'ai crié au loup trop vite ! J'ai supprimé le DoCmd.close pour éviter de perdre la valeur de mon [ID vin]. Après quelques essais et quelques messages d'erreur : j'en suis ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande10_Click()
      gIDVin = [vue appellation].Form![ID vin]
      If IsNull(gIDVin) Then
        MsgBox "Sélectionner l'appellation choisie.", vbExclamation, "Mauvais choix!"
        Exit Sub
      End If
      DoCmd.OpenForm "caractéristique appellation", acNormal, "", "", , acNormal
    Forms![caractéristique appellation]![Modifiable18] = gIDVin
    Forms![caractéristique appellation]![Modifiable18].SetFocus
    End Sub
    mon formulaire "caractéristique appellation" s'ouvre correctement mais ne va pas chercher l'enregistrement voulu.
    [Modifiable18] (ou devrais-je l'appeler "contrôle recherchant l'enregistrement correspondant à l'ID vin" selon tes conseils ) est une liste déroulante avec un code permettant de trouver l'enregistrement.

    Merci de m'aider

    cordialement,
    SC

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Si tu disais qui fait quoi et quoi va où, ça irait mieux 8)
    Un controle se nomme avec un préfixe pour savoir ce que c'est:
    Modifiable18 => cmbIDVin (cmb= combobox)
    Command10 => BtnRechercherVue ou cmdRechercherVue
    Mais surtout pas de noms à rallonge même si Access l'autorise...

    Bref, d'un formulaire à l'autre, une communication entre contrôles peut s'établir s'ils sont ouverts tous les 2.
    Si tu en fermes un, alors il faut stocker la valeur de ce que tu veux comme critère pour trouver la correspondance dans l'autre (et lycée de versaille )
    Donc, pour ouvrir un form sur un enregistrement précis, tu utilises la condition WHERE de la méthode OpenForm.
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim MonCritère As String
    MonCritère = "[vue appellation]=" & Me![ID vin]
    DoCmd.OpenForm "caractéristique appellation", acNormal, , MonCritère, , acWindowNormal
    P.S. Utilise l'assitant bouton pour te faciliter la tâche... Tu comprendras beaucoup de choses.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Il est vrai qu'il n'est pas facile d'expliquer ce qui ne semble pas évident à soi-même

    J'ai un formulaire ("appellation") contenant un sous-formulaire ("vue appellation") sous le format d'une feuille de donnée.
    Celui-ci me liste les différentes appellations de France (identifiée parun N°Auto "ID vin").
    L'utilisateur (moi-même) doit sélectionner parmis la liste une appellation.
    En cliquant sur le bouton de commande10, cela ouvre le formulaire "caractéristique appellation" qui présente les caractéristiques de l'appellation choisie.
    J'ai intégré une liste déroulante (Modifiable18) dans "caractéristique appellation" pensant qu'elle était indispensable pour la recherche d'un enregistrement.

    J'espère ne pas avoir été trop brouillon???? Et te remercie encore de ta patience.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Ok,
    Là c'est limpide, je nage dedans...

    Bon, Un Form et un SousfForm ensemble ne font qu'un mais il y a une syntaxe impérative à respecter pour récupérer 1 valeur du sous formulaire quelle qu'elle soit...
    Syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![FormPrincipal].Form![SousForm]!NomDuControl
    Pour toi cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![appellation].Form![vue appellation]!ID vin
    Tout dépend si tu veux garder ouvert (ou bleu) le Form principal en visualisant les caratéristiques de la sélection dans un Form plus petit (En mode Modal pour éviter qu'il passe derrière). C'est classique comme situation. Par exemple, on clique sur le nom d'une personne et on a, à travers un bouton, toute son identité, mais comme c'est une consultation temporaire, alors on veut pouvoir refermer et passer à autre chose...
    Sinon, si tu veux le fermer pour consulter, alors il faut passer par une condition Where comme je te l'ai spécifié.

    A+

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    OK J'ai compris, je test ça ce soir (vers 19h)

    Et si c'est OK --------> [RESOLU]


    Merci, encore et surement @+++

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Voilà ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande10_Click()
    Dim MonCritère As String
    MonCritère = "[ID vin] =" & Forms![Appellation].Form![vue appellation]![ID vin]
    DoCmd.OpenForm "caractéristique appellation", acNormal, , MonCritère, , acWindowNormal
    End Sub

    Merci à Argyronet (et à ses jeux de mot assez sympas je dois dire )


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

Discussions similaires

  1. [AC-2007] Ouverture d'un formulaire à partir d'une treeview
    Par mbo2 dans le forum IHM
    Réponses: 1
    Dernier message: 16/09/2013, 09h40
  2. [AC-2002] Ouverture d'un formulaire à partir d'une requête
    Par jean-mi34 dans le forum IHM
    Réponses: 2
    Dernier message: 12/08/2013, 16h11
  3. Réponses: 4
    Dernier message: 27/04/2013, 22h15
  4. [AC-2007] ouverture successive de formulaire à partir d'une liste
    Par carlito0205 dans le forum IHM
    Réponses: 11
    Dernier message: 28/07/2011, 17h00
  5. Réponses: 9
    Dernier message: 30/12/2005, 03h00

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