[VBA] GROS PROBLEME !! help plz

Résolu
Bonjour,

Voilà mon problème, je possède un formulaire contenant 4 listes déroulantes. Chacune est renseigné selon une requête. C'est listes sont aussi liées entre elles. C'est en fait un formulaire de recherche poussé. L'utilisateur choisi ses critères et lorsqu'il clique sur le bouton Édition, selon les critère choisi un certains nombres de couches géographiques doivent s'affichaient dans un état.
Problème : Comment récupérer les critères choisi par l'utilisateur et comment envoyer les informations filtrées à l'état ??? Existe t il un moyen de changer la source d'un état depuis un bouton d'un formulaire ???? SVP aidez moi c'est très important !!!!!!
--
0nïzuk@ + K@k@shï ===== 0nïshï
Configuration: Windows XP
Firefox 2.0.0.14

23 réponses

Résumé de la discussion

La problématique porte sur la récupération des critères choisis par l'utilisateur dans quatre listes déroulantes et la transmission de ces filtres à un rapport généré à partir d'un formulaire Access. L'approche consiste à utiliser DoCmd.OpenReport avec une clause WHERE pour passer les critères filtrés et adapter dynamiquement la requête source de l'état depuis le formulaire. En cas d'erreurs liées à des champs multiples ou à des collisions de tables, il peut être nécessaire de construire la condition WHERE dans la requête ou d'éviter l'usage de sqlfiltre lors de l'ouverture. Pour éviter l'ambiguïté liée à ID_GEOBASE, privilégier une approche ciblée sur un seul champ et tester les filtres directement dans les contrôles du formulaire.

