IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Err. 3360 , 'Requete trop complexe'


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Points : 30
    Points
    30
    Par défaut Err. 3360 , 'Requete trop complexe'
    Bonjour,

    j'ai un pti soucis avec ma base access;
    j'ai un fais un pti formulaire de recherche qui a tjs bien tourné,
    et là dans un cas visiblement particulier, j'ai un message d'erreur :

    Erreur 3360, la requete est trop complexe.

    Dans certains cas, mon code fonctionne bien, mais là je ne sais pas pkoi ca ne va pas... si quelqu'un peut m'aider....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    'On recupère le recordset (rst) du Formulaire interloc
            Set rst = Form_interlocuteurs_sf.Recordset
            rst.MoveFirst
            'clause1 sur id_resp_mission
            Let clause1 = "id_resp_mission = " & rst.Fields("id_interloc") & " OR "
            'Tant qu'il y a des 'id_interloc' dans le formulaire interloc (->rst)
            While Not rst.EOF
                Let clause1 = clause1 & "id_resp_mission = " & rst.Fields("id_interloc") & " OR "
                rst.MoveNext
            Wend
     
            'On retire le " OR " a la fin
            While Right(clause1, 4) = " OR "
                clause1 = Left(clause1, Len(clause1) - 4)
            Wend
     
            'Donne la source du Formulaire bureau
            Form_references.RecordSource = (SQL & clause1 & " ORDER BY references.channel, references.date_fin DESC;")
     
            Set rst = Nothing
    J'allais oublier, voici l'SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Let SQL = "SELECT DISTINCT references.*, APE.sect_acti, interlocuteurs.etat_civil, interlocuteurs.nom, interlocuteurs.prenom, iso.pays_vf " & _
              "FROM (([references] INNER JOIN APE ON references.code_APE = APE.code_APE) INNER JOIN iso ON references.iso_pays = iso.iso) INNER JOIN interlocuteurs ON references.id_resp_mission = interlocuteurs.id_interloc WHERE "
    Merci beaucoup !!

    fabrice518

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    Cette requete permet d'enregistrer quoi comme informations au juste ?

    Que se passe t'il si ton recordset est vide ?

    tu peux essayer de faire un msgbox de ta requete finale
    msgbox SQL & clause1 & " ORDER BY references.channel, references.date_fin DESC;"
    (c'est pas la bonne syntaxe)
    comme ca tu pourras voir ou est le problème.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Points : 30
    Points
    30
    Par défaut err 3360
    - La requete sert a enumerer les 'references' (clients) de chaque interlocuteurs
    (d'ou le While avec la clause1.. ." OR " ...).
    - si le rst est vide, il ne se passe rien, le formulaire sera vide.
    - j'ai deja essayé le Msgbox, qui me donne bien une requete...
    Peut-etre que la requete est composée d'un trop gd nbre de caractere ?

    Merci pour ton aide...


    fabrice

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mai 2004
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 236
    Points : 310
    Points
    310
    Par défaut
    Tu as combien d'interlocuteurs (id_interloc) au max ? Je pense que le problème vient du fait que tu boucles sur un nombre assez grand d'interlocuteur. D'une part le nombre de caractère pour une variable de type string est limité et d'autre part access n'accepte qu'un nombre limité de condition dans le WHERE (il me semble me souvenir que c'est 20 ou 30 OR et AND qui s'enchainent).

    Tu peux peut-être passé par un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id_resp_mission IN (Id_interloc1,Interloc2...)
    voir une sous-requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id_resp_mission IN (SELECT ID_Interloc FROM table as t1 where t2.id_resp_mission = t1.ID_Interloc)
    Peux-tu nous indiquer 'le recordset (rst) du Formulaire interloc' ?

    En espérant t'avoir aidé.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Points : 30
    Points
    30
    Par défaut Access err 3360 requete complexe
    Je pense que ca va m'aider, oui !

    voici mon recordset interloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "SELECT DISTINCT interlocuteurs.*, iso.pays_vf, type_statut_interloc.statut, bureaux.ville, asst.*" & _
              "FROM ((bureaux INNER JOIN (iso INNER JOIN interlocuteurs ON iso.iso = interlocuteurs.iso) ON (iso.iso = bureaux.iso) AND (bureaux.id_bur = interlocuteurs.id_bur)) INNER JOIN type_statut_interloc ON interlocuteurs.code_statut = type_statut_interloc.code_statut) INNER JOIN asst ON interlocuteurs.id_asst = asst.id_asst WHERE "
    sans la clause.

    En fait, je peux avoir jusqu'a environ 1000 resultats pour ce rst. C'est peut etre pour ca que la requete ensuite ne fonctionne pas puisque comme tu l'as dis, ca equivaudrait a faire 1000 " OR " dans ma requete...

    Je ne sais donc pas comment je vais faire... il faut que je m'informe sur les solutions que tu m'as proposé ( le IN ) que je ne connais pas (novice...)

    Je vous tiens informé, merci pour vos propositions !!


    Fabrice

Discussions similaires

  1. Requete trop complexe
    Par kerneispa dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/07/2013, 14h55
  2. requete trop complexe
    Par abjso dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/12/2011, 22h06
  3. Pb update dataset "requete trop complexe"
    Par timotep dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/08/2007, 09h47
  4. requete trop complexe
    Par maraly dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/05/2007, 11h44
  5. Requete trop complexe
    Par sephirothmana dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/01/2007, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo