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 :

Requête avec DateDiff minimale


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Requête avec DateDiff minimale
    Bonjour,

    Je cale dans la mise au point d'une requête basée sur 2 tables...

    Mes 2 tables : une avec des données d'analyses de labo vétérinaire et
    l'autre avec des données sur les troupeaux d'où sont issus les animaux
    testés (inventaire des nombres d'animaux présents à des dates
    données). Les dates d'inventaire ne correspondent pas aux dates
    d'échantillonnage pour analyse mais j'aimerais présenter pour chaque
    analyse les données de l'inventaire le plus proche (que ce soit avant
    ou après l'échantillonnage).

    tblANALYSES a
    - Dossier
    - Troupeau
    - Date_Echantillonnage
    Un même troupeau peut subir des analyses à différentes dates (avec donc chaque fois un numéro de dossier différent)

    tblTROUPEAU t : données d'inventaires (plusieurs inventaires par
    troupeau)
    - ID_troupeau
    - Date_Inventaire
    - No_animaux

    Je voudrais avoir dans mon SELECT :
    a.dossier, a.troupeau, a.date_echantillonnage, t.date_inventaire , t.No_animaux
    et il faut donc que
    Abs(DateDiff("d",a.Date_Echantillonnage,t.Date_Inventaire) soit
    minimale.

    Quelqu'un aurait-il une idée à me suggérer pour parvenir à ce
    résultat ?
    D'avance un grand merci !
    Cécile

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    voici une fonction qui devrait te permettre de trouver la date d'inventaire la plus proche de la date d'analyse :
    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
    Public fctDateInvent( ByVal Troupeau as long, ByVal DateAnalyse as date) as variant
    dim db as DAO.DataBase, rst as DAO.Recordset, Dte as Date
     
    Set db = DAO.DAtaBase
    Set rst = Db.OpenRecordSet("SELECT * FROM tblTroupeau WHERE IdTroupeau = " & Troupeau, dbOpendynaset)
    Dte = #1/1/1950#
    While not rst.EOF
        If abs(DateAnalyse - rst("DateInventaire")) < abs(DateAnaLyse - Dte) Then Dte = rst("DateInventaire")
        rst.movenext
    Wend
     
    rst.close
     
    fctDateInvent = iif(Dte > #1/1/1950",Dte,Null)
     
    set rst = nothing
    set db = nothing
    End function
    A mettre au point, mais cela a de bonnes chances de marcher.

    Bon courage,

    PGZ

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette suggestion... Je vais essayer ça et je vous donne des nouvelles !
    Cécile

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    je pense que tu avais corrigé toi même, mais c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set db = Application.CurrentDb
    au lieu de l'ânerie que j'ai écrite et que je découvre...

    Bon courage,

    PGZ

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Splendide ! C'était tout à fait ce qu'il me fallait. Quelques modif (le datediff notamment) et ça roule !

    Un grand merci !
    Cécile

    Pour info :

    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
    Public Function fctDateInvent(ByVal Troupeau As Long, ByVal Date_echant As Date) As Variant
    Dim db As DAO.Database, rst As DAO.Recordset, Dte As Date
     
    Set db = Application.CurrentDb
    Set rst = db.OpenRecordset("SELECT * FROM tblTroupeau WHERE IdTroupeau = " & Troupeau, dbOpenDynaset)
    Dte = #1/1/1950#
    While Not rst.EOF
        If Abs(DateDiff("d", Date_echant, rst("DateInventaire"))) < Abs(DateDiff("d", Date_echant, Dte)) Then Dte = rst("DateInventaire")
        rst.MoveNext
    Wend
    rst.Close
    fctDateInvent = IIf(Dte > #1/1/1950#, Dte, Null)
    Set rst = Nothing
    Set db = Nothing
    End Function

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

Discussions similaires

  1. [SQL Server]Requête avec DateDiff
    Par sangokus dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2004, 14h44
  2. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20
  3. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 09h39
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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