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élection en fonction d'une date [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Sélection en fonction d'une date
    Bonjour à tous,

    Je vous sollicite car je n'arrive pas à appliquer un critère de requête dans son ensemble, notamment trié et sélectionner le dernier enregistrement en me basant sur une date.

    Exemple : J'ai crée une requête de regroupement basé sur deux table, avec relation entre plusieurs champs.
    La requête fonctionne parfaitement, sauf que je souhaite y ajouter un dernier critère qui es de sélectionner uniquement le dernier enregistrement basé donc sur la colonne qui mentionne la date, Nom : 1.PNG
Affichages : 486
Taille : 44,2 Ko

    J'ai entendu parlé de la fonction SELECT MAX mais je n'arrive pas à l'appliquer, est-il possible de faire ce que je demande sans passer par du SQL ?
    Si ce n'est pas le cas voici le code en mode affichage SQL


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Table1 ( refart, lot, date_mvt, Rangée, Col, Niv, Pos, Prof )
    SELECT dbo_Emplacem.Refart, dbo_Emplacem.NumLot, dbo_HistoMvt.DateMouvt, dbo_Emplacem.TextSto, dbo_Emplacem.TextCol, dbo_Emplacem.TextPlat, dbo_Emplacem.TextLarg, dbo_Emplacem.PosProf
    FROM dbo_HistoMvt INNER JOIN (dbo_Emplacem AS dbo_Emplacem_1 INNER JOIN dbo_Emplacem ON (dbo_Emplacem_1.NumLot = dbo_Emplacem.NumLot) AND (dbo_Emplacem_1.Refart = dbo_Emplacem.Refart) AND (dbo_Emplacem_1.TextSto = dbo_Emplacem.TextSto) AND (dbo_Emplacem_1.TextCol = dbo_Emplacem.TextCol) AND (dbo_Emplacem_1.TextPlat = dbo_Emplacem.TextPlat) AND (dbo_Emplacem_1.PosProf = dbo_Emplacem.PosProf)) ON (dbo_HistoMvt.NumLot = dbo_Emplacem.NumLot) AND (dbo_HistoMvt.Refart = dbo_Emplacem.Refart) AND (dbo_HistoMvt.Posprof = dbo_Emplacem.PosProf)
    GROUP BY dbo_Emplacem.Refart, dbo_Emplacem.NumLot, dbo_HistoMvt.DateMouvt, dbo_Emplacem.TextSto, dbo_Emplacem.TextCol, dbo_Emplacem.TextPlat, dbo_Emplacem.TextLarg, dbo_Emplacem.PosProf
    HAVING (((dbo_Emplacem.Refart)=[Saisir votre référence]));

    J'espere avoir etait clair dans ma demande, si ce n'est pas le cas je peux essayer de faire mieux

    Merci d'avance les gars

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Bonjour,

    Il y a le Max() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(madate) from matable;
    Il y a le tri :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 1 madate from matable order by madate desc;
    il y a la fonction également, mais dans ton cas c'est la méthode capillotractée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plusGrandeDate=dmax("madate","marequete")
    il y a le Recordset également mais pour c'est plus une démonstration qu'un truc utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim db as dao.database
    dim rst as dao.recordset
    dim plusGrandeDate as date
    set db = currentdb
    set rst = db.openrecordset("SELECT madate from matable order by madate desc;",dbopensnapshot)
    if not rst.eof then
       plusGrandeDate = rst.fields("madate").value
    endif
    rst.close
    db.close
    set rst = Nothing
    set db = Nothing
    Il y a plein de méthode mais ne pas utiliser le meilleur outils pour réaliser une tâche c'est dommage. Un peu d'apprentissage du SQL quand on manipule une base de données c'est plus que conseillé.
    A l'heure actuelle avec le net les tutos et autre documentation pullule.

    Cordialement,

  3. #3
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Bien sûr ce serait super si je prenais le temps d'apprendre mais je suis tellement débordé en ce moment que c'est du bâclé ce que je fait,

    Cela étant dit je n'arrive pas à intégrer cette fonction, surement un petit détails qui gêne quelque part,
    La date se situe dans la table "dbo_HistoMvt"
    et le champs comportant la date se nomme "Datemouvt"

    Nom : Capture.PNG
Affichages : 283
Taille : 45,0 Ko

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    bonjour,
    dans l'interface de développement, il faut mettre le code dans une ligne de critères (là où c'est surligné):

    Nom : _0.JPG
Affichages : 300
Taille : 42,4 Ko

  5. #5
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Salut,

    C'est pas en mode affichage SQL qu'il faut directement opéré ?

    Donc si je mets ceci dans le champ que j'ai surligné en jaune ça devrait marcher ? Alors..

    Je veux sélectionner uniquement l'enregistrement le plus récent que la requête aura trouvé...
    Par la suite imprimer dans la foulée le résultat (on verra ça quand ma requête fonctionnera déjà pour la date)

    (madate) c'est le nom de mon champ comportant les dates ?
    From table c'est le nom de la table comportant la date ?

    Ça me donnerait donc :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(datemouvt) from dbo_MistoMvt

    Je crois avoir déjà essayé cette combine mais j'ai toujours un message d'erreur sur la syntaxe.

    Je vais essayer demain au boulot et si ça ne fonctionne pas je reviens vers vous,

    Merci à tous

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    Je crois avoir déjà essayer cette combine mais g toujours un message d'erreur sur la syntaxe.
    oui, car la syntaxe correcte est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(SELECT max(datemouvt) from dbo_MistoMvt)

  7. #7
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup très cher, ce n'est pas la première fois que tu solutionnes mes post 😃

    Je vais tester demain

    Cdt

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Encadrement d'une date
    Bonjour je souhaiterai mettre en place un encadrement d'une date dans une somme contenant des IIF. Pour l'instant j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme(VraiFaux([Etat]<>"Active";0;VraiFaux(#31/12/2017#<[Audit_date]<#31/12/2019#;1;0)))
    le but serait d'avoir quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme(VraiFaux([Etat]<>"Active";0;VraiFaux([Forms]![Reporting_Group_Criteres]![ZTrimestreFin]-730<[Audit_date]<[Forms]![Reporting_Group_Criteres]![ZTrimestreFin];1;0)))
    Je souhaiterai donc que l'encadrement de la date soit lié à une valeur donnée dans un formulaire. Avez-vous une idée ? Je me casse les dents dessus...
    D'avance Merci

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

Discussions similaires

  1. Sélection de points en fonction d'une date
    Par grooot dans le forum Langages
    Réponses: 0
    Dernier message: 13/07/2018, 10h20
  2. Déterminer le jour en fonction d'une date
    Par Flagny dans le forum Access
    Réponses: 3
    Dernier message: 19/07/2006, 10h36
  3. afficher le jour en fonction d'une date
    Par oceane751 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/03/2006, 22h20
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 17h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 12h00

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