Requete Sql avec date du jour automatique!

Résolu
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. 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
    1. Bonjour
      Merci de ta réponse !
      J'essaye tout de suite !
      A+
      0
      1. 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
        1. Bonjour,

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

          Ex:

          WHERE at.date_at>now()-90

          Bonne suite
          0
          1. Re,
            Ok j'essaye
            0
          2. 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. Re,

            Ok, je regarde.

            A+
            0
          4. Re,

            Merci beaucoup :)
            0
        2. 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. 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. 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. Re,
            Que vous le vouliez ou pas, si vous utilisez plus d'une table, il y a INNER JOIN!!!!!!!!
            0
          4. 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