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

VBA Access Discussion :

Ajouter des champs dans un formulaire vierge par code [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Ajouter des champs dans un formulaire vierge par code
    Bonjour à tous,

    Je construis actuellement une application de gestion de coordonnées clients et partenaires.
    Dans ma base, il y a plus de 200 requêtes auxquelles mes collègues doivent pouvoir accéder. La liste des requêtes leur est accessible dans un formulaire nommé F_EXTRACTIONS.

    Je souhaite que ces requêtes s'ouvrent en lecture seule évidemment, mais surtout dans une fenêtre indépendante.

    1ere idée :

    J'utilise OpenQuery. La requête s'ouvre en lecture seule, mais pas dans une fenêtre indépendante !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Dim stDocName As String
     
    ' ouvre la requête sélectionnée en lecture seule
     
        stDocName = Me.Liste_extractions
        DoCmd.OpenQuery stDocName, acNormal, acReadOnly


    2ème idée :

    J'ai créé un formulaire F_REQUETE, vierge

    Mon objectif, c'est qu'en fonction de la requête sélectionnée dans la liste sur F_EXTRACTIONS, le formulaire F_REQUETE s'ouvre et que l'ensemble des champs de la requête sélectionnée s'y ajoutent.

    Mon code à ce stade... ne fait rien à part ouvrir F_REQUETE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim stDocName As String
     
    stDocName = Me.Liste_extractions
     
    Dim sql As String
    sql = "Select " & stDocName & ".* From " & stDocName & ";"
     
    DoCmd.OpenForm "F_REQUETE"
     
    Forms!F_REQUETE.RecordSource = sql
     
    Form.Requery
    Form.Refresh

    Des idées pour m'aider ?
    Merci d'avance à tous ceux qui me liront et/ou qui répondront !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Changer dynamiquement les champs dans un formulaire, c'est un peu l'enfer.

    Je te suggère de faire différemment :
    1. créer un formulaire : F_REQUETE vierge.
    2. Définir ce formulaire comme fenêtre indépendante.
    3. Ensuite tu vas ajouter un sous-formulaire, et tu vas annuler le processus, juste pour garder le cadre vide du sous-formulaire (SF_Requete).
      Il n'y aura pas vrai formulaire associé.
    4. Après dans la propriété Objet Source du sous-formulaire tu vas mettre quelque chose comme [Requête].[NomUneRequete].
      Cela va te permettre de vérifier que cela marche.
    5. Et Access va gérer cela comme un sous-formulaire dynamique.
    6. Tu auras juste à changer la propriété objet source par VBA au moment de l'ouverture pour changer de requête.


    En utilisant les ancrages dans l'onglet Organiser tu peux faire en sorte que le sous-formulaire prenne toute la place disponible.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je rejoint marot_r, créer un formulaire dynamiquement,c'est pas simple mais jouable! Qu'il soit convivial et ergonomique moins, mais en plus pour 200 requête ...!

    A choisir je placerai des frames visible ou pas! A implémenter c'est fouillis mais jouable.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Points : 194
    Points
    194
    Par défaut
    En plus de cela, trouver la bonne requête parmi 200 en liste déroulante, cela m'a l'air l'enfer.

    Vous devriez pouvoir mettre en place une table des requetes qui organise vos requetes et permettrait de les classer.
    A vous lire, je me demande aussi si vous n'avez pas des requetes redondantes, avec des paramètres écrits en dur au lieu de les paramétrer.

    Ex : liste des fournisseurs du 69, du 33. Vous devriez n'en faire que seule qui demande sur quelle région elle doit s'appliquer. 200 requêtes m'a l'air beaucoup pour simplement gérer des clients fournisseurs.
    Je ne teste quasi jamais le code que je propose. il s'agit juste d'indication sur comment je m'y prendrais, comment faire, des lignes d'intention.
    Il y a donc souvent des erreurs, le déboggage existe pour cela.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Super, merci marot_r, ça marche ! Parfait pour démarrer un lundi matin...

    Au final, ça donne ça :

    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
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    Private Sub Ouvrir_Click()
     
    On Error GoTo Err_Ouvrir_Click
     
    'ouvre le formulaire F_REQUETE et modifie la source des données du sous-formulaire F_REQUETE_SF_REQUETE
     
    Dim stDocName As String
     
    stDocName = Me.Liste_extractions
     
    sourc = "Requête." & stDocName
     
    DoCmd.OpenForm "F_REQUETE"
     
    Forms![F_REQUETE]![F_REQUETE_SF_REQUETE].SourceObject = sourc
     
    Form.Requery
    Form.Refresh
     
    Exit_Ouvrir_Click:
        Exit Sub
     
    Err_Ouvrir_Click:
        MsgBox Err.Description
        Resume Exit_Ouvrir_Click
     
    End Sub
    Gfacro, je prévoyais déjà une zone de recherche pour limiter l'affichage de la liste déroulante des requêtes, mais tu as raison je vais essayer d'optimiser tout ça !

    Merci à tous et bon lundi !

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

Discussions similaires

  1. Ajouter + supprimer - des champs dans un formulaire
    Par tmedtcom dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/05/2012, 10h20
  2. Ajouter des champs dans un formulaire
    Par tic_tac dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/04/2011, 09h46
  3. Ajouter des champs dans un formulaire
    Par king10481 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2008, 09h15
  4. Ajouter des champs dans un formulaire.
    Par Invité dans le forum ASP.NET
    Réponses: 19
    Dernier message: 08/11/2007, 10h20
  5. Ajouter des champs dans un formulaire
    Par Luffy Duck dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2006, 10h30

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