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

Deski Discussion :

Invite Date et calculs BO 6.5.1


Sujet :

Deski

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Invite Date et calculs BO 6.5.1
    Bon, une bonne journée à fureter ici et ailleurs, à regarder les tutos, et toujours pas de solution, je désespère, donc je poste.

    L'affaire est la suivante, sous BO 6.5.1:

    Je dois extraire des stats sur un même rapport via 3 requêtes:
    1/ Chiffres de la veille
    2/ Chiffres depuis le début du mois
    3/ Chiffres sur les 30 derniers jours glissant.

    Dans la mesure où le champ sur lequel s'appuie la requête est au format JJ/MM/AAAA hh:mi:ss, cela me fait donc 4 invites à saisir, soit 4 sources d'erreur.

    Pour le moment je ne souhaite pas automatiser complètement la requête.
    Je souhaiterais que l'utilisateur se contente de saisir la date de la veille (JJ/MM/AAAA), et que les 4 valeurs soient calculées automatiquement pour le rafraichissement des 3 requêtes. Et cela fait quinze jour que je me bats avec les différentes fonctions Date, et que je n'y arrive pas.

    Auriez vous une solution miraculeuse?

  2. #2
    Membre averti

    Inscrit en
    Juillet 2007
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 391
    Points : 443
    Points
    443
    Par défaut
    Hello,

    impossible de calculer à la volée dans une condition de requête.

    par contre, si tu as accès à l'univers, tu peux créer des objets qui feront les calculs pour toi.

    Exemple :

    Objet [Date A] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = prompt ("date choisie", 'D', etc....)
    (prompt classique)

    Objet [Date B] (le code varie selon le SGBD) :
    pour 30 jours glissants : faire une requête avec [date] comprise entre [Date B] et [date A]

    Objet [Date C] (pareil, à adapter selon le SGBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ToDate('01/'&Month([Date A]&'/'&Year([Date A],'dd/MM/yyyy')
    pour données depuis le début du mois choisi : faire une requête avec [date] comprise entre [Date C] et [date A]

    Et calcul ultime, la date de la veille en jours ouvré (en version sql server) !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    =Case when datename(weekday, getdate()) = 'Monday' Then
    		convert(datetime,convert(varchar,getdate()-3,103),103)
    	Else Case when datename(weekday, getdate()) = 'Sunday' Then
    			convert(datetime,convert(varchar,getdate()-2,103),103)
    		 Else
    			convert(datetime,convert(varchar,getdate()-1,103),103)
    		 End
    	End
    Alors, heureux ?

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est là mon problème...
    Je n'ai pas designer et ne peux créer des objets dans mon univers.
    La société qui nous a vendu le progiciel sur lequel requête BO a gardé la main sur la création d'objets BO, et tu imagines bien qu'il y a largement plus urgent que de créer des objets pour le sombre c_ _ _ llon qui fait les stats.

    Je songeais à étudier la possibilité de créer des objets communs au 3 requêtes du rapport, via des formules à l'emporte pièce comme j'ai pu en croiser sur différents posts ici (conversion de date en texte, remplacement ou concaténation, reconversion en date ensuite...) mais je n'arrive pas à monter quelque chose qui se tienne...

  4. #4
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    Tu peux effectivement t'en sortir même sans avoir accès au designer, ça sera plus fastidieux mais bon...

    Ce que je te conseille, c'est de partir d'une seule requête, comme cela il n'y aura qu'une ou deux dates à saisir en invite :
    • Une seule si tu n'as pas de données au delà de la date du jour
    • Deux dans le cas contaire

    La seule date obligatoire donc est celle à J-30 (moins 1 mois serait d'ailleurs plus facile à traiter que J-30, dans le cas où le jour de rafrachissement de la requête est un 31)

    Le but en fait est de créer les tableaux, graphes, etc... Avec toutes les données issues de la requête, donc de J-30 à J. Ca sera ensuite le fait de placer des filtres complexes sur les éléments en question qui permettra d'obtenir les données sur les périodes souhaitées.

    Pour les données entre J-30 et J, rien de compliqué, on laisse bien évidemment les données telles quelles.

    Pour les données entre le 1er du mois et J, il faut récupérer la valeur du 1er jour du mois : (Le mieux pour cela est de créer une variable de type dimension avec la formule ci-dessous. Nommons cette variable "Date1er")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EnDate("01/"&FormatDeNombre(NuméroDuMoisDeAnnée(RéponseUtilisateur("TonFournisseurDeDonnées","TonInvite")),"00")&"/"&FormatDeNombre(Année(RéponseUtilisateur("TonFournisseurDeDonnées","TonInvite")),"0"),"jj/mm/aaaa")
    Il faudra donc ensuite poser un filtre complexe sur les éléments concernés (ou sur la page complète si tu as un onglet dédié) en posant le filtre sur la date à filtrer avec la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =<DateAFiltrer>>=<Date1er>
    Pour les données de la veille, même système mais en plus simple : Il suffit de créer une variable de type dimension avec la formule ci-dessous, nommons la "DateVeille" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EnDate(RéponseUtilisateur("TonFournisseurDeDonnées","TonInvite"),"jj/mm/aaaa")-1
    Ensuite, il faut créer un filtre complexe sur les éléments désirés avec en posant le filtre toujours sur la date à filtrer avec la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =<DateAFiltrer>=<DateVeille>
    J'avoue être moins zélé que bch97 car je n'ai pas pris en compte le problème du jour ouvré sur la date de la veille... Mais cela reste possible quoi qu'il en soit. Il faut pour cela créer une condition sur le calcul de la date de la veille pour savoir quel en est le jour de la semaine, et mettre "-1", "-2" ou "-3" en fonction...

Discussions similaires

  1. Format de Date et Calcul d'une durée sous VBA
    Par julieko dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/12/2010, 17h04
  2. Filtre sur date dans calcul total form.
    Par lbar012001 dans le forum IHM
    Réponses: 2
    Dernier message: 21/06/2010, 11h11
  3. [Vxi3] Filtrer une invite Date
    Par sircus dans le forum Webi
    Réponses: 1
    Dernier message: 19/05/2009, 23h33
  4. Decode avec des dates pour calculer une valeur
    Par decisio dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/01/2009, 12h50
  5. [Dates] Fonction calcule le nombre de demi-heures
    Par bigltnt dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2007, 15h31

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