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

IHM Discussion :

Créer des formules dates


Sujet :

IHM

  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut Créer des formules dates
    Bonjour,

    Pour les besoins de mon travail, je dois créer 3 requetes qui m'affichent chacune un nombre de produits triés sur une journée allant de 5h00 au lendemain 05h00.
    Ces 3 requetes fractionnent cette journée en 3 periodes : matin , aprés-midi et nuit.

    La requete du matin affiche le nombre de produits triés de 05h00 à 12h30
    La requete aprés midi affiche le nombre de produits triés de 12h30 à 19h30
    La requete nuit affiche le nombre de produits triés de 19h30 à 05h00 le lendemain.

    Ces 3 requetes sont les suivantes :
    Requete matin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >=(CVDate(Arrond(Maintenant()-(5/24)))+5/24) Et <=(CVDate(Arrond(Maintenant()-(5/24)))+((25/2)/24))
    Requete Aprés midi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >(CVDate(Arrond(Maintenant()-(5/24)))+(25/2)/24) Et <=(CVDate(Arrond(Maintenant()-(5/24)))+((39/2)/24))
    Requete nuit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >(CVDate(Arrond(Maintenant()-(5/24)))+(39/2)/24) Et <(CVDate(Arrond(Maintenant()-(5/24)))+(5/24))
    J'ai un soucis avec la deuxième partie de la requete nuit (en rouge sur le code).
    Je ne sais pas comment rajouter le +1 pour lui signifier que c'est 05h00 le lendemain.

    Merci d'avance pour votre aide et Bonne a toutes et tous

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut créer des formules dates
    Bonjour,

    Essaye çà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CVDate(Arrond(Maintenant()-(5/24)))+(39/2)/24) Et <(CVDate(Arrond(Maintenant()+1-(5/24)))+(5/24))
    Jimbolion

  3. #3
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Bonjour jimbolion
    ca fonctionne ..
    Merci .
    Cependant, jorsque je bascule l'heure de mon ordinateur à 01h00 ( pour éxécuter le requete nuit), ma requete matin ne m'affiche plus aucune donnée.

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut Facteur
    Re-bonjour

    A quelle heures tes requêtes sont elles exécutées car en effet entre 19h30 et 23h59 ta requete marchera ! Entre 0h01 et 5 h00 elle ne fonctionnera pas ni pour la première condition ni pour la deuxième !

    Si l'heure de l'éxécution de la requête n'est pas connue ou que les scripts sont joués de manière récurrente ajoute un test du type

    Si format(Maintenant,"HHMM") > 1 et format (Maintenant,"HHMM") < 500 alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CVDate(Arrond(Maintenant()-1-(5/24)))+(39/2)/24) Et <(CVDate(Arrond(Maintenant()-(5/24)))+(5/24))
    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CVDate(Arrond(Maintenant()-(5/24)))+(39/2)/24) Et <(CVDate(Arrond(Maintenant()+1-(5/24)))+(5/24))
    Fin Si

    Fais bien attention que si il est entre 0h00 et 5h00 du matin ton expression doit calculer sur le J-1 de la date jour d'ou le (CVDate(Arrond(Maintenant()-1

    Je te laisse traduire tout çà et tu verras que çà va marcher !

    @++

    JimboLion

  5. #5
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Woua...j 'ai du boulot alors...lol
    Je vais tester ces formules et je reviens vers toi pour te faire un resumé...

  6. #6
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    La je suis perdu,
    Ce matin, jai de nouveau testé mes 3 formules (matin , AM et nuit) en changeant toujours l'heure de mon ordinateur ( en affichant 01:00).
    Et là miracle tout fonctionne trés bien.
    jimbolion, je vais envoyer un mail à mes collégues de nuit pour qu'ils puissent vérifier si la requete nuit affiche une donnée correct et si les données matin et AM restent affichées.
    Si c'est le cas, je ne change rien à mes requetes. Si il y a un problème, je recuperais tes nouvelles requetes..


    Je profite de tes connaissances pour te soulever un autre problème que je rencontre :

    Ces 3 requetes (matin , Am et nuit) sont affichées sur mon formulaire en listebox

    1ere listebox : Liste_nbre_colis_triés_matin issue de la requete PROD- nbre de colis tries net MATIN

    2ième listebox : Liste_nbre_colis_triés_AM issue de la requete PROD- nbre de colis tries net AM

    3 ième listebox : Liste_nbre_colis_triés_nuit issue de la requete PROD- nbre de colis tries net NUIT

    Je n'arrive pas à créer une 4 listebox où serait integré la somme de ses 3 valeurs .
    Les 3 tentatives ci dessous sont des echecs. La case reste eternellement vide.

    Dans la 4ième listebox, dans proprietés, source control


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeTotal_colis_triés.Valeur=Liste_nbre_colis_triés_matin.Valeur+Liste_nbre_colis_triés_AM.Valeur+Liste_nbre_colis_triés_nuit.Valeur
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme([Liste_nbre_colis_triés_matin]+[Liste_nbre_colis_triés_AM]+[Liste_nbre_colis_triés_nuit])
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme([PROD- nbre de colis tries net AM]![nbre net de colis traités]+[PROD- nbre de colis tries net MATIN]![nbre net de colis traités]+[PROD- nbre de colis tries net NUIT]![nbre net de colis traités])

  7. #7
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut pb requete
    facteur bonjour,

    Pour y voir un peu plus clair !

    Je comprends que tu effectues 3 requetes (matin, am, soir) issues à l'origine de la même table je suppose et filtrés en fonction des heures !

    Tu as nommés ces 3 requetes (Liste_nbre_colis_triés_matin, Liste_nbre_colis_triés_AM et Liste_nbre_colis_triés_nuit) ! Tu te retrouves donc avec 3 valeurs : Liste_nbre_colis_triés_matin, Liste_nbre_colis_triés_am et Liste_nbre_colis_triés_nuit ...

    Si j'ai bien compris tu souhaites faire un cumul de ces 3 valeurs dans une seule requête afin d'afficher le nombre de total de colis triés dans une journée (de 5h00 jour J à 5h00 jour j+1)

    Donc il te faut passer par une requete intermediaire qui va t'afficher les lignes correspondantes à tes 3 requetes (type de requete union)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT *
    FROM colis_Jour
    union
    SELECT *
    FROM colis_Matin
    union
    SELECT *
    FROM colis_Nuit
    ;

    A partir de là ce n'est plus qu'un jeu d'enfant ! faire une somme sur le resultat de ta dernière requête union (=requete intermediaire) et le tour est joué !

    @++

  8. #8
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Bonjour jimbolion,
    Merci pour cette réponse .
    J'ai crée la requete union à partir de mes 3 requetes (matin , Am et nuit).
    J'ai bien 3 données qui s'affichent . Mais comment créer , sur cette requete union, la somme de ces 3 valeurs.
    Même les jeux d'enfant peuvent paraitre compliqué...

  9. #9
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    J'ai crée une autre requete ou je crée la somme des 3 valeurs trouvées dans la requete union.
    Est ce cela ? ..

  10. #10
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut cumul requetes
    Oui c'est cela !

    Cà fonctionne ???


    @ Bientôt

  11. #11
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    he ben non , la somme issu de la requete union ne correspond pas la somme issue de la requete matin + requete AM...
    décidement...

  12. #12
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut somme
    facteur,

    Je viens de faire la requête somme basée sur la requête union et çà marche bien :

    ma requete union me renvoie 3 lignes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT colis_Jour.SommeDeNombre
    FROM colis_Jour
    UNION
    SELECT colis_Matin.SommeDeNombre
    FROM colis_Matin
    UNION SELECT colis_Nuit.SommeDeNombre
    FROM colis_Nuit;

    Le résultat de cette requête me donne 3 enregistrements

    Somme de Nombre
    6
    7
    10

    Ma requête somme est constituée de la sorte :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Sum(union_colis.SommeDeNombre) AS SommeDeSommeDeNombre
    FROM union_colis;

    Cette requête me retourne un enregistrement dont la valeur est 23 (soit 6 + 7 + 10)

    Donc regarde bien tu as sans doute une erreur quelque part !

    @ bientôt

  13. #13
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Je crois savoir pourquoui je ne trouve pas les mêmes valeurs car la somme issu de la requete union recalcule les données depuis 05h00.
    Il y a des donc un delai qui fait que la somme issue de la requete union n'est pas la même que celle issu de la somme de la requete du matin + requete de l'AM.
    Il faudrait que la somme de la requete union soit issu de valeur et non pas quelle recalcule à chaque fois les données depuis 05h00.

    Est ce possible ?

  14. #14
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut facteur
    bonjour,

    Si la valeur contenue dans tes 3 requêtes est bonne, la somme est nécessairement correcte puisque basée sur tes 3 requêtes !

    Si le résultat n'est pas bon c'est que forcément une de tes requêtes est erronée !

    Tiens moi au courant ...

  15. #15
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Bonjour jimbolion

    Ci dessous, j'ai recopié la requete union . et la requete qui me donne le total de cette requete union
    désolé si la requete union est indigeste, mais j'ai crée cette requete union en collant le language sql des 3 requetes (matin , AM , nuit)..

    J'ai bon analysé ces requetes , je ne vois pas où est l'erreur...


    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
    19
    20
    SELECT Count(dbo_vwItemData.ItemID) AS [nbre net de colis traités], CVDate(Fix(([DischargeEventTime]-(5/24)))) AS jour
    FROM (dbo_vwItemData INNER JOIN dbo_vwParts ON dbo_vwItemData.DischargePartID = dbo_vwParts.ID) INNER JOIN [table_Affich-general] ON dbo_vwParts.DisplayName = [table_Affich-general].[Chute (format access)]
    WHERE ((([table_Affich-general].Type)<>"RJT") AND ((dbo_vwItemData.DischargeEventTime)>=(CVDate(Fix(Now()-(5/24)))+(5/24)) And (dbo_vwItemData.DischargeEventTime)<=(CVDate(Fix(Now()-(5/24)))+((25/2)/24))))
    GROUP BY CVDate(Fix(([DischargeEventTime]-(5/24))))
    ORDER BY Count(dbo_vwItemData.ItemID) DESC
     
    union all
     
    SELECT Count(dbo_vwItemData.ItemID) AS [nbre net de colis traités], CVDate(Fix(([DischargeEventTime]-(5/24)))) AS jour
    FROM (dbo_vwItemData INNER JOIN dbo_vwParts ON dbo_vwItemData.DischargePartID = dbo_vwParts.ID) INNER JOIN [table_Affich-general] ON dbo_vwParts.DisplayName = [table_Affich-general].[Chute (format access)]
    WHERE ((([table_Affich-general].Type)<>"RJT") AND ((dbo_vwItemData.DischargeEventTime)>(CVDate(Fix(Now()-(5/24)))+(25/2)/24) And (dbo_vwItemData.DischargeEventTime)<=(CVDate(Fix(Now()-(5/24)))+((39/2)/24))))
    GROUP BY CVDate(Fix(([DischargeEventTime]-(5/24))))
     
     
    UNION all
     
    SELECT Count(dbo_vwItemData.ItemID) AS [nbre net de colis traités], CVDate(Fix(([DischargeEventTime]-(5/24)))) AS jour
    FROM (dbo_vwItemData INNER JOIN dbo_vwParts ON dbo_vwItemData.DischargePartID = dbo_vwParts.ID) INNER JOIN [table_Affich-general] ON dbo_vwParts.DisplayName = [table_Affich-general].[Chute (format access)]
    WHERE ((([table_Affich-general].Type)<>"RJT") AND ((dbo_vwItemData.DischargeEventTime)>(CVDate(Fix(Now()-(5/24)))+(39/2)/24) And (dbo_vwItemData.DischargeEventTime)<(CVDate(Fix(Now()+1-(5/24)))+(5/24))))
    GROUP BY CVDate(Fix(([DischargeEventTime]-(5/24))));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Sum([PROD- nbre de colis net tries ( par vacation)].[nbre net de colis traités]) AS [SommeDenbre net de colis traités]
    FROM [PROD- nbre de colis net tries ( par vacation)];

  16. #16
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    je précise que la requete union a été intitulée :
    PROD- nbre de colis net tries ( par vacation)

    la requete qui affiche la somme des 3 valeurs issue de la requete union s'intitule :
    PROD- nbre de colis TOTAL net trié

    Et j'oubliais. Ces requete sont affiché sur un formulaire avec un form_timer qui se réactualise toutes les minutes..
    Je ne sais pas si cela a un impact sur les données

  17. #17
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    jimbolion,

    J'ai fait un constat :
    Comme je te l'aie dis précédemment, , mes 3 requetes (matin , AM et nuit) ainsi que le total de ces 3 requetes ( issu de la requete union) sont d'un formulaire avec comme évenement un form_timer.
    Ainsi, ces 3 requetes ainsi que le total se réctualisent toutes les minutes.
    J'ai constaté que parfois, à certaine réactualisation, le total correspond bien à la somme des 3 requetes (matin, AM , nuit). Et puis à la réactualisaion suivante, le total ne correspond plus à la somme des 3 requtes (matin, Am, nuit).
    Et puis au bout de x minutes, rebelotte, le total correspond à la somme des 3 requetes.
    C'est à devenir dingue...

  18. #18
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut facteur
    Effectivement le form timer risque d'être la source de ton problème !

    pour le vérifier crée un formulaire et un bouton !
    Dans l'évènement associé à ce bouton affiche le résultat de tes 3 requetes ainsi que la somme globale issue de l'union !

    Si à chaque fois que tu fais le test çà fonctionne (et çà doit fonctionner) c'est que le résultat lié au timer n'est pas rafraîchi et que la requête union elle travaille en réelle !

    dans ce cas si tout est dans ton formulaire pourquoi ne pas afficher directement la somme de chaque requête que tu passes dans un contrôle puis la somme de ces 3 contrôles !

    jimbolion

  19. #19
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut facteur
    En tout cas tu es tout proche de ta solution !

    @++

  20. #20
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Bonjour jimbolion,
    J'ai suivi tes conseils et effecivement tout est ok dans le formulaire avec le bouton de commande .
    mais lorsque tu dis :
    pourquoi ne pas afficher directement la somme de chaque requête que tu passes dans un contrôle puis la somme de ces 3 contrôles !
    Qu'est ce que tu sous entends par " afficher directement la somme de chaque requete que tu passes dans un controle" ?

Discussions similaires

  1. [WebI Xi] Créer des rapports pour dates différentes pour une même requête
    Par MorningMemories dans le forum Débuter
    Réponses: 2
    Dernier message: 22/03/2012, 16h59
  2. Utilisation des formules sur les attributs Date
    Par rdmontreal dans le forum W4 Express
    Réponses: 2
    Dernier message: 26/10/2011, 00h37
  3. Réponses: 3
    Dernier message: 02/04/2010, 19h15
  4. Créer des formules Mathématiques dynamiques dans ACCESS
    Par Jeannot45 dans le forum Contribuez
    Réponses: 2
    Dernier message: 08/10/2009, 23h33
  5. [E-03] Se référer à la date système pour créer des conditions
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/02/2009, 16h08

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