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 :

passage de variable


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut passage de variable
    Bonjour à tous,

    J'ai souvent besoin de passer la valeur d'un contrôle (ex une zone de texte) d'un formulaire (Form1 ) dans un autre formulaire (Form2). J'utilse pour cela dans le Form2 le code MaVariable= [Formulaires]![Form1]![nom_du_contrôle]
    Ceci fonctionne parfaitement bien dans une requête si celle -ci ne fait appel qu'à une table par contre si la requête fait appel à une table et une autre table ( ou requête) liée, cela ne fonctionne pas, j'ai le message d'erreur:
    le moteur de base de données Microsoft ne reconnait pas ' [Formulaires]![Form1].[nom_du_contrôle]' en tant que nom de champ ou expression correcte. Voici le code sql de ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     strSQL = "SELECT t_Table1.[champ1], Count(t_Table1.Champ2) AS compte, Round(([compte]/[Formulaires]![f_Form1]![txt_Texte1])*100,1) AS [%] INTO t_Table2 " & _
    "FROMt_Table1 INNER JOIN r_Requête ONt_Table1.MOD_ID = r_Requête.Champ2 " & _
    "WHERE (((r_Requête.Champ3) = 1)) " & _
    "GROUP BYt_Table1.[champ1];"
    Dès que je retire la requête liée à la table1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSQL = "SELECT t_Table1.[champ1], Count(t_Table1.Champ2) AS compte, Round(([compte]/[Formulaires]![f_Form1]![txt_Texte1])*100,1) AS [%] INTO t_Table2 " & _
    "FROMt_Table1 " & _
    "GROUP BYt_Table1.[champ1];"
    strSQL = "SELECT t_Table1.[champ1], Count(t_Table1.Champ2) AS compte, Round(([compte]/[Formulaires]![f_Form1]![txt_Texte1])*100,1) AS [%] INTO t_Table2 " & _
    "FROMt_Table1 " & _
    '"GROUP BYt_Table1.[champ1];"
    çà fonctionne bien

    Merci d'avance à ceux qui auraient une explication

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    Salut,

    en remplacant Formulaires par Forms tu devrais avoir moins de retours de batons

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut passage de variable
    Bonjour,
    Merci de votre réponse mais c'est une solution que j'ai aussi essayée mais qui ne fonctionne hélas pas, j'obtiens tjrs le même message d'erreur

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    salut,

    je pencherai pour une etude de ta requete r_Requête

    peut-oin voir son contenu SQL aussi stp ??

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut passage variable
    rebonjour jpcheck,
    tout d'abord merci pour le temps que tu consacres à mon probleme.
    voici le code de la requête r_requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT r_liste_préf_2010.MOD_ID, IIf([Colo] Is Not Null,1,0) AS ColoBis, IIf([Colo blond] Is Not Null,1,0) AS ColoBlond, IIf([Colo ton sur ton] Is Not Null,1,0) AS ColoTonSurTon, IIf([Décolo] Is Not Null,1,0) AS DécoloBis, IIf([Dépilatoire MZ] Is Not Null,1,0) AS DépilMZ, IIf([Dépilatoire Senso] Is Not Null,1,0) AS DépilSenso, IIf([EV_CCS] Is Not Null,1,0) AS EVCCS, IIf([Sujets à pellicules] Is Not Null,1,0) AS SujetsPellicules, [ColoBis]+[ColoBlond]+[ColoTonSurTon]+[DécoloBis]+[DépilMZ]+[DépilSenso]+[EVCCS]+[SujetsPellicules] AS nbListes, [Colo] & [Colo blond] & [Colo ton sur ton] & [Décolo] & [EV_CCS] & [Sujets à pellicules] & [Dépilatoire MZ] & [Dépilatoire Senso] AS multiListe, [Colo] & "-" & [Colo blond] & "-" & [Colo ton sur ton] & "-" & [Décolo] & "-" & [Dépilatoire MZ] & "-" & [Dépilatoire Senso] & "-" & [EV_CCS] & "-" & [Sujets à pellicules] AS multiListe2
    FROM r_liste_préf_2010;
    comme tu le vois, cette requête est elle même basée sur une autre requête (r_liste_préf_2010) dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM  Last(TABLEA.LPR_LIBELLE) AS DernierDeLPR_LIBELLE
    SELECT Table1.MOD_ID, Table1.[2576], Table1.[2579], Table1.[2582], Table1.[2626], Table1.[2627], Table1.[2628], Table1.[2630], Table1.[2631], Table1.[2656], Table1.[2657], Table1.[2664], 
    FROM Table1 INNER JOIN (TABLEB  INNER  JOIN TABLEA ON TABLEB.LPR_ID = TABLEA.LPR_ID) ON Table1.MOD_ID = TABLEB.MOD_ID
    GROUP BY Table1.MOD_ID, Table1.[2576], Table1.[2579], Table1.[2582], Table1.[2626], Table1.[2627], Table1.[2628], Table1.[2630], Table1.[2631], Table1.[2656], Table1.[2657], Table1.[2664], Table1.[2665], Table1.[4060]
    PIVOT  TABLEA.LPR_LIBELLE;

    Je ne pense pas que le probleme vienne de ces requêtes car si je remplace Forms!f_Form1!nomControl par ""DCount(""[MOD_ID]"", ""r_requête"") cela fonctionne parfaitement et me donne le résultat escompté, je voudrais en utilisant la valeur déjà calculée dans un controle d'un formulaire précédent gagner un peu de temps la fonction DCount étant un peu consommatrice de temps, d'autant que j'utilise cette requête plusieurs fois.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    OK,

    ce qui me gene c'est aue je ne vois nulle part ecrit [Formulaires]![Form1].[nom_du_contrôle] dans tes requetes...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut passage variable
    ce qui me gene c'est aue je ne vois nulle part ecrit [Formulaires]![Form1].[nom_du_contrôle] dans tes requetes
    Si, c'est dans mon premier code sql (1er message).

    Je pense qu'il doit y avoir un bug dans Access car je viens de rencontrer le même probleme avec une requête beaucoup plus simple :
    voici le code d'une requête sélection qui inclus la variable [Forms]![f_GlobalReport]![cbo_years]) et qui fonctionne très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t_bilan_bis.MOD_ID, t_bilan_bis.SCT_ID
    FROM t_bilan_bis
    WHERE (((t_bilan_bis.Year)=[Forms]![f_GlobalReport]![cbo_years]))
    GROUP BY t_bilan_bis.MOD_ID, t_bilan_bis.SCT_ID;
    maintenant si je fais une requête analyse croisée toujours en incluant ma variable Forms!......
    ça ne fonctionne plus, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Count(t_bilan_bis.TST_ID) AS CompteDeTST_ID
    SELECT t_bilan_bis.MOD_ID
    FROM t_bilan_bis
    WHERE (((t_bilan_bis.Year)=[Forms]![f_GlobalReport]![cbo_years]))
    GROUP BY t_bilan_bis.MOD_ID
    PIVOT t_bilan_bis.SCT_ID;
    j'y perds mon latin! On dirait que dès que la requête est un peu complexe la récupération d'une variable contenue dans un controle d'un formulaire ne fonctionne pas, bizarre..

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 356
    Points
    34 356
    Par défaut
    Attention, il faut etre precis :
    [Formulaires]![f_Form1]![txt_Texte1] est different de [Formulaires]![Form1].[nom_du_contrôle], aussi peux-tu me recopier la partie exacte ou tu le vois ecrit stp ?

    d'autre part, j'etais passe a cote de ceci dans ton premier post:
    devant etre corrige en
    pour le coup de la requete d'analyse croisee, je n'ai pas souvenir d'avoir eu le meme genre de probleme

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut passage variable
    Désolée pour ces imprécisions et pour les abréviations.
    Voici le code exact où apparait [Formulaires]![f_Form1]![txt_Texte1] (en rouge dans le code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     strSQL = "SELECT t_Table1.[champ1], Count(t_Table1.Champ2) AS compte, Round(([compte]/[Formulaires]![f_Form1]![txt_Texte1])*100,1) AS [%] INTO t_Table2 " & _
    "FROM t_Table1 INNER JOIN r_Requête ONt_Table1.MOD_ID = r_Requête.Champ2 " & _
    "WHERE (((r_Requête.Champ3) = 1)) " & _
    "GROUP BY t_Table1.[champ1];"
    J'ai aussi essayer en remplaçant Formulaires par Forms

    J'ai réussi à contourner le problème pour la requête croisée dynamique:
    - j'ai mis une variable maVar :
    maVar= à [Formulaires]![f_GlobalReport]![cbo_years], ce code est parfaitement reconnu.
    - puis j'ai inséré maVar dans le code SQL
    - j'ai créer une requête "maRequête" à partir de code et la requête fonctionne!
    çà augmente le temps de recherche car la vérification de l'existence de la requête avant de la créer prend du temps en raison des nombreuses requêtes présentes dans mon projet) mais çà marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim MyRequest as New ADOX.Catalog
    Set MyRequest.ActiveConnection= CurrentProject.Connection
    maVar=[Formulaires]![f_GlobalReport]![cbo_years]
    
    TRANSFORM Count(t_bilan_bis.TST_ID) AS CompteDeTST_ID
    SELECT t_bilan_bis.MOD_ID
    FROM t_bilan_bis
    WHERE (((t_bilan_bis.Year)= " & maVar & " ))
    GROUP BY t_bilan_bis.MOD_ID
    PIVOT t_bilan_bis.SCT_ID;
    
    MyRequest.Procedures.Append  "maRequête", SQL
    Si vous ne voyez pas d'explication à mon problème c'est pas grave, j'ai maintenant une solution de rechange, un grand merci pour le temps que vous m'avez consacré

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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