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 :

Probleme de requete


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut Probleme de requete
    bonjour,

    Je doit remplir une listbox apr une requete. Jusque la pas de soucis.
    Mais le probleme vient du resultat de ma requete :
    j'ai un champ ou les donnees sont du type :
    nom1
    nom2/nom3
    /nom3
    nom4/nom2/nom1
    /nom2
    et donc forcement je recupere la list ci dessus (y a distinct dans la requete en plus) tel quel avec ma requete alors qu il me faudrait :
    nom1
    nom2
    nom3

    voila

    Quelqu'un saurait il faire ca ? ou aurait il une idee ?
    Je fait la requete sous VBA si ca peut aider [/list]

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    j ai eu une idee :
    je cree un recordset, et pour chaque ligne, je l'analyse en fonction des / presnts. puis je mets le resultat dans une table temporaire sur laquel je fait ma requete et que j efface apres. ( moins que je puisse faire directement ma requete sur le resultat sans creer la table) est ceaue ca parrait possible de faire ca ? ca marche ?
    Si oui, on pourrait m aider a l ecrire parce que je suis pas tres au point avec les recordsets

    Merci

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Tu peut aussi te créer une sous requête sur ta première requête.

    Genre comme ceci :
    Select MPK
    FROM TTT
    WHERE MPK = (SELECT LAST(MPK) FROM TTT)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Je vois bien ce au est une reauete dans une autre, mais je doit bien dire que la j ai du mal a saisir ce que tu me propose (j'ai aucune idee de si c bon ou pas, je comprend simplement pas ce que tu veux que je fasse...lol)
    Estce que tu pourrait me donner un exemple pour que je comprenne bien STP.

    Merci bien en tout cas

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    salut,

    bon, j ai commencer a ecrire un truc avec des requete incluse les une dans les autres, le pb c que je m y perd un peu. En fait, si le nombre d iteration etait definit, ca pourrait encore aller, mais j ai besoin de faire des condition en fonction du resultat des requetes, et la je suis un peu paume. Est ce que je doit faire des runsql ?
    En plus j ai un pb sur la requete suivante :
    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
     
    Dim selection As String
    Dim field_name, field_name2 As String
    Dim bool As Boolean
    bool = True
    selection = "sample"
    boucle:
    If bool Then
    field_name = "Field"
    field_name2 = "temp"
    Else
    field_name2 = "Field"
    field_name = "temp"
    End If
    selection1 = "SELECT distinct left(" & field_name & ",instr(" & field_name & ",""/"")) as " & field_name2 & " FROM " & selection & " UNION SELECT distinct right(" & field_name & ",len(" & field_name & ")-instr(" & field_name & ",""/"")) FROM " & selection & ";"
    DoCmd.RunSQL selection1
    selection = selection1
    GoTo boucle
    j obtient une erreur 2342, a savoir qu il me dit qu il faut un SQL statement, pourtant ma requete me semble ok...

    quelqu un peut m aider ??

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    1- je ne crois qu'une requête SQL UNION puisse être lancée via un DoCmd.RunSQL.

    2- ton sql créé par le code me paraît exotique, un petit débogage s'impose, pour savoir comment faire je te conseille la lecture de mon tuto :
    http://cafeine.developpez.com/access...el/debugprint/
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Ben en fait, la requete c moi qui l ai ecrite, elle a pas ete genere. Neanmoins, je regarde ton tuto pour voir si ca peut m aider.

    Merci

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Oui je vois bien qu'elle est de toi, c'est justement ce qui me fait dire qu'elle n'est peut être pas valide.

    L'idée du tuto, c'est de la valider ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    ben j ai lu ton tuto, ca m a pas trop aider... j ai encore peu etre l histoire des guillemets simple a tester et peut etre dans la formulation du nom des tables et champs. j ai verifie, les variables sont bien avec leur valeurs corectes. Enfin, j ai vire "union" mais ca change rien pour le moment .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT distinct left(Sample.Field,instr(Sample.Field,"/")) as temp FROM Sample;
    voila ce que j ai obtenu dans le debug. je vois pas trop le pb en fait :-¦

  10. #10
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hm, hm ...

    l'idée du tuto, c'est de faire un debug.print de ton SQL, puis de la copier coller dans une requête afin de voir directement ce qui bug ...

    ça donne quoi en clair (en debug.print) ta requête ?
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT distinct left([Sample]![field],instr([Sample]![field],"/")) as temp FROM Sample;
    en gros voila>>>pour moi, je vois pas de pb, et pourtant j ai toujours cette erreur.
    J ai ajouter les crochet et point d exclamation, mais ca je peut toujours les virer, c pas un pb, et en plus ca a rien changer

    merci

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Cette requete fonctionne tres bien en temps que requete mais pas dans un docmd.runSQl

    Quelqu un aurait il une idee ?
    Sinon, une autre suggestion pour mon probleme a savoir recuperer le resultat des diferentss noms concatenes ?

    Merci

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Bon, aujourd hui je me suis penche un peu plus sur la question, et je me suis dit que le mieux c t de creer des record set poiur travaille sur les donnees, mais voila....je me pose une question :
    si je cree un recordset rst1 pour stocke des donnees, j en cree un qutre rst2 qvec les donnees qui provienne de rst1, est ce que c possible de ensuite transforme les donne de rst1 a partir des donnees du rst2 ? j ai cherche dans les tuto, mais j ai pas trouve de choses sur la recursivite et les recordsets.
    En fait , oui c ca le probleme , c que j ai une fonction recursive pour agir sur une table...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Query = matable
    while condition
    Query = SELECT distinct left( Query.field,instr( Query.field,"/")) as do _
    FROM Query _
    UNION SELECT distinct right( Query5.field,len( Query.field)-instr( Query.field,"/")) _
    FROM Query;
    loop
    voila l idee en simplifiant

    Si auelqu un peut m aider la dessus

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    voila donc ce que j ai ecrit dernierement, mais je n arrive pas a actualiser la source de donnees pour le recordset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim rst As New ADODB.Recordset
    rst.Open Field & ";", CurrentProject.Connection, adOpenStatic
    rst.MoveFirst
    i = 0
    Do Until i = 5
    rst.Open "SELECT distinct left( " & rst.Fields(0) & ",instr(" & rst.Fields(0) & ",""/"")) FROM " & rst & " UNION SELECT distinct right( " & rst.Fields(0) & ",len(" & rst.Fields(0) & ")-instr(" & rst.Fields(0) & ",""/"")) FROM " & rst & ";"
    i = i + 1
    Loop
    J ai l impression aue le "From rst" ca fonctionne pas en fait.
    Quelqu un peut m aider ?

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Comme je vois peu de reponse, je vais reformuler ma question autrement, ca pourra peut etre donner des idees.

    Est ce que je peux utiliser un recordset comme source d donnees pour un autre recordset ou meme lui meme ?

    Merci bien

  16. #16
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Non, mais tu peux imbriquer des requêtes, donc des SQL
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Ben c bien dommage ca.... et le pb avec le SQL , c que le ombre d imbrication peu etre assez important (>10) et variable en plus...donc c pas tresa facile pour ecrire la requete.

    Merci tout de meme pour l'info.

Discussions similaires

  1. probleme de requete
    Par doudou1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2004, 13h42
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  3. PROBLEME DE REQUETE IMBRIQUEE
    Par fleuve007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/12/2003, 15h33
  4. probleme de requete
    Par LineLe dans le forum ASP
    Réponses: 8
    Dernier message: 17/09/2003, 16h47
  5. Probleme de requete
    Par misterbillyboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/07/2003, 08h24

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