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 :

Sélectionner les x premiers enregistrements avec un paramètre


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut Sélectionner les x premiers enregistrements avec un paramètre
    Bonjour à tous,

    Je suis nouveau sur le forum....

    Je travaille sur Access 2013 ... et je m'arrache les cheveux...

    Je pars de la requête suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TOP 10 T_Date.Date
    FROM T_Date

    ET j'obtiens donc les 10 premiers enregistrements de la table.

    Je souhaite inclure un paramètre dans cette requête et remplacer TOP 10 par un paramètre variable saisi dans une boite de dialogue.

    Je vous remercie d'avance.

    Meilleures salutations.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Je viens de faire un test et à priori ce n'est pas possible directement. Il va falloir modifier le SQL par code.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim top as long:top=inputbox("TOP ?")
     
    dim db as dao.database:set db=currentdb
    dim q as dao.querydef:set q=db.querydefs("NomTaRequete")
    q.sql="SELECT TOP " & top & " T_Date.Date FROM T_Date"
    set q=nothing
    db.close:set db=nothing
    Une autre solution si tes dates sont ordonnées serait :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select [T_Date].[T_Date.Date] form [T_Date] order by [T_Date].[NomTonChampTri] where DCount("NomTonChampTri", "T_Date", "NomTonChampTri<" & [T_Date].[NomTonChampTri]) <= [prmTop]

    Cela numérote les lignes et prend celles qui ont un numéro inférieur ou égale à prmTop.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut
    Bonjour Marot,

    Merci beaucoup pour ta réponse. Pour être franc je n'y arrive pas... Ça c'est dit !

    J'ai créée La table "T_Date" qui contient 1 champ "Date". Les dates sont ordonnées dans l'ordre croissant.
    Je crée une requête paramétrée qui me permet d’atteindre :
    - Une date comme premier paramètre ;
    - De compter via un second paramètre x enregistrements ;
    - D'avoir comme réponse de ma requête la date via ces 2 paramètres.

    J'ai repris ta solution. Ça va jusqu'à un certain point..
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT [T_Date].[T_Date.Date]
    FROM [T_Date] 
    ORDER BY [T_Date].[NomTonChampTri] 
    'là je suis perdu.. [NomTonChampTri]  et toute la suite
    WHERE DCount("NomTonChampTri", "T_Date", "NomTonChampTri<" & [T_Date].[NomTonChampTri]) <= [prmTop]
    Merci encore pour ton aide.

    Meilleures salutations.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Désolé le SQL que j'ai posté précédement était un peu faux.

    OK donc ta table a un seul champs ?

    Je pense que le SQL devrait ressembler à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_Date.Date, DCount("Date", "T_Date", "[Date]<=#" & [T_date].[Date] & "#") AS NbDate
    FROM T_Date
    WHERE (((DCount("Date", "T_Date", "[Date]<=#" & [T_date].[Date] & "#"))<=[prmTop]))
    ORDER BY T_Date.Date;
    NbDate n'est pas absolument nécessaire mais il facilite la vérification.

    Attention si tu as plusieurs fois la même date, tu pourrais ne pas savoir quelle est laquelle.

    Si c'est le cas, une possibilité est d'ajouter un champ pour le tri comme par exemple une clef primaire.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Par défaut
    Bonjour Marot,

    Merci à nouveau pour ton aide!

    Je vais essayer.

    Meilleures salutations.

Discussions similaires

  1. Sélectionner les 10 premiers enregistrements
    Par Yanmeunier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/04/2008, 10h23
  2. Réponses: 2
    Dernier message: 05/04/2007, 14h19
  3. Sélectionner les 10 derniers enregistrements
    Par pod1978 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2005, 12h07
  4. Prendre que les 5 premiers enregistrements (les + important)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/11/2005, 09h24
  5. comment récupérer les x premiers enregistrements
    Par laurent82 dans le forum SQL
    Réponses: 7
    Dernier message: 12/12/2004, 16h29

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