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

Requêtes et SQL. Discussion :

Problème ordre OpenRecordset


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 104
    Points : 50
    Points
    50
    Par défaut Problème ordre OpenRecordset
    Bonjour à tous,



    J’ai un petit problème.

    J’ai une macro Excel qui exécute une requête dans une base Access avec un « IN », puis récupère le résultat. Le problème c’est que lorsque le résultat s’affiche, l’ordre n’est pas bon.

    Concrêtement :
    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
     
      Set bd = OpenDatabase(CheminBase)
     
        Req_SQL = "Select SAP as SAP_Adm from ADMINISTRES where SAP IN (601, 502)”
     
        Set rs = bd.OpenRecordset(Req_SQL)
     
          If Not rs.BOF Then
     
            Do While Not rs.EOF
     
              Debug.Print rs!Sap_Adm
     
              rs.MoveNext
     
            Loop
    La fenêtre d’exécution me renvoie :

    502

    601

    Alors que si j’exécute cette même requête dans Access, j’obtiens :

    601

    502

    Soit l’ordre utilisé dans le IN. Et c’est cet ordre-là que je voudrais garder avec OpenRecordset(Req_SQL).



    Avez-vous une solution à proposer ?



    Merci d’avance

  2. #2
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 492
    Points : 2 276
    Points
    2 276
    Par défaut
    Bonsoir,
    Restes maître te ton destin fixe l'ordre toi même !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Req_SQL = "Select SAP as SAP_Adm from ADMINISTRES where SAP IN (601, 502) Order by SAP Desc"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 104
    Points : 50
    Points
    50
    Par défaut
    Bonjour, merci pour ta réponse ! En fait la problématique est plus complexe... Ce qui se trouve dans le IN correspond à plusieurs variables saisies par un utilisateur, et en fait l'utilisateur souhaite obtenir le résultat de la requête dans l'ordre dans lequel il les as saisi. Je fais donc apparaître ce qu'il a saisi dans l'ordre dans le IN, mais parfois tout va être dans le désordre, il n'y a aucune logique d'ordre lorsque l'utilisateur fait sa saisie...

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 929
    Points
    55 929
    Billets dans le blog
    131
    Par défaut
    Salut.

    Sur une requête Access, tu pourrais utiliser IIF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select SAP as SAP_Adm from ADMINISTRES where SAP IN (601, 502) Order By iif(sap=601,1,2)
    Pour x clés, tu devras imbriquer x-1 IIF. Par exemple, si on veut les enregistrements pour les 601, 502, 700 et 400 dans cet ordre-là, tu devras construire la chaine du IN et la chaine du Order By

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SAP AS SAP_ADM
    FROM Administres
    WHERE (SAP In (601,502,700,400)) 
    ORDER BY IIf(sap=601,1,IIf(sap=502,2,IIf(sap=700,3,4)));
    Cela dit, je suppose que c'est une requête d'exemple, car je ne vois pas d'utilité d'un SELECT uniquement sur SAP avec un IN sur SAP, puisque tu vas forcément recevoir les mêmes valeurs. Par contre, je pense que l'imbrication des IIF est limitée, mais je ne connais pas la limite.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 104
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup pour ta réponse, c'est exactement ce qu'il me fallait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/01/2009, 15h18
  2. Problème ordre XPath
    Par plop3000 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 24/06/2008, 13h12
  3. [XSLT] Problème ordre balisage
    Par Mygush dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 06/03/2008, 18h27
  4. Problème Ordre des Tab dans un TabControl VB.Net
    Par yenissay1 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/05/2007, 22h31
  5. [VBA] Problème avec OpenRecordset
    Par ancel17 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/05/2007, 09h27

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