[VBA] GROS PROBLEME !! help plz
Résolu/Fermé
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
-
19 juin 2008 à 10:33
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 26 juin 2008 à 20:58
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 26 juin 2008 à 20:58
A voir également:
- [VBA] GROS PROBLEME !! help plz
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
23 réponses
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
19 juin 2008 à 11:24
19 juin 2008 à 11:24
Dans le code associé à un bouton, tu peux ouvrir un état, et ajuster comment cet état est créé, avec :
DoCmd.OpenReport
DoCmd.OpenReport
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
20 juin 2008 à 14:51
20 juin 2008 à 14:51
essaie plutot, au lieu de ta ligne en gras :
sqlfiltre = " ID_THEME ='" + V_ID_THEME +"') "
sqlfiltre = sqlfiltre + " and " ID_S_THEME ='" + V_ID_S_THEME +"') " 'ainsi de suite
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, ,
sqlfiltre = " ID_THEME ='" + V_ID_THEME +"') "
sqlfiltre = sqlfiltre + " and " ID_S_THEME ='" + V_ID_S_THEME +"') " 'ainsi de suite
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, ,
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
20 juin 2008 à 14:59
20 juin 2008 à 14:59
Là j'ai fais ça :
sqlfiltre = V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
mais quand je clique sur le bouton il me dis que mon ID_GEOBASE peut désigner plusieurs tables listées dans la clause FROM de mon instruction SQL, pourtant elle est comme ça :
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, T_THEMATIQUE.ID_THEME
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE (((T_COUCHE_GEO.ID_GEOBASE)=[T_GEOBASE].[ID_GEOBASE]) AND ((T_COUCHE_GEO.ID_THEME)=[T_THEMATIQUE].[ID_THEME]));
Il y a bien une table devant chaque ID_GEOBASE nan ?
sqlfiltre = V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
mais quand je clique sur le bouton il me dis que mon ID_GEOBASE peut désigner plusieurs tables listées dans la clause FROM de mon instruction SQL, pourtant elle est comme ça :
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, T_THEMATIQUE.ID_THEME
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE (((T_COUCHE_GEO.ID_GEOBASE)=[T_GEOBASE].[ID_GEOBASE]) AND ((T_COUCHE_GEO.ID_THEME)=[T_THEMATIQUE].[ID_THEME]));
Il y a bien une table devant chaque ID_GEOBASE nan ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
20 juin 2008 à 15:05
20 juin 2008 à 15:05
Quel contiens sqlfiltre exactement au moment du openreport ?
Il faut aussi mettre les noms des tables dans sqlfiltre...
Il faut aussi mettre les noms des tables dans sqlfiltre...
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
20 juin 2008 à 15:15
20 juin 2008 à 15:15
je suis bête j'avais laisser les char(13) pour le retour de ligne et non pas une concaténation je vais donc utiliser ce que tu m'a donner là : " ID_THEME ='" + V_ID_THEME + "') et je continue pour les autres, si j'ai bien compris ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
20 juin 2008 à 15:22
20 juin 2008 à 15:22
tu as bien compris
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
20 juin 2008 à 15:32
20 juin 2008 à 15:32
Snif je suis naze, j'ai jamais concaténer des variables est ce que c'est bien comme ça ?
sqlfiltre = '" ID_GEOBASE ='" + V_ID_GEOBASE_EMPL + "' & '" ID_THEME ='" + V_ID_THEME + "' & '" ID_S_THEME ='" + V_ID_S_THEME + "' & '" ID_S_THEME ='" + V_ID_SS_THEME + "' & '" ID_GEOBASE ='" + V_ID_GEROBASE_INS + "' & '" SERVICE_AGENT ='" + V_SERVICE_NOM + "' & '" ID_AGENT ='" + V_ID_AGENT + "'
sqlfiltre = '" ID_GEOBASE ='" + V_ID_GEOBASE_EMPL + "' & '" ID_THEME ='" + V_ID_THEME + "' & '" ID_S_THEME ='" + V_ID_S_THEME + "' & '" ID_S_THEME ='" + V_ID_SS_THEME + "' & '" ID_GEOBASE ='" + V_ID_GEROBASE_INS + "' & '" SERVICE_AGENT ='" + V_SERVICE_NOM + "' & '" ID_AGENT ='" + V_ID_AGENT + "'
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
20 juin 2008 à 15:39
20 juin 2008 à 15:39
essaie ainsi :
sqlfiltre = " ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
sqlfiltre = " ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
20 juin 2008 à 16:06
20 juin 2008 à 16:06
Ok merci donc apparemment cela ne bloque plus à partir du sql filtre mais il me dis que mon ID_GEOBASE peut être de différentes tables dans mon instruction SQL
et il me surligne cette ligne (en gras) :
sqlfiltre = " ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, T_THEMATIQUE.ID_THEME
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE T_COUCHE_GEO.ID_GEOBASE = T_GEOBASE.ID_GEOBASE
AND T_COUCHE_GEO.ID_THEME = T_THEMATIQUE.ID_THEME;
pourtant que je sache cette requête ci-dessus explique clairement d'où vient chaque ID_GEOBASE
et il me surligne cette ligne (en gras) :
sqlfiltre = " ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, T_THEMATIQUE.ID_THEME
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE T_COUCHE_GEO.ID_GEOBASE = T_GEOBASE.ID_GEOBASE
AND T_COUCHE_GEO.ID_THEME = T_THEMATIQUE.ID_THEME;
pourtant que je sache cette requête ci-dessus explique clairement d'où vient chaque ID_GEOBASE
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
20 juin 2008 à 16:26
20 juin 2008 à 16:26
Il faut aussi mettre les noms des tables dans sqlfiltre...
Si tu veux éviter cela, il faut dans ton query qui sert de base à ton état, éviter de sélectioner des champs synonymes.
Si tu veux éviter cela, il faut dans ton query qui sert de base à ton état, éviter de sélectioner des champs synonymes.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
20 juin 2008 à 16:32
20 juin 2008 à 16:32
J'ai tester avec un MsgBox sqlfiltre et il me dit que sqlfiltre est null...
le code est comme ca sqlfiltre = " [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Désolé en plus je dois partir je reprendrais ça lundi. Je sais pas si tu seras toujours là mais j'essaierais de trouver tout seul sinon. Encore merci pour ton aide ça m'a été précieux ^^
le code est comme ca sqlfiltre = " [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Désolé en plus je dois partir je reprendrais ça lundi. Je sais pas si tu seras toujours là mais j'essaierais de trouver tout seul sinon. Encore merci pour ton aide ça m'a été précieux ^^
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
20 juin 2008 à 16:39
20 juin 2008 à 16:39
Il faudrait que TOUTES les variables V_ soient de type string.
La logique suppose aussi que TOUTES les variables interviennent dans le filtre.
Il y a moyen de faire mieux, du genre :
sqlfiltre= " 0 = 0 "
if V_ID_GEOBASE_EMPL <> "" then
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
end if
La logique suppose aussi que TOUTES les variables interviennent dans le filtre.
Il y a moyen de faire mieux, du genre :
sqlfiltre= " 0 = 0 "
if V_ID_GEOBASE_EMPL <> "" then
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
end if
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
23 juin 2008 à 09:30
23 juin 2008 à 09:30
Bonjour yg_be, bon, mon problème est que j'ai des listes qui ce sont rajoutées et deux d'entre elles posent problème.
La première, la liste LISTE_SS_THEME qui me pose un problème lors du clique du bouton afficher. En effet cette liste n'est pas forcément renseignée et donc lors de la compilation la liste retourne null.
La deuxième est une liste nommée LISTE_GEOBASE_INS, en fait elle a le même but que la liste LISTE_GEOBASE sauf que celle ci permet d'afficher des informations dans un sous état situé dans l'état....(je sais c'est vraiment compliqué comme méthode ...)
Et donc pour l'instan quand je récupère sa valeur cela m'affiche null aussi. Est ce que cela pourrait être du à la LISTE_GEOBASE qui bloqueré la LISTE_GEOBASE_INS ?
Cordialement, Onishi ^^
PS : Voici l'état de mon code pour le moment :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As String
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As String
Dim V_SERVICE_NOM As String
Dim V_ID_AGENT As String
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
'DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
End Sub
Private Sub BT_REINITIALISER_Click()
LISTE_GEOBASE_EMPL = ""
liste_theme = ""
liste_sous_theme = ""
liste_sous_sous_theme = ""
LISTE_GEOBASE_INS = ""
LISTE_SERVICE = ""
LISTE_NOM_AGENT = ""
End Sub
Private Sub LISTE_GEOBASE_1_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_theme.Requery
End Sub
Private Sub LISTE_SOUS_THEME_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_sous_theme.Requery
End Sub
Private Sub LISTE_THEME_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_theme.Requery
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_sous_theme.Requery
End Sub
Private Sub bt_retour_Click()
On Error GoTo Err_bt_retour_Click
DoCmd.Close
Exit_bt_retour_Click:
Exit Sub
Err_bt_retour_Click:
MsgBox Err.Description
Resume Exit_bt_retour_Click
End Sub
La première, la liste LISTE_SS_THEME qui me pose un problème lors du clique du bouton afficher. En effet cette liste n'est pas forcément renseignée et donc lors de la compilation la liste retourne null.
La deuxième est une liste nommée LISTE_GEOBASE_INS, en fait elle a le même but que la liste LISTE_GEOBASE sauf que celle ci permet d'afficher des informations dans un sous état situé dans l'état....(je sais c'est vraiment compliqué comme méthode ...)
Et donc pour l'instan quand je récupère sa valeur cela m'affiche null aussi. Est ce que cela pourrait être du à la LISTE_GEOBASE qui bloqueré la LISTE_GEOBASE_INS ?
Cordialement, Onishi ^^
PS : Voici l'état de mon code pour le moment :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As String
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As String
Dim V_SERVICE_NOM As String
Dim V_ID_AGENT As String
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
'DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
End Sub
Private Sub BT_REINITIALISER_Click()
LISTE_GEOBASE_EMPL = ""
liste_theme = ""
liste_sous_theme = ""
liste_sous_sous_theme = ""
LISTE_GEOBASE_INS = ""
LISTE_SERVICE = ""
LISTE_NOM_AGENT = ""
End Sub
Private Sub LISTE_GEOBASE_1_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_theme.Requery
End Sub
Private Sub LISTE_SOUS_THEME_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_sous_theme.Requery
End Sub
Private Sub LISTE_THEME_AfterUpdate()
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_theme.Requery
Forms![F_RECHERCHE_PAR_CRITERES]!liste_sous_sous_theme.Requery
End Sub
Private Sub bt_retour_Click()
On Error GoTo Err_bt_retour_Click
DoCmd.Close
Exit_bt_retour_Click:
Exit Sub
Err_bt_retour_Click:
MsgBox Err.Description
Resume Exit_bt_retour_Click
End Sub
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
23 juin 2008 à 10:28
23 juin 2008 à 10:28
Suggestion :
sqlfiltre= " 0 = 0 "
if not isnull(V_ID_GEOBASE_EMPL) then
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
end if
... et ainsi de suite pour chaque critère
sqlfiltre= " 0 = 0 "
if not isnull(V_ID_GEOBASE_EMPL) then
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
end if
... et ainsi de suite pour chaque critère
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
23 juin 2008 à 10:35
23 juin 2008 à 10:35
La syntaxe à l'air correcte mais il me dis tjs le même problème sur ID_GEOBASE mais à mon avis cela ne vient pas de là car sur V_ID_SS_THEME en passant avec la souris lors de la compilation il y a écrit "Null" et sur V_ID_GEROBASE_INS il y a écrit "Vide". :s
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 09:25
24 juin 2008 à 09:25
Voici la requête source de l'état :
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, [T_THEMATIQUE].[ID_THEME]
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE [T_COUCHE_GEO].[ID_GEOBASE]=[T_GEOBASE].[ID_GEOBASE]
AND [T_COUCHE_GEO].[ID_THEME]=[T_THEMATIQUE].[ID_THEME];
et voici mon sql filtre :
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
SELECT T_COUCHE_GEO.*, T_GEOBASE.*, [T_THEMATIQUE].[ID_THEME]
FROM T_COUCHE_GEO, T_GEOBASE, T_THEMATIQUE
WHERE [T_COUCHE_GEO].[ID_GEOBASE]=[T_GEOBASE].[ID_GEOBASE]
AND [T_COUCHE_GEO].[ID_THEME]=[T_THEMATIQUE].[ID_THEME];
et voici mon sql filtre :
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 10:07
24 juin 2008 à 10:07
J'ai maintenant une erreur d'incompatibilité de type "erreur 13".
Pourrais tu m'aider à trouver le type de variable que je dois déclarer svp ? Comme pour la checkbox par exp, est ce que c'est bien du booléan qu'il faut déclarer ?
Merci d'avance.
Pourrais tu m'aider à trouver le type de variable que je dois déclarer svp ? Comme pour la checkbox par exp, est ce que c'est bien du booléan qu'il faut déclarer ?
Merci d'avance.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
24 juin 2008 à 10:16
24 juin 2008 à 10:16
Bonne idée de mettre boolean pour une variable qui va recuperer le contenu d'une checkbox.
Si tu utilise ce boolean dans le filtre, veux-tu le comparer à un champ de la table ? SI oui, quel est le type de ce champ ?
Si tu utilise ce boolean dans le filtre, veux-tu le comparer à un champ de la table ? SI oui, quel est le type de ce champ ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
24 juin 2008 à 10:24
24 juin 2008 à 10:24
Ce boolean permet d'afficher ou pas (selon si la case est cochée) si les attributs des couches géographiques sont en locale ou non. Dans la table T_ATTRIBUT ce champ ce nomme ATTRIB_LOCAL et est de type Oui/Non.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 10:11
24 juin 2008 à 10:11
Si c'est au moment de l'ouverture de l'état que tu as le message d'erreur "ID_GEOBASE peut appartenir à différentes tables", essaie un peu en n'utilisant pas sqlfiltre dans le openreport.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 10:31
24 juin 2008 à 10:31
Pour l'instant cette erreur je ne l'ai plus ☺ mais en tout cas l'erreur d'incompatibilité commence à m'énerver, je ne trouve pas la variable dont le type bloque :s.
Voici le code :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As String
Dim V_ID_THEME As Integer
Dim V_ID_S_THEME As Integer
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As String
Dim V_SERVICE_NOM As String
Dim V_ID_AGENT As Integer
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' and ATTRIB_LOCAL ='" + V_LOCAL_ATTRIB + "'"
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
'DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
'sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
'sqlfiltre = " 0 = 0 "
'If Not IsNull(V_ID_GEOBASE_EMPL) Then
'If Not (IsNull(V_ID_SS_THEME) Or IsEmpty(V_ID_SS_THEME)) Then
End Sub
Voici le code :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As String
Dim V_ID_THEME As Integer
Dim V_ID_S_THEME As Integer
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As String
Dim V_SERVICE_NOM As String
Dim V_ID_AGENT As Integer
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' and ATTRIB_LOCAL ='" + V_LOCAL_ATTRIB + "'"
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
'DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
'sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
'sqlfiltre = " 0 = 0 "
'If Not IsNull(V_ID_GEOBASE_EMPL) Then
'If Not (IsNull(V_ID_SS_THEME) Or IsEmpty(V_ID_SS_THEME)) Then
End Sub
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 10:40
24 juin 2008 à 10:40
Le plus propre, c'est de faire ainsi :
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
if V_LOCAL_ATTRIB then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
else
sqlfiltre = sqlfiltre " and (not ATTRIB_LOCAL) "
end if
Avec cette logique, suivant que le checkbox est selectione ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux. Est-ce cela que tu veux obtenir ?
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
if V_LOCAL_ATTRIB then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
else
sqlfiltre = sqlfiltre " and (not ATTRIB_LOCAL) "
end if
Avec cette logique, suivant que le checkbox est selectione ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux. Est-ce cela que tu veux obtenir ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 10:48
24 juin 2008 à 10:48
Oui c'est exactement cela ^^ Je vais maintenant voir pourquoi j'ai toujours ce problème d'incompatibilité. Merci pour toute ton aide ! ☺ Mais je sens que je n'ai pas fini encore ^^
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
24 juin 2008 à 11:08
24 juin 2008 à 11:08
Je pense que l'incompatibilité devrait disparaitre avec ma derniere suggestion.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 11:16
24 juin 2008 à 11:16
J'ai mis toutes les variables sauf la checkbox en variant pour vérifier l'incompatibilité? Lors de l'exécution un message me dit :
Erreur d'exécution 3075 : Erreur de syntaxe (opérateur absent) dans l'expression '(and T_GEOBASE.ID_GEOBASE ='P' and T_COUCHE_GEO.ID_THEME ='6' and ID_S_THEME ='30' and ID_SS_THEME ="and T_GEOBASE.ID_GEOBASE =" and SERVICE_AGENT ='SEEF' and ID_AGENT ='65' and (not ATTRIB_LOCAL))'.
Je ne comprend pas tellement d'où cela peut venir :s
PS : Access me surligne cette ligne en jaune et le sql filtre à l'ai de contenir le contenu de message d'erreur :
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Erreur d'exécution 3075 : Erreur de syntaxe (opérateur absent) dans l'expression '(and T_GEOBASE.ID_GEOBASE ='P' and T_COUCHE_GEO.ID_THEME ='6' and ID_S_THEME ='30' and ID_SS_THEME ="and T_GEOBASE.ID_GEOBASE =" and SERVICE_AGENT ='SEEF' and ID_AGENT ='65' and (not ATTRIB_LOCAL))'.
Je ne comprend pas tellement d'où cela peut venir :s
PS : Access me surligne cette ligne en jaune et le sql filtre à l'ai de contenir le contenu de message d'erreur :
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 11:22
24 juin 2008 à 11:22
N'aurais-tu pas supprimé la ligne
sqlfiltre = " 0 = 0 "
avant sqlfiltre = sqlfiltre + ...
Je pense que tu tournes en rond, n'as tu pas négligé ma suggestion du lundi 23 juin 2008 à 10:28:47 ? Je pense qu'il vaut mieux éviter les variant et travailler sur les incompatibilités.
Une facon de voir rapidement les incompatibilités, c'est de decouper le "sqlfiltre =" en plusieurs lignes, en ajoutant progressivement des petits bouts à sqlfiltre.
Avec les variant, tu caches les incompatibilités, mais tu te crees d'autres problemes que tu n'as pas besoin de resoudre.
sqlfiltre = " 0 = 0 "
avant sqlfiltre = sqlfiltre + ...
Je pense que tu tournes en rond, n'as tu pas négligé ma suggestion du lundi 23 juin 2008 à 10:28:47 ? Je pense qu'il vaut mieux éviter les variant et travailler sur les incompatibilités.
Une facon de voir rapidement les incompatibilités, c'est de decouper le "sqlfiltre =" en plusieurs lignes, en ajoutant progressivement des petits bouts à sqlfiltre.
Avec les variant, tu caches les incompatibilités, mais tu te crees d'autres problemes que tu n'as pas besoin de resoudre.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 11:27
24 juin 2008 à 11:27
C'est pas faux excuse moi. Je l'ai mis comme ça :
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Mais hélas l'erreur du ID_GEOBASE qui appartient a plusieurs tables est revenue.
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Mais hélas l'erreur du ID_GEOBASE qui appartient a plusieurs tables est revenue.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 11:34
24 juin 2008 à 11:34
Je pense que si tu as l'erreur du ID_GEOBASE qui appartient a plusieurs tables, c'est signe que tu progresses, ce n'est pas le moment de faire marche arrière !
Si c'est au moment de l'ouverture de l'état que tu as le message d'erreur "ID_GEOBASE peut appartenir à différentes tables", essaie un peu en n'utilisant pas sqlfiltre dans le openreport.
Si c'est au moment de l'ouverture de l'état que tu as le message d'erreur "ID_GEOBASE peut appartenir à différentes tables", essaie un peu en n'utilisant pas sqlfiltre dans le openreport.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 11:41
24 juin 2008 à 11:41
Oui je sens aussi que je progresse (grâce à toi ^^).
Comme tu m'as dis j'ai enlevé sql filtre de la ligne qui permet d'ouvrir l'état mais à la place je met quoi ? ça :
" and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
Parce qu'avec ça l'erreur 3075 revient mais pas avec ID_GEOBASE, avec tout le détail comme tout à l'heure :
erreur de syntaxe dans l'expression '(and....etc (comme au dessus)).
Comme tu m'as dis j'ai enlevé sql filtre de la ligne qui permet d'ouvrir l'état mais à la place je met quoi ? ça :
" and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
Parce qu'avec ça l'erreur 3075 revient mais pas avec ID_GEOBASE, avec tout le détail comme tout à l'heure :
erreur de syntaxe dans l'expression '(and....etc (comme au dessus)).
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 11:47
24 juin 2008 à 11:47
Tu fais simplement :
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
C'est pour voir si l'erreur vient du filtre ou pas.
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
C'est pour voir si l'erreur vient du filtre ou pas.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 11:49
24 juin 2008 à 11:49
Mmmmm ben non il y a toujours l'erreur de ID_GEOBASE...
Cela viendrait donc d'autre part que le filtre ?
Cela viendrait donc d'autre part que le filtre ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 11:53
24 juin 2008 à 11:53
Et su tu ouvres l'état à la main ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 11:58
24 juin 2008 à 11:58
Le champ spécifié ID_GEOBASE peut désigner plusieurs tables.... blabla ... toujours la même chose.
Avant cela ne me le faisait pas.. Cela vient donc de la requête source si je comprend bien ?
Avant cela ne me le faisait pas.. Cela vient donc de la requête source si je comprend bien ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 12:01
24 juin 2008 à 12:01
Cela vient de l'état, soit de la requete source, soit d'autre chose.
J'ai toujours une vague inquetude à propos de quelque chose que tu avais mentioné à propos d'un sous état... Cela te dit quelque chose, c'était dans ton mesage du lundi 23 juin 2008 à 09:30:22 ?
Tu peux y jeter un coup d'oeil ?
J'ai toujours une vague inquetude à propos de quelque chose que tu avais mentioné à propos d'un sous état... Cela te dit quelque chose, c'était dans ton mesage du lundi 23 juin 2008 à 09:30:22 ?
Tu peux y jeter un coup d'oeil ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 12:05
24 juin 2008 à 12:05
Va falloir que j'aille manger :s. Je re cette aprem. Pour ce qui des sous états il y en a 3. Un qui affiche les attributs, un qui affiche les mise à jour de la couches et les personnes qui les effectuent et le dernier qui affiche les responsable. A toute je serais la dans une petite heure.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 13:30
24 juin 2008 à 13:30
Re bonjour, voilà les requêtes sources de mes différents sous états, pourrais tu me dire si je dois les supprimer ?
Sous état ATTRIBUT :
SELECT T_ATTRIBUT.*
FROM T_ATTRIBUT;
Sous état MAJ Historique
SELECT T_MAJ_HISTO.*, T_MAJ_RESP.ID_MAJ_RESP, T_MAJ_RESP.ID_AGENT, T_AGENT.AGENT_NOM
FROM T_MAJ_HISTO LEFT JOIN (T_AGENT RIGHT JOIN T_MAJ_RESP ON T_AGENT.ID_AGENT = T_MAJ_RESP.ID_AGENT) ON T_MAJ_HISTO.ID_MAJ_HISTO = T_MAJ_RESP.ID_MAJ_HISTO;
Sous état RESPONSABLE :
SELECT T_RESP.*, T_AGENT.*
FROM T_AGENT INNER JOIN T_RESP ON T_AGENT.ID_AGENT = T_RESP.ID_AGENT;
Sous état ATTRIBUT :
SELECT T_ATTRIBUT.*
FROM T_ATTRIBUT;
Sous état MAJ Historique
SELECT T_MAJ_HISTO.*, T_MAJ_RESP.ID_MAJ_RESP, T_MAJ_RESP.ID_AGENT, T_AGENT.AGENT_NOM
FROM T_MAJ_HISTO LEFT JOIN (T_AGENT RIGHT JOIN T_MAJ_RESP ON T_AGENT.ID_AGENT = T_MAJ_RESP.ID_AGENT) ON T_MAJ_HISTO.ID_MAJ_HISTO = T_MAJ_RESP.ID_MAJ_HISTO;
Sous état RESPONSABLE :
SELECT T_RESP.*, T_AGENT.*
FROM T_AGENT INNER JOIN T_RESP ON T_AGENT.ID_AGENT = T_RESP.ID_AGENT;
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
24 juin 2008 à 14:38
24 juin 2008 à 14:38
Ces requetes source ont l'air ok.
Je pense que, quelque part dans l'état, il y a le champ "ID_GEOBASE", peut-être dans les propriétés d'un textbox ?
Je pense que, quelque part dans l'état, il y a le champ "ID_GEOBASE", peut-être dans les propriétés d'un textbox ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 14:43
24 juin 2008 à 14:43
Oui c'est ça je l'ai 4 fois au total ! Une fois dans l'état et une fois dans chaque sous état !! je vais essayer de préfixer chaque textbox.
EDIT : Bon je l'ai est toutes préfixées de la tables les concernant et il me dis toujours que id_geobase peut être listé dans plusieurs tables, pourquoi ? Faut il que je modifie la source de mes état ou du moins que j'y précise la table à laquelle appartient l'id geo ?
EDIT : Bon je l'ai est toutes préfixées de la tables les concernant et il me dis toujours que id_geobase peut être listé dans plusieurs tables, pourquoi ? Faut il que je modifie la source de mes état ou du moins que j'y précise la table à laquelle appartient l'id geo ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
24 juin 2008 à 16:09
24 juin 2008 à 16:09
id_geobase est dans plusieurs tables, non ? Tu dois donc, à chaque fois, préciser à quel table appartient id_geo.
N'est ce pas ce que tu as deja fait ?
N'est ce pas ce que tu as deja fait ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
24 juin 2008 à 16:13
24 juin 2008 à 16:13
Si je viens de le faire mais maintenant il ne me trouve plus d'erreur mais me demande d'entrer ce que j'ai dis juste en dessous.
Avant j'avais fait par exemple : SELECT T_COUCHE_GEO.ID_GEOBASE, T_COUCHE_GEO.*, etc... Là j'ai tout les champs de détaillés (préfixés par une table) grâce à l'assistant.
Avant j'avais fait par exemple : SELECT T_COUCHE_GEO.ID_GEOBASE, T_COUCHE_GEO.*, etc... Là j'ai tout les champs de détaillés (préfixés par une table) grâce à l'assistant.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
24 juin 2008 à 15:25
24 juin 2008 à 15:25
Bon j'ai recrée la requête source de mon état et idem pour mes 3 sous états en préfixant chaque champs de chaque table (vive l'assistant ^^)
Le problème de id_geobase n'apparait plus mais lord du click sur le bouton un petite case apparait et me demande de saisir : ID_GEOBASE, ID_THEME, T_AGENT.ID_AGENT, et encore T_AGENT.ID_AGENT !!
Là je comprend pas tellement. Et quand j'ai rentré ces informations l'état s'affiche avec ce que je viens de marquer.
Pourquoi ce que j'ai écrit dans le code a l'air de ne pas fonctionner ??
Le problème de id_geobase n'apparait plus mais lord du click sur le bouton un petite case apparait et me demande de saisir : ID_GEOBASE, ID_THEME, T_AGENT.ID_AGENT, et encore T_AGENT.ID_AGENT !!
Là je comprend pas tellement. Et quand j'ai rentré ces informations l'état s'affiche avec ce que je viens de marquer.
Pourquoi ce que j'ai écrit dans le code a l'air de ne pas fonctionner ??
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
24 juin 2008 à 16:10
24 juin 2008 à 16:10
Si tu ouvres ton état à la main, que vois-tu ? En principe, tu dois voir les infos de tous tes enregistrements, puisqu'il n'y a pas de filtre.
Je veux être certain que l'état est de nouveau ok avant de travailler sur le code. De plus, comme tu as changé ou recréé l'état, il faut peut-être adapter les sous-états ou le code.
Je veux être certain que l'état est de nouveau ok avant de travailler sur le code. De plus, comme tu as changé ou recréé l'état, il faut peut-être adapter les sous-états ou le code.
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
24 juin 2008 à 16:44
24 juin 2008 à 16:44
J'ai tout remis comme avant donc quand je lance l'état à la main tous les enregistrements s'affichent et quand j'exécute mon code depuis le bouton il me dis le pb de id_geobase.
Voici mon code :
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and (not ID_SS_THEME) "
Else
sqlfiltre = sqlfiltre + " and ID_SS_THEME"
End If
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Ce que je ne comprend pas c'est que tout à l'heure en préfixant j'ai réussi à ouvrir mon état mais mon code n'était pas pris en compte. Il me demander de rentrer des infos et il m'afficher pas très bien la couches géographique.
Voici mon code :
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_SS_THEME = '" + V_ID_SS_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and (not ID_SS_THEME) "
Else
sqlfiltre = sqlfiltre + " and ID_SS_THEME"
End If
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
Ce que je ne comprend pas c'est que tout à l'heure en préfixant j'ai réussi à ouvrir mon état mais mon code n'était pas pris en compte. Il me demander de rentrer des infos et il m'afficher pas très bien la couches géographique.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
24 juin 2008 à 17:21
24 juin 2008 à 17:21
Si dans le code tu fais simplement la ligne suivante, sans utiliser le filtre, que se passe-t-il ?
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
A propos de ce que tu ne comprends pas (tout à l'heure en préfixant j'ai réussi à ouvrir mon état mais mon code n'était pas pris en compte. Il me demander de rentrer des infos et il m'afficher pas très bien la couches géographique.), à ce moment-là, s tu ouvrais l'état à la main, que se passait-il ? Comme tu as choisi de tout remettre comem avant, le saurons-nous jamais ?
Attention, ta gestion du null de la liste LISTE_SS_THEME est foireuse , il vaut mieux faire :
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and ID_SS_THEME = '" + V_ID_SS_THEME + "' "
End If
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
A propos de ce que tu ne comprends pas (tout à l'heure en préfixant j'ai réussi à ouvrir mon état mais mon code n'était pas pris en compte. Il me demander de rentrer des infos et il m'afficher pas très bien la couches géographique.), à ce moment-là, s tu ouvrais l'état à la main, que se passait-il ? Comme tu as choisi de tout remettre comem avant, le saurons-nous jamais ?
Attention, ta gestion du null de la liste LISTE_SS_THEME est foireuse , il vaut mieux faire :
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and ID_SS_THEME = '" + V_ID_SS_THEME + "' "
End If
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
>
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
25 juin 2008 à 09:52
25 juin 2008 à 09:52
Bonjour,
Pour répondre à tes questions voilà :
Pour l'exécution du code avec cette ligne DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
Tu veux dire que je ne dois rien mettre d'autre ? SI c'est le cas j'ai fait le test et il me met le pb de ID_GEOBASE donc à mon avis j'ai une text box qui ne doit pas être préfixée dans mon état ou dans un des sous état.
Pour ce que je ne comprenez pas : En fait quand j'ai exécuté le code à partir du bouton Access me demandé de rentrer un ID_GEOBASE, un ID_THEME et deux foix un T_AGENT.ID_AGENT. Et pour l'ouverture du code à la main il me demandé de renseigner T_AGENT.ID_AGENT (mais j'avais beau le renseigner cela me répété toujours d'écrire T_AGENT.ID_AGENT)
Vraiment bizarre :s
Pour gérer le null de la liste LISTE_SS_THEME je vais corriger avec ce que tu as mis.
Je te donne les détails bientôt.
EDIT : Bon j'ai fais le test et il me dis Erreur d'exécution 13 : Incompatibilité de type. Je pense que cela vient de ce qui est en gras car il me le met à vide dans le sql filtre mais avant dans la récupération des valeurs de liste il m'affiche bien l'id.
Voici mon Code :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS(là il récupère bien l'id exple P pour production)
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and ID_SS_THEME = '" + V_ID_SS_THEME + "' "
End If
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS +(là il me le met vide !) "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' and ATTRIB_LOCAL ='" + V_LOCAL_ATTRIB + "' "
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
'MsgBox V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
'sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
'If Not (IsNull(V_ID_SS_THEME) Or IsEmpty(V_ID_SS_THEME)) Then
End Sub
Pour répondre à tes questions voilà :
Pour l'exécution du code avec cette ligne DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview
Tu veux dire que je ne dois rien mettre d'autre ? SI c'est le cas j'ai fait le test et il me met le pb de ID_GEOBASE donc à mon avis j'ai une text box qui ne doit pas être préfixée dans mon état ou dans un des sous état.
Pour ce que je ne comprenez pas : En fait quand j'ai exécuté le code à partir du bouton Access me demandé de rentrer un ID_GEOBASE, un ID_THEME et deux foix un T_AGENT.ID_AGENT. Et pour l'ouverture du code à la main il me demandé de renseigner T_AGENT.ID_AGENT (mais j'avais beau le renseigner cela me répété toujours d'écrire T_AGENT.ID_AGENT)
Vraiment bizarre :s
Pour gérer le null de la liste LISTE_SS_THEME je vais corriger avec ce que tu as mis.
Je te donne les détails bientôt.
EDIT : Bon j'ai fais le test et il me dis Erreur d'exécution 13 : Incompatibilité de type. Je pense que cela vient de ce qui est en gras car il me le met à vide dans le sql filtre mais avant dans la récupération des valeurs de liste il m'affiche bien l'id.
Voici mon Code :
Option Compare Database
Private Sub BT_AFFICHER_Click()
'Déclaration des variables
Dim V_ID_GEOBASE_EMPL As Variant
Dim V_ID_THEME As Variant
Dim V_ID_S_THEME As Variant
Dim V_ID_SS_THEME As Variant
Dim V_ID_GEOBASE_INS As Variant
Dim V_SERVICE_NOM As Variant
Dim V_ID_AGENT As Variant
Dim V_LOCAL_ATTRIB As Boolean
'Récupération des valeurs dans les variables
V_ID_GEOBASE_EMPL = F_GEOBASE_EMPL
V_ID_THEME = F_ID_THEME
V_ID_S_THEME = F_ID_S_THEME
V_ID_SS_THEME = F_ID_SS_THEME
V_ID_GEOBASE_INS = F_ID_GEOBASE_INS(là il récupère bien l'id exple P pour production)
V_SERVICE_NOM = LISTE_SERVICE
V_ID_AGENT = F_ID_AGENT
V_LOCAL_ATTRIB = cb_attribut
sqlfiltre = " 0 = 0 "
'Permet de gérer le null de la liste LISTE_SS_THEME
If Not IsNull(V_ID_SS_THEME) Then
sqlfiltre = sqlfiltre + " and ID_SS_THEME = '" + V_ID_SS_THEME + "' "
End If
'Permet que suivant si la checkbox est selectionée ou pas, le filtre selectionera les valeurs où ATTRIB_LOCAL est vrai ou faux
If V_LOCAL_ATTRIB Then
sqlfiltre = sqlfiltre + " and ATTRIB_LOCAL "
Else
sqlfiltre = sqlfiltre + " and (not ATTRIB_LOCAL) "
End If
'Filtre récupérant le contenu de chaque variable
sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "'and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEROBASE_INS +(là il me le met vide !) "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "' and ATTRIB_LOCAL ='" + V_LOCAL_ATTRIB + "' "
'Syntaxe permettant d'ouvrir l'état E_SPECIFIQUE et d'y afficher les couches géographiques concernées par les critères
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , sqlfiltre
'MsgBox V_ID_GEOBASE_EMPL & Chr(13) & V_ID_THEME & Chr(13) & V_ID_S_THEME & Chr(13) & V_ID_SS_THEME & Chr(13) & V_ID_GEOBASE_INS & Chr(13) & V_SERVICE_NOM & Chr(13) & V_ID_AGENT
'sqlfiltre = " T_GEOBASE.ID_GEOBASE = '" + V_ID_GEOBASE_EMPL + "' and T_COUCHE_GEO.ID_THEME = '" + V_ID_THEME + "' and ID_S_THEME = '" + V_ID_S_THEME + "' and ID_S_THEME = '" + V_ID_SS_THEME + "' and T_GEOBASE.ID_GEOBASE = '" + V_ID_GEROBASE_INS + "' and SERVICE_AGENT = '" + V_SERVICE_NOM + "' and ID_AGENT ='" + V_ID_AGENT + "'"
'If Not (IsNull(V_ID_SS_THEME) Or IsEmpty(V_ID_SS_THEME)) Then
End Sub
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
25 juin 2008 à 11:09
25 juin 2008 à 11:09
Il n'y a pas un R en trop dans V_ID_GEROBASE_INS ?
Suggestion : ajouter "option explicit" tout au debut du code, tu auras alors une erreur de syntaxe pour ce genre d'anomalie.
Si l'ouverture "à la main" de l'état fonctionne sans erreur, mais que l'ouverture par le code, sans filtre, donne une erreur, je suis surpris... Est-ce bien le même état ?
Suggestion : ajouter "option explicit" tout au debut du code, tu auras alors une erreur de syntaxe pour ce genre d'anomalie.
Si l'ouverture "à la main" de l'état fonctionne sans erreur, mais que l'ouverture par le code, sans filtre, donne une erreur, je suis surpris... Est-ce bien le même état ?
Onishi
Messages postés
314
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
11 février 2009
21
25 juin 2008 à 11:40
25 juin 2008 à 11:40
Effectivement il y avait un R en trop et maintenant cela récupère bien l'ID.
J'ai ajouté "option explicit" au tout début du code et lorsque je compile voici l'erreur qui apparait :
Erreur de compilation : Variable non définie et il me surligne ceci : "sqlfiltre =" de la ligne sqlfiltre = " 0 = 0 "
En plus j'ai du trop bidouiller mais mon état ne s'ouvre plus correctement à la main :s.
J'ai ajouté "option explicit" au tout début du code et lorsque je compile voici l'erreur qui apparait :
Erreur de compilation : Variable non définie et il me surligne ceci : "sqlfiltre =" de la ligne sqlfiltre = " 0 = 0 "
En plus j'ai du trop bidouiller mais mon état ne s'ouvre plus correctement à la main :s.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
25 juin 2008 à 11:54
25 juin 2008 à 11:54
ajoute dim sqlfiltre as string
Que dit-il quand tu ouvres l'état à la main ?
Que dit-il quand tu ouvres l'état à la main ?
19 juin 2008 à 11:27
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, "est ce là que je dois mettre ma requête ????"
19 juin 2008 à 11:32
19 juin 2008 à 11:33
19 juin 2008 à 11:40
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , (ID_GEOBASE = " & P & ")
Ma requête est celle ci :
SELECT T_COUCHE_GEO.*
FROM T_COUCHE_GEO
WHERE ID_GEOBASE="P";
Quand je clique sur le bouton il m'affiche mon état mais tous les champs sont rempli par #Nom ?
Je ne sais pas quoi mettre dans la source de mon état :s Une requête ?
19 juin 2008 à 13:29
DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview, , " ID_GEOBASE = " & P
et si tu fais la requete à la main, qu'obtiens-tu ?