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 :

[Access] Afficher les deux derniers enregistrement


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 22
    Points
    22
    Par défaut [Access] Afficher les deux derniers enregistrement
    Salut

    pour mon application j'utilise Access et VB.Net

    J'ai une table nommée "Reproduction" qui contient un champ nommé "Code_animal" qui correspond au code de l'animal et un champ "date_vêlage" qui correspond à la date de vêlage de l'animal. Dans ma table le code de l'animal peut se répeter plusieurs fois avec une date de vêlage qui lui correspond.

    Mon souci, c'est que je veux afficher les deux derniers date de vêlaes pour chaque animal.

    j'espère que j'étais bien clair

    Et merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut
    En utilisant une requête avec comme critère de sélection l'animal et en attribuant 2 à la liste déroulante "premières valeurs" peut-être...

  3. #3
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 273
    Points : 258
    Points
    258
    Par défaut
    C'est les dates de velage en general ou precises? "15 juin 2006" et "21 mars 2006" ou bien juste juin et mars?

    Si tu as les dates completes, fais peut-etre une requete avec DiffDate entre maintenant et la date de ta table, et la cle de la table. Ensuite, trie la query par diffdate croissant et affiche les deux premieres avec cle et enregistrement correspondant (pour cette partie, peut-etre comme le suggere scorpion, je ne sais pas trop comment faire ca).

    Si tu as juste le mois sans l'annee, fais la diffdate en prenant en compte que le mois de Now

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT a.parturiente, a.datevelage
    FROM matable AS a, matable AS b
    WHERE (((([b].[datevelage]))>=[a].[datevelage]))
    GROUP BY a.parturiente, a.datevelage, b.parturiente
    HAVING (((b.parturiente)=[a].[parturiente]) AND ((Count(b.datevelage))<=DCount("parturiente","matable","parturiente = '" & [b].[parturiente] & "'")-1));
    Elle est pas belle la vie ?

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 339
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    Salut,

    Le problème c'est que tu es sous VB.net donc tu ne peux pas utiliser de fonction prédéfinie dans ton sql ...

    Je ne suis pas parvenu à tester le sql de Random..

    Donc je te donne au cas ou 1 autre sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Reproduction.Code_Animal, Reproduction.Date_Velage
    FROM Reproduction
    WHERE (((DCount("*","Reproduction","([Code_Animal]= " & Chr(39) & [Reproduction].[Code_Animal] & Chr(39) & ") And ([Date_Velage]<=" & CLng([Date_Velage]) & ")")+1)>=DCount("*","Reproduction","[Code_Animal]= " & Chr(39) & [Reproduction].[Code_Animal] & Chr(39))))
    ORDER BY Reproduction.Code_Animal, Reproduction.Date_Velage;
    @ +
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    user si tu as une table nommée matable deux champs nommés parturiente
    et datevelage il suffit de faire une copie du sql
    Elle est pas belle la vie ?

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 339
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    @ Random

    Oui, ca ok , mais en fait ta requête me sort parfois les 3 dates de velage par code (et comme il veut les 2 dernières date de velage..)..

    cela dit ton approche consistant à utiliser la fonction DCount plutôt qu'une fonction prédéfinie est la bonne (le sql sous vb.net ne permet pas d'utiliser de telles fonctions, me trompes-je ?? ):
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    oui tu te trompes voici la même chose en sql pur
    les sous requêtes sont un peu plus difficile à manier mais plus performantes
    notamment si l'indexation a été un peu dopée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select parturiente,datevelage from
    (SELECT a.parturiente, a.datevelage, Count(b.datevelage) AS nb
    FROM matable AS a, matable AS b
    WHERE (((b.parturiente)=[a].[parturiente]) AND ((b.datevelage)>=[a].[datevelage]))
    GROUP BY a.parturiente, a.datevelage
    HAVING (((Count(b.datevelage))<=2)));
    Elle est pas belle la vie ?

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 339
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    @ Random,

    non je ne crois pas, pour ta 1ère requête, après avoir crée matable avec les 2 champs et copié ton sql n°1 dans une requête il me renvoi 3 dates par parturiente,

    cela dit on va pas se prendre la tête pour 1 petit problème Access
    (et en plus c'est même pas moi qui est ouvert la discussion..)

    Pour ton sql n°2 erreur dans la clause From mais ca doit venir de ma version Access 97...

    et tu n'as pas répondu a ma question les fonctions prédéfinis dans 1 sql et sous vb.net ca marche ou pas ???

    Merci pour ta réponse Random
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    salut catoucat
    dans ma table "Reproduction", j'ai plusieur Codes animal, chaque code animal peut se repeter plusieurs fois. c'est-à-dire que pour une animal il peut y avoir plusieurs date de velage. mois ce que je veux, c'est d'afficher les deux dernieres dates de velage pour chaque animal.

    Pour les autres codes que vous avez proposé ça marche pas avec. mais j'ai un code qui affiche les résultats correctement au niveau du generateur des requetes (l'assistant), mais avant l'exécution il y a un message d'erreur.

    le code est comme suit:


    SELECT TOP 2 reproduction.date_velage, reproduction.code_animal, exploitant.code_exploitant
    FROM ((exploitant INNER JOIN
    vache ON exploitant.code_exploitant = vache.code_exploitant) INNER JOIN
    reproduction ON vache.code_animal = reproduction.code_animal)
    WHERE (exploitant.code_exploitant = ?) AND (reproduction.code_animal = ?)
    ORDER BY reproduction.date_velage DESC



    comme vous avez pu remarquer que c'est une requete parametrée. pour cela j'ai mis le code suivant :

    daVel_Vel.SelectCommand.Parameters("code_exploitant").Value = 1
    daVel_Vel.SelectCommand.Parameters("code_animal").Value = 100

    daVel_Vel.Fill(DsVel_Vel1)


    mais quans j'execute j'ai le message d'erreur suivant :

    Informations supplémentaires : Un OleDbParameter avec ParameterName 'code_exploitant' n'est pas contenu dans ce OleDbParameterCollection.

    merci d'avance

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 339
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    Salut,

    remplace dans le where le ? par [param1] et [param2]:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (exploitant.code_exploitant = [param1]) AND (reproduction.code_animal = [param2])

    et après tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    daVel_Vel.SelectCommand.Parameters(0).Value = 1
    daVel_Vel.SelectCommand.Parameters(1).Value = 100
     
    ou
     
    daVel_Vel.SelectCommand.Parameters("param1").Value = 1
    daVel_Vel.SelectCommand.Parameters("param2").Value = 100
    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. [AC-2003] Afficher les 100 derniers enregistrements d'une table
    Par Evolvana dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/08/2011, 15h47
  2. Afficher les 10 derniers enregistrements
    Par dakota77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/04/2011, 11h24
  3. Réponses: 6
    Dernier message: 10/11/2010, 13h04
  4. [VB.Net] Afficher les deux derniers enregistrement
    Par badnane2 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 07/07/2006, 19h54
  5. [MySQL] Afficher les 3 derniers enregistrements
    Par Wu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/02/2006, 11h04

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