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 :

Utiliser un même formulaire avec deux tables différentes


Sujet :

Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Utiliser un même formulaire avec deux tables différentes
    Bonjour,
    Avec un état (Report) je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Recordsource="(nom de la table)"
    dans la sub "Report_Open" et tout va bien, exactement comme si en mode "création" la propriété source était renseignée, mais je veux justement pouvoir changer la source par code.

    Avec un formulaire, ça ne répond pas et le form se retrouve sans source.
    Où placer la valeur du recordsource ?
    Même question pour le Me.Filter.

    En utilisant une SQL (regroupant donc la source et le filtre) ça ne va pas mieux pour un report.

    Merci
    Amitiés

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    je ne comprend pas très bien ce que tu veux faire exactement.
    Par curiosité j'ai esseyé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form.RecordSource = "SELECT ...."
    et cela fonctionne.

    Que veux-tu faire exactement et comment veux-tu changé la Source et à quel moment ?

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Pour moi ça fonctionne avec un nom de table.
    J'ai ajouté après le changement de source de données. Et je ne mets sur le formulaire que des champs communs au deux tables.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Bonjour à vous deux, Dolphy35 et LedZeppII,
    Je viens de trouver vos réponses ce amtin. Merci

    Je précise mon pb :
    Deux tables, avec champs communs, genre fichier de personnel, contenant les données de deux populations différentes.

    Un premier form1, contenant 2 zones texte, la première recevant un critère pour le choix de la table, la seconde recevant l'index de l'enregistrement recherché, qui servira pour remplir un second form2 avec des contrôles correspondants à des champs des tables.

    Le Form1 a aussi un bouton qui déclanche l'ouverture du Form2 en mode acNormal.

    Donc dans le code du click sur le bouton, il ya
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'stDocName = NomTable
    'zzz=index récupéré dans la zône de texte
    sql = "SELECT * FROM  [" & stDocName & "] WHERE [Index]= " & zzz
    Forms![form2].Form.RecordSource = stDocName
    Forms![form2].form.requery
    DoCmd.OpenForm "Form2", acNormal, sql

    Dans le code du form2, il n'y a donc rien.

    Au lancement, après avoir rempli les zônes table et index, ça bute sur la ligne
    Forms![Form2]...
    'Impossible de trouver le formulaire 'Form2' auuel il est fait référence"
    Or il existe bien !

    Merci de votre aide.
    Amitiés

  5. #5
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    est-il ouvert le Form2 ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Non, puisque le open ne vient qu'après !
    C'est probablement effectivement l'origine de l'erreur.
    Je regarde de plus près.
    Merci

  7. #7
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    re,

    désolé je n'avais pas lu plus loin.

    Oui c'est le Problème tu es obligé d'ouvrir le Form.

    Sinon tu as la possibilité de modifier la source d'une requête avec ton SQL et d'ouvrir ensuite le form basé sur cette requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set req = CurrentDb.QueryDefs("MaRequete")
        req.sql = sql
    pour cela tu dois créer la requête avant.

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Dans cet ordre ça doit marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'stDocName = NomTable 
    'zzz=index récupéré dans la zône de texte 
    sql = "SELECT * FROM  [" & stDocName & "] WHERE [Index]= " & zzz 
    DoCmd.OpenForm "Form2", acNormal
    Forms![form2].Form.RecordSource = stDocName 
    Forms![form2].form.requery
    J'ai retiré le paramètre sql dans DoCmd.OpenForm. Ce paramètre doit contenir le nom d'un requête existante, pas le Sql source.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Bonsoir,
    Avec votre aide, en combinant vos réponses, j'ai obtenu ce que je recherchais avec ce qui suit :

    Cmd de Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'stDocName = NomTable
    'zzz=index récupéré dans la zône de texte
    'zzz et stDocName comme variables publiques
     
    DoCmd.OpenForm "Form2", acNormal
    Open de Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Form.RecordSource=stDocName
    Form.Filter=" [Index]= " & zzz
    Form.Requery
    Form.FilterOn=True
    Autrement dit, les paramètres source et filtre passés avant l'ouverture ne servent à rien.
    C'est après l'ouverture et avant le load qu'il faut les définir, sans oublier le Requery et le filterOn à True

    J'ai encore appris quelque chose !

    Je subodorre cependant qu'il y a certainement une méthode plus orthodoxe, et j'espère que des plus experts que moi ne manqueront pas de me le dire en me donnant la bonne méthode.

    Merci à tous
    Amitiés

Discussions similaires

  1. Calcul avec deux tables différentes
    Par challe dans le forum SAS Base
    Réponses: 3
    Dernier message: 11/07/2011, 15h30
  2. [1.x] formulaire avec deux tables
    Par nah_wah dans le forum Débuter
    Réponses: 4
    Dernier message: 25/01/2011, 21h31
  3. [AC-2003] Sélectionner deux fois le même champ avec deux conditions différentes
    Par juju1988 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/10/2010, 09h23
  4. Formulaire avec deux tables
    Par rgix dans le forum IHM
    Réponses: 1
    Dernier message: 03/06/2010, 09h39
  5. update avec deux tables différentes
    Par vaness303 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/05/2009, 12h09

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