Requete Sql avec date du jour automatique!

Résolu
Bull_0125 Messages postés 115 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai besoin de votre aide avec une requête SQL

Je vous explique, Je créer un UserForm (ValidAction) sous VBA-Excel Qui me sert pour valider (Dire quelles sont effectuées car on a une date de délai et une date de réalisé) des actions afin d'éviter d'autres accidents (Réparer la pièce, Rangement dans autres boîtes, etc...) donc j'ai créer des champs de recherches qui m'alimente une ListBox (ListBoxDetail) en mettant une requete SQL derriere pour m'afficher que les Accidents (AT) dont les actions ne sont pas encore réalisé. Et maintenant mon maître de Stage voudrais que d'une part le type de recherche et d'alimentation de la ListBox reste le même et que en plus, lorsque l'utilisateurs click sur un bouton cela nous affiche dans la ListBox que les Accidents (AT) dont la date d'accident et la date du jour sont supérieur à 3 mois (soit 90 jours...) Et là ! C'est le drame je suis bloquéé je n'ai jamais fait ça !

Si vous pouvez m'aider ce serai avec grand plaisir ! HELP ME PLEASE !
Bull_0125

5 réponses

  1. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    Si je comprend bien ta demande, tu veux savoir quelle est la syntaxe a utiliser en SQL pour récupérer la date du jour - 3 mois ?

    Si oui : SELECT (GETDATE() - 90) --Affichera la date d'il y a 90 jours par rapport au jour courant.

    Tu n'a plus qu'a intégrer le (GETDATE() - 90) dans ta clause de requête.
    0
  2. Bull_0125 Messages postés 115 Statut Membre
     
    Bonjour
    Merci de ta réponse !
    J'essaye tout de suite !
    A+
    0
  3. Bull_0125 Messages postés 115 Statut Membre
     
    Re,
    J'ai essayer plusieurs requete :
    SELECT DISTINCT  GETDATE() - 90),at.num_at, at.Date_at, T.code_type, at.nom_at, at.prenom_at, C.nom_centre, UP.nom_up, UEP.nom_uep, AT.Nom_Equipe, M.nom_manager
    FROM [at], TypeBless AS T, Managers AS M, Centre AS C, UP, UEP, Actions AS A
    WHERE (((T.num_type)=[AT].[num_type])
    AND ((M.num_manager)=[AT].[num_manager]) 
    AND ((C.num_centre)=[AT].[num_centre]) 
    AND ((UP.num_up)=[AT].[num_up]) 
    AND [AT].num_at=((A.num_at)) 
    AND ((UEP.num_uep)=[AT].[num_uep])) 
    AND nom_centre ='PMT'
    And Realise Is null
    


    SELECT DISTINCT  at.num_at, at.Date_at, T.code_type, at.nom_at, at.prenom_at, C.nom_centre, UP.nom_up, UEP.nom_uep, AT.Nom_Equipe, M.nom_manager
    FROM [at], TypeBless AS T, Managers AS M, Centre AS C, UP, UEP, Actions AS A
    WHERE (((T.num_type)=[AT].[num_type])
    AND ((M.num_manager)=[AT].[num_manager]) 
    AND ((C.num_centre)=[AT].[num_centre]) 
    AND ((UP.num_up)=[AT].[num_up]) 
    AND [AT].num_at=((A.num_at)) 
    AND ((UEP.num_uep)=[AT].[num_uep])) 
    AND nom_centre ='PMT'
    And Realise Is null
    and at.date_at in (Select (GETDATE() - 90) from at);
    


    SELECT DISTINCT  at.num_at, at.Date_at, T.code_type, at.nom_at, at.prenom_at, C.nom_centre, UP.nom_up, UEP.nom_uep, AT.Nom_Equipe, M.nom_manager
    FROM [at], TypeBless AS T, Managers AS M, Centre AS C, UP, UEP, Actions AS A
    WHERE (((T.num_type)=[AT].[num_type])
    AND ((M.num_manager)=[AT].[num_manager]) 
    AND ((C.num_centre)=[AT].[num_centre]) 
    AND ((UP.num_up)=[AT].[num_up]) 
    AND [AT].num_at=((A.num_at)) 
    AND ((UEP.num_uep)=[AT].[num_uep])) 
    AND nom_centre ='PMT'
    And Realise Is null
    and at.date_at  >= (GETDATE() - 90);
    


    Mais rien ne marche :/
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    GETDATE() n'existe pas en sql ACCESS. Prendre Now().

    Ex:

    WHERE at.date_at>now()-90

    Bonne suite
    0
    1. Bull_0125 Messages postés 115 Statut Membre
       
      Re,
      Ok j'essaye
      0
    2. Bull_0125 Messages postés 115 Statut Membre
       
      re,

      Dans une table Action j'ai le champs Réalisé , et je veux les AT (Accidents) dont les actions ne sont pas Realiser donc le champ IS NULL et que la date_at a plus de 90 jours par rapport a la date d'aujourd'hui
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ok, je regarde.

      A+
      0
    4. Bull_0125 Messages postés 115 Statut Membre
       
      Re,

      Merci beaucoup :)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    SELECT AT.date_at, Actions.realise, ACTION_AT.num_at, ACTION_AT.num_action
    FROM [AT] INNER JOIN (Actions INNER JOIN ACTION_AT ON Actions.num_action = ACTION_AT.num_action) ON AT.num_at = ACTION_AT.num_at
    WHERE (AT.date_at<=Now()-90) AND (Actions.realise Is Null);

    A adapter suivant vous besoins

    Bonne uite
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Je veux pas passé pour un c** mais je ne comprend pas INNER JOIN..

      Petit plaisantin. Vous faites evoluer votre base au fur et a mesure que vous avancez dans vos problemes. Donc n'ayant pas eu la derniere mise a jour, je vous ai fourni une requete en fonction de ce que j'avais.
      Je regarde avec votre derniere (j'espere) mise a jour.

      A+
      0
    2. Bull_0125 Messages postés 115 Statut Membre
       
      Re,
      Désolé je l'ai changé hier car Dans mon MCD j'avai pour la relation AT => Actions : 0,N et Actions <=AT : 1,1 Donc pas besoin de table Intermédiaire.. :/
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Que vous le vouliez ou pas, si vous utilisez plus d'une table, il y a INNER JOIN!!!!!!!!
      0
    4. Bull_0125 Messages postés 115 Statut Membre
       
      Re,
      Oui oui pas de soucis .. D'habitude je fait mes jointures : Table.cléprimaire= table.Cléetrangere mais pourquoi pas apprendre inner join
      0