Bobot (l’IA à votre service)
  1. Désolé de répondre que maintenant mais ma maître de stage à voulut m'aider (enfin ?) et elle s'énerve dessus et j'ai pas eu le temps de faire un copie et elle a déjà modifié pas mal de trucs :s. Je vais te tenir au courant mais bon maintenant elle me demande de trouver des solutions alors que je peux pas continuer sur ma lancé... A+

    EDIT : je suis entrain de récupérer le code un peu plus je pense qu'on pourra reprendre ^^
    1. Temporairement je vais essayer mais bon à la base ils doivent rester dans les sous états. Et j'ai exécuté la requête source de l'état et ces champs n'apparaissent pas :s. Existe t il une syntaxe pour les envoyer sur les sous états directement du genre :

      DoCmd.OpenReport "[E_SPECIFIQUE]![lenomdemonsousetat]", acViewPreview, , sqlfiltre

      ?
    2. Contributeur
      @OnishiTu ne peux pas mettre dans le filtre de l'état un champ qui n'est pas dans la requete de base de l'état. Tu ne peux pas non plus mettre dans l'état un champ qui n'est pas dans cette requete.
      Je te suggère :
      - temporairement, supprime ces trois champs de ton filtre, pour voir si le reste fonctionne
      - essayer de rajouter ces trois champs dans la requete de base de l'état, si cela a un sens
      - reflechir à ce que ces champs ont de particulier, qui ferait qu'ils n'ont pas leur place dans la requete de base de l'état
    3. @yg_beJ'ai essayer de les mettre directement dans l'état après avoir modifié la requête source. Mais il ma mis une erreur lors de l'exécution (toujours la 3071) mais il me demandé en plus de renseigné T_ATTRIBUT et T_AGENT pourtant ils sont dans la requête source !

      Si il n'ont pas leur place dans la requête base de l'état c'est que cette requête ne doit afficher que les informations concernant les couches géographiques et leur thématique. Voilà pourquoi ils sont dans des sous état.

      En gros cet état et l'adaptation d'un formulaire que j'ai réalisé avec des sous formulaire. Je doit le créer juste dans le but de pouvoir imprimer mes résultats.
    4. Contributeur
      @OnishiAprès avoir modifié la requete source, que donnes l'execution à la main de la requete source ? Pas d'erreur ? Y vois-tu les nouveaux champs ?

      Je te suggère, temporairement, de supprimer ces trois champs de ton filtre, pour voir si le reste fonctionne.

      Même si tu veux visualiser certains champs dans des sous-états, pourquoi ne pas les inclure dans la requete source de l'état. J'ai jété un coup d'oeil sur les requetes sources de tes sous états : en fait, les sous états sont indépendants de l'état.

      Ai-je bien compris, il n'y a vraiment pas de lien entre l'état et les sous états ?

      Si c'est le cas, comment imagine tu que cela va s'imprimer harmonieusement ?

  2. Contributeur
    Je pense que les trois champs (ATTRIB_LOCAL, T_AGENT.SERVICE_AGENT et T_AGENT.ID_AGENT) sont inconnus dans le contexte de l'état.
    Tu peux faire deux vérifications :
    1) Un des trois champs est-il affiché dans l'état ? Si oui, comment s'appelle-t-il exactement dans l'état ?
    2) Ouvre "à la main" la requete qui sert de base à l'état. Ces trois champs y sont-ils présents ? Quel sont les titres de leurs colonnes ?
    1. En effet ATTRIB_LOCAL est présent dans le sous état SE_ATTRIBUT sous forme de Checkbox et sa source est ATTRIB_LOCAL.
      Idem pour T_AGENT.SERVICE_AGENT, il était dans le sous formulaire SE_AGENT et je l'ai renommé T_AGENT.SERVICE_AGENT car il été nommé SERVICE_AGENT.
      En tout cas pour T_AGENT.ID_AGENT, il était présent dans les deux sous état cité au-dessus mais il était pourtant bien préfixé de la table T_AGENT.

      Je vais voir ce que cela donne déjà.
    2. Contributeur
      @OnishiTu ne peux mettre dans le filtre que des champs qui peuvent être présent dans l'état. Pour le moment, tu testes dans le filtre des champs qui ne sont pas dans l'état, et il est donc possible qu'ils ne soient pas utilisable au niveau de l'état.
      Peux-tu vérifier si il est possible de les ajouter temporairement dans l'état (pas dans un sous état, dans l'état lui-meme) ? Si cela n'est pas possible, il est normal que tu ne puisses pas t'en servir dans le filtre...
      Ces champs apparaissent-ils quand tu ouvres à la main la requete de base de l'état ?
  3. C'est bon pour le sql filtre sauf que après il me redis un pb d'incompatibilité.
    Pour mon état je suis entrain de refaire là requête source (j'ai un peu de mal) mais peu importe quand je veux l'ouvrir il me dis que ID_THEME peut appartenir a différentes tables listées et blablabla...

    Je te met deux liens pour te montrer à quoi ressemble mon état à la base (tu pourras y voir ce que chaque text box doit contenir :

    http://www.easy-upload.net/fichier.php?fichier=200862512210

    et

    http://www.easy-upload.net/fichier.php?fichier=200862512327

    Dis moi ce que tu en penses ?

    EDIT : je dois aller manger à toute
    1. Contributeur
      Une facon de voir rapidement les incompatibilités, c'est de decouper le "sqlfiltre =" en plusieurs lignes, en ajoutant progressivement des petits bouts à sqlfiltre. Ce sera aussi plus clair.

      Exemple :
      sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
      sqlfiltre = sqlfiltre + " and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' "
      sqlfiltre = sqlfiltre + etc...

      En ce qui concerne la création de ton état, je recommande :
      - de créer une requete, avec un nom, dont la syntaxe est environ ceci :
      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];
      - verfifier que cette requete est bien presente dans la liste des requetes, et que, quand tu l'ouvres, elle te montre bien toutes tes données
      - utiliser le nom cette requete comme source de l'état
    2. @yg_beVoilà donc j'ai refait la requête comme tu as dit. A la main l'état affiche tout et avec ce code :

      Option Explicit
      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
      Dim sqlfiltre As Variant

      '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 "

      '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

      sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_EMPL + "' "
      sqlfiltre = sqlfiltre + " and [T_COUCHE_GEO].[ID_THEME] = '" + V_ID_THEME + "' "
      sqlfiltre = sqlfiltre + " and [T_COUCHE_GEO].[ID_S_THEME] = '" + V_ID_S_THEME + "' "
      sqlfiltre = sqlfiltre + " and [T_COUCHE_GEO].[ID_SS_THEME] = '" + V_ID_SS_THEME + "' "
      sqlfiltre = sqlfiltre + " and [T_GEOBASE].[ID_GEOBASE] = '" + V_ID_GEOBASE_INS + "' "
      sqlfiltre = sqlfiltre + " and [T_AGENT].[SERVICE_AGENT] = '" + V_SERVICE_NOM + "' "
      sqlfiltre = sqlfiltre + " and [T_AGENT].[ID_AGENT] = '" + V_ID_AGENT + "' "
      sqlfiltre = sqlfiltre + " and [T_ATTRIBUT].[ATTRIB_LOCAL] = '" + V_LOCAL_ATTRIB + "' "

      '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_GEOBASE_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

      '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

      Et bien cela m'a affiché l'état à un moment avec toutes les couches (alors que je n'en voulais que certaines) et après j'ai mis un point de repère et j'ai exécuté le code pas à pas (avec F8) et l'erreur d'incompatibilité vient de la ligne en gras au dessus. Tu serais me dire pourquoi ?

      EDIT : Bon déjà j'avais oublié de réinitialiser la checkbox avec le bouton réinitialiser mais l'erreur d'incompatibilité n'apparait que lorsque je réexécute le code après avoir cliqué sur le bouton réinitialisé. L'erreur d'incompatibilité revient à chaque fois si jutilise ce bouton.

      RE EDIT : en fait maintenant des que je clique sur le bouton il me dis qu'il n'arrive pas à gérer le null de la liste_ss_theme pourtant j'ai bien utilisé la syntaxe que tu m'as donné tout à l'heure et ça marché et je n'ai rien modifié...je suis perdu lol ☺
    3. Contributeur
      @OnishiComme tu fais un traitement specifique pour V_ID_SS_THEME et pour V_LOCAL_ATTRIB (tu les ajoutes dans sqlfiltre dans les instructions avec IF), tu ne dois surtout pas laisser les lignes dans la suite du code.

      Ainsi, les deux lignes suivantes doivent être supprimées :
      sqlfiltre = sqlfiltre + " and [T_COUCHE_GEO].[ID_SS_THEME] = '" + V_ID_SS_THEME + "' "
      sqlfiltre = sqlfiltre + " and [T_ATTRIBUT].[ATTRIB_LOCAL] = '" + V_LOCAL_ATTRIB + "' "

      Dans les exemples que je t'ai envoyé, j'avais fait cela, mais sans insister, et cela était sans doute trop discret.

      En passant, je te rappelle ma suggestion de régulièrement tester les trois éléments suivants :
      - l'ouverture à la main de l'état
      - l'ouverture de l'état avec le code, mais sans filtre
      - l'ouverture de l'état avec le code et le filtre

      Chacun de ces tests devrait fonctionner, et les trois tests t'aideront à détecter plus facilement ce qui ne fonctionne pas.
    4. @yg_beBonjour,

      j'ai enlevé les deux lignes et j'ai ouvert l'état à la main tout fonctionne, puis j'ai ouvert grâce au code sans le , , sqlfiltre
      et il ma fait comme si j'ouvrai l'état à la main.
      Pour la dernière solution il me demande des information à rentrer avant d'afficher le formulaire comme ATTRIB_LOCAL, T_AGENT.SERVICE_AGENT et T_AGENT.ID_AGENT puis il me met une erreur 3071 assez longue qui m'explique que ma syntaxe est soit trop complexe soit incorrecte, qu'une expression numérique peut contenir des éléments trop compliqués et qu'il faut que j'essaye de la simplifié en affectant des parties à des variables.
      (ça c'est dans le cas ou je n'ai rien rentré comme informations => j'ai directement cliqué sur ok les 3 fois) et finalement même en complétant il me met la même erreur.
  4. 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.
    1. Contributeur
      ajoute dim sqlfiltre as string

      Que dit-il quand tu ouvres l'état à la main ?
  5. 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 ??
    1. Contributeur
      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.
    2. @yg_beJ'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.
    3. Contributeur
      @OnishiSi 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
    4. @yg_beBonjour,

      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
    5. Contributeur
      @OnishiIl 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 ?
  6. Contributeur
    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 ?
    1. 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 ?
    2. Contributeur
      @Onishiid_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 ?
    3. @yg_beSi 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.
  7. 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;
    1. 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.
      1. Contributeur
        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 ?
        1. Contributeur
          Et su tu ouvres l'état à la main ?
          1. 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 ?
        2. Contributeur
          Tu fais simplement :
          DoCmd.OpenReport "E_SPECIFIQUE", acViewPreview

          C'est pour voir si l'erreur vient du filtre ou pas.
          1. Mmmmm ben non il y a toujours l'erreur de ID_GEOBASE...

            Cela viendrait donc d'autre part que le filtre ?
        3. Contributeur
          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.
          1. 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)).
        4. 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.
          1. Contributeur
            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.
            1. 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
              1. Contributeur
                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 ?
                1. 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 ^^
                2. Contributeur
                  @OnishiJe pense que l'incompatibilité devrait disparaitre avec ma derniere suggestion.
              2. Contributeur
                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.
                1. 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
              3. 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 + "'"
                1. 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.
                2. Contributeur
                  @OnishiBonne 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 ?
                3. @yg_beCe 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.
              4. Contributeur
                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.
                1. 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 ^^
                2. Contributeur
                  @OnishiIl 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

                3. @yg_beBonjour 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
                4. Contributeur
                  @OnishiSuggestion :

                  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
                5. @yg_beLa 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
              5. Contributeur
                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 + "'"
                1. 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
              • 1
              • 2