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

Access Discussion :

Formulaires multiples pour la même table


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Formulaires multiples pour la même table
    Bonjour,

    j'essaye de réaliser une base de données simple. Elle contient une seule table (avec de nombreux champs).
    Je voudrais lui associer des formulaires de la façon suivante :
    Le premier formulaire permet de renseigner la première partie de la table, le deuxième permet de continuer sur la suite, etc, etc... avec une dizaine de formulaires.
    Je veux aussi 2 « modes » : 1 mode ou l'utilisateur peut ajouter un nouvel enregistrement (il n'a alors pas accès au autres enregistrements) et 1 mode de modification où l'utilisateur choisit l'enregistrement qu'il veut modifier mais ne peut plus « naviguer » sur d'autres enregistrements ensuite.

    Comment faire pour passer d'un formulaire à l'autre en restant sur le même enregistrement ? Pour l'instant, je suis bloqué sur le fait que lorsque j'arrive sur le deuxieme formulaire, il me fait un nouvel enregistrement...
    Pour le mode « modification », je ne sais pas comment bloquer l'utilisateur sur un enregistrement sans qu'il puisse naviguer sur les autres avec la molette...

    Si vous avez des indications sur tout ca, je vous remercie par avance de votre aide.
    Antoine

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il faudrait ouvrir ton second formulaire en précisant une condition Where, voir l'aide si tu ignores ce que c'est (DoCmd.OpenForm ...)

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    merci pour ton indication
    Seulement, comme je suis encore novice dans le code vba, je ne sais pas comment faire la condition suivante :
    Where ID = ID de l'enregistrement en cours ?
    Comment écrire cela ? j'ai essayé en mettant directement "ID" mais ca ne fonctionne pas

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    il y a une démo de condition where dans mon tuto sur la recherche multi-critères

    http://cafeine.developpez.com/access...erchemulti/#LV

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    en fait, ce que je ne parviens pas à faire, c'est récupérer le numéro (clé primaire) de l'enregistrement en cours.
    Je me demandais aussi, s'il me fallait "enregistrer" les données pour le passage entre 2 formulaires ou bien si elles s'enregistrent lorsqu'elles sont rentrées ?

    Voici ce que j'essayais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.Openform "Formulaire2", acNormal, "", "Table1!ID = " & Me.ID, acEdit, acNormal
    mais ca ne fonctionne pas...

  6. #6
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Pour ouvrir ton formulaire2 en fonction de la valeur du champ ID contenue sur ton formulaire1, essai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Formulaire2", acNormal, , "ID = " & Me.NonChampContenantValeurIDForm1
    Sinon dans la , tu as toute les explications
    http://access.developpez.com/faq/?page=Forms#PassValeur

    Bonne continuation

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    En fait, je n'ai pas de champ ID, il est créé automatiquement c'est ma clé primaire.

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    je n'ai pas de champ ID, il est créé automatiquement c'est ma clé primaire
    Donc c'est un champ de type numéro auto...donc il existe bien
    A priori c'est sur ce numéro auto que tu te base (clé primaire) pour différencier tes enregistrements.

    Le premier formulaire permet de renseigner la première partie de la table, le deuxième permet de continuer sur la suite, etc, etc... avec une dizaine de formulaires.
    Ici, je ne comprends pas très bien, pourquoi tu utilise plusieurs formulaires pour remplir la même table

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Ici, je ne comprends pas très bien, pourquoi tu utilise plusieurs formulaires pour remplir la même table
    en fait, il y a énormément de champs à renseigner, et c'est beaucoup plus simple pour l'utilisateur d'avoir une organisation en pages différentes.

    merci pour tes précisions, je vais tester ce que tu me préconisais.

  10. #10
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    il y a énormément de champs à renseigner, et c'est beaucoup plus simple pour l'utilisateur d'avoir une organisation en pages différentes
    Ok, c'est bien ce que je pensais donc au lieu de faire différents formulaires, il faut simplement créer un seul formulaire sur lequel tu mets un contrôle 'Onglet'.
    Sur ce contrôle Onglet tu pourras créer auntant de 'pages' que tu souhaite en y regroupant tes données par type.

    Bonne continuation.

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    merci pour l'indication !

    effectivement, ca risque de me simplifier la tâche parce que ce que tu me proposais n'avait pas l'air de fonctionner

  12. #12
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    parce que ce que tu me proposais n'avait pas l'air de fonctionner
    Si si, ça fonctionne correctement

    Je veux aussi 2 « modes » : 1 mode ou l'utilisateur peut ajouter un nouvel enregistrement (il n'a alors pas accès au autres enregistrements) et 1 mode de modification où l'utilisateur choisit l'enregistrement qu'il veut modifier mais ne peut plus « naviguer » sur d'autres enregistrements ensuite.
    Sur ton formulaire que tu crée, tu peux mettre deux contrôles 'bouton de commande' (MODIFICATION et CREATION), qui en fonction du code associé va changer le mode de données que tu pourras saisir sur ton formulaire.
    Par exemple, au départ ton formulaire à sa propriété 'Ajout autorisé' = Non (tu peux visualiser les enregistrements existants, mais pas en créer). Sur l'événenment 'Sur clic' du bouton "CREATION" tu va changer cette propriété et mettre directement ton formulaire sur un nouvel enregistrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Ici par le code, tu passe la propriété 'Ajout autorisé' sur Oui
    
    Me.AllowAdditions = True
    'Ici tu te place directement sur un nouvel enregistrement
    
    DoCmd.GoToRecord , , acNewRec
    Ceci n'est qu'un exemple, car après il faut également que tu prévois le code pour revenir en mode MODIFICATION....
    Bonne continuation

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    je te remercie pour tes conseils, c'est sympa et ca va me servir.

    j'ai encore quelques problèmes de présentation cette fois-ci (ca méritera peut-être une autre discussion).

    Est-il possible d'intégrer une scrollbar sur les onglets (qui ne sont pas tous de même hauteur) ?
    Comment faire pour avoir une scrollbar sur la partie "Détail" du formulaire ?
    Comment faire en sorte que la molette de la souris fasse défiler la page (et non les enregistrements) ?
    Voila le type de questions que je me pose maintenant pour réaliser une interface assez conviviale...

    antoine

  14. #14
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonsoir,
    Est-il possible d'intégrer une scrollbar sur les onglets (qui ne sont pas tous de même hauteur) ?
    Heu, là j'ai pas tout compris
    J'espère quand même que tu n'as pas créer autant de contrôle onglet que tu avais besoin de formulaire (cf ton premier post)
    Car le but, c'était bien de n'avoir qu'un seul formulaire sur lequel tu avais toutes tes données répartis par page donc ici je ne comprennds pas quand tu dis que tes contrôles onglet n'ont pas la même hauteur
    Comment faire pour avoir une scrollbar sur la partie "Détail" du formulaire ?
    Dans quel but veux tu cette barre

    Comment faire en sorte que la molette de la souris fasse défiler la page (et non les enregistrements) ?
    Pour ça
    http://arkham46.developpez.com/artic...ss/mousewheel/

    Bonne continuation

  15. #15
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    J'espère quand même que tu n'as pas créer autant de contrôle onglet que tu avais besoin de formulaire (cf ton premier post)
    Car le but, c'était bien de n'avoir qu'un seul formulaire sur lequel tu avais toutes tes données répartis par page donc ici je ne comprennds pas quand tu dis que tes contrôles onglet n'ont pas la même hauteur
    J'ai un formulaire, dans lequel j'ai mon contrôle onglet. Ce que je veux dire, c'est que les données dans mes onglets sont plus ou moins nombreuses (certains onglets avec une dizaine de champs, d'autres avec 30...)
    Le contrôle d'onglet prend la hauteur de l'onglet le plus haut, ce qui fait que certaines "pages" ont leurs données en haut, et un grand espace vide en-dessous.
    Je pense qu'une scrollbar permettrait d'adapter les différences de taille plus facilement.

    Merci pour le tuto, c'est dommage que ce ne soit pas plus simple à configurer : ce sera pour les prochaines versions !

  16. #16
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Le contrôle d'onglet prend la hauteur de l'onglet le plus haut, ce qui fait que certaines "pages" ont leurs données en haut, et un grand espace vide en-dessous.
    Je pense qu'une scrollbar permettrait d'adapter les différences de taille plus facilement.
    Je pense qu'ici tu as plutôt un défaut de "conception" du contrôle onglet
    Je pense qu'il faut revoir la répartition de tes différentes données sur tes pages, éventuellement sur tes pages qui en comporte peu, essai de les regrouper.........maintenant, pour les pages contenant beaucoup de champs (et si vraiment tu ne peux faire autrement) , tu pourrais peut être les mettre dans un sous-formulaire (si il est plus petit que la hauteur de ta page tu auras alors un ascenceur...)

    Merci pour le tuto, c'est dommage que ce ne soit pas plus simple à configurer
    Non, il n'y a rien de compliquer......il suffit de suivre à la lettre les explications d' arkham46 et hop tout baigne .....et puis cela ne coute rien d'essayer.

    Bonne continuation.

  17. #17
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    si je met des sous-formulaires, je vais retomber sur mon problème de départ...

    A propos de la molette, il me semble qu'il faut modifier une dll. Ca veut donc dire qu'il y a toujours une manip à faire si je veux mettre la bdd sur un autre pc
    Je pense que je vais simplement la désactiver. Pour le mode "Ajout", il n'y a pas de problème, par contre est-ce que je peux la bloquer (aussi simplement ) dans le mode modification ?

    encore merci

  18. #18
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Je me permets de m'introduire dans la discussion parce qu j'ai la même problématique.

    1 - Je crée trois formulaires :
    -un pour créer un nouvel enregistrement avec "Entée données" = oui (FR_nouveau)
    -un pour consulter les enregistrements avec "Entée données" = non (FR_Consult)
    -un pour modifier différentes parties de l'enregistrement que j'organise comme suit.

    2 - Ce 3ème formulaire est sous la forme de liste : FR_Lst (Dans Format, mettre "Formulaires continus"). Il comprend les seules données d'identification de l'enregistrement (nom, prénom ...) avec la clé primaire. le tout sur une seule ligne.
    Sur la même ligne, j'ajoute un bouton pour consulter l'enregistrement sans le modifier (lié à Fr_consult) et un bouton pour chaque partie à modifier (ou à remplir). Ces boutons ouvrent un formulaire identique à FR_nouveau, par exemple FR_modif_adresse ("enregistrer sous" FR_nouveau en changeant le nom).
    Quand tu crée le bouton avec l'assistant, il faut cocher "Ouvrir le formulaire et trouver des informations spécifiques à afficher", puis tu joins la clé primaire de l'enregistrement dans les deux formulaires (Fr_lst et Fr_modification). Le bouton ouvrira spécifiquement l'enregistrement sélectionné dans le FR_lst.

    3 - Dans ces formulaires de modifications, j'interdis l'accès aux variables que je ne veux pas qu'on change en affectant au contrôle "Vérouillé = oui", "Activé = non". Tu peux obtenir le même résultat en ne laissant dans le formulaire de modification que ce que tu veux modifier ou renseigné.

    4 - Je crée un formulaire d'entrée avec deux boutons : "Créer un nouvel enregistrement' lié à Fr_Nouveau" et "Consulter-modifier un enregistrement" lié à Fr_lst.

    C'est un peu long, mais très efficace et surtout tout est automatisé avec les assistants sans avoir besoin d'écrire le code. Après tu vas consulter le code et tu apprends comment faire en VBA directement si tu le souhaites.

    Bon courage!

  19. #19
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    @ antoine46
    si je met des sous-formulaires, je vais retomber sur mon problème de départ...
    Bien sur que non, puisque ces sous formulaires seront contenues dans une page de ton contrôle Onglet

    A propos de la molette, il me semble qu'il faut modifier une dll. Ca veut donc dire qu'il y a toujours une manip à faire si je veux mettre la bdd sur un autre pc
    Et non, là aussi, si tu suis bien l'exemple, tu peux voir qu'il suffit simplement de mettre dans le même répertoire ou se situe ta base cette DLL ......et si cela est pour un autre PC, il suffit de "livrer" le répertoire complet.
    En plus regarde sur la F.A.Q., tu as des exemples expliquant comment référencer une librairie à partir du code.
    C'est pour cela que je pense qu'il ne faut pas que tu laisse tomber, même si tu ne comprends pas tout le code. Il y a dans ce même tuto assez d'exemples pour comprendre comment faire il faut lire et encore lire.

    Bonne continuation.

Discussions similaires

  1. Critères multiples pour création de tables
    Par tissyseb dans le forum Modélisation
    Réponses: 1
    Dernier message: 31/10/2007, 10h40
  2. Formules multiples pour une même cellule
    Par nenkira dans le forum Excel
    Réponses: 2
    Dernier message: 05/04/2007, 13h29
  3. Réponses: 2
    Dernier message: 13/10/2006, 23h35
  4. [VB.NET]Connexions multiples pour un même processus.
    Par leSeb dans le forum Windows Forms
    Réponses: 16
    Dernier message: 14/03/2006, 09h53
  5. [MySQL] submit multiples pour le même formulaire
    Par The Wretched dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/12/2005, 16h36

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