Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 10h49   #1
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
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 :
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 :
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
ometsoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h09   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Salut,

en remplacant Formulaires par Forms tu devrais avoir moins de retours de batons
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h47   #3
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
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
ometsoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 14h27   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
salut,

je pencherai pour une etude de ta requete r_Requête

peut-oin voir son contenu SQL aussi stp ??
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h14   #5
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
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 :
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 :
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.
ometsoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h34   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
OK,

ce qui me gene c'est aue je ne vois nulle part ecrit [Formulaires]![Form1].[nom_du_contrôle] dans tes requetes...
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 17h59   #7
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
Par défaut passage variable

Citation:
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 :
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 :
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..
ometsoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 19h08   #8
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
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
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 20h00   #9
Invité de passage
 
Inscription : juin 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 11
Points : 1
Points : 1
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 :
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 :
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é
ometsoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web