Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Deski
Deski Forum d'entraide Deski (client lourd)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/02/2011, 18h12   #1
Membre régulier
 
Avatar de schkrumble
 
Inscription : mai 2008
Messages : 134
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations forums :
Inscription : mai 2008
Messages : 134
Points : 86
Points : 86
Par défaut condition de date dans une formule

Bonjour à tous,

J'ai une requête qui me ramène des ID et des dates (et d'autres champs, mais on s'en fout... ) <ID> et <Date> sont deux objets de type dimension.
Pour faire simple, disons que je veux compter les ID dont la date est passée :
  1. Dans une cellule d'un tableau, je saisi la formule =Nombre(<ID>).
    Ca marche : j'ai le nombre total d'ID.
    .
  2. J'ajoute un filtre complexe au tableau du type <Date> < Date actuelle()
    Ca marche : j'ai le nombre total d'ID dont la date est passée.
    .
  3. Mais si je saisi directement la formule =Nombre(<ID>) Où (<Date> < Date actuelle())
    BO m'indique une erreur de syntaxe...
Evidement je pourrais être moins perfectionniste et me contenter de la solution avec le filtre complexe plutôt que d'essayer d'insérer ma condition dans ma formule... Sauf que, en vrai, j'ai besoin de présenter sur les différentes colonnes d'un même tableau, le nombre total d'ID, le nombre d'ID de l'année en cours, le nombre d'ID du mois en cours et celui du mois dernier.

Si quelqu'un a une suggestion je suis prenneur...
schkrumble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 18h38   #2
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
C'est logique, l'opérateur Où est un opérateur de contexte qui doit s'appliquer à un indicateur, pas une dimension.

Je vois deux possibillités de résoudre ton problème
  1. Tu as accès à l'univers, tu peux alors définir un indicateur "compteur" qui donne 1 pour chaque ID.
    Tu peux ensuite dans ton rapport lui appliquer l'opérateur contextuel "Où"
  2. Tu crée une formule "ID_Filtré" avec comme valeur (0 doit être une valeur qui n'existe jamais dans la colonne ID)
    Code :
    = Si <Date> < Date actuelle() Alors <ID> Sinon 0
    Il ne te reste plus qu'à afficher le résultat par la formule
    Code :
    =Nombre(<ID_Filtré>) - 1
    (on enlève 1 pour ne pas compter la valeur bidon)
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 18h55   #3
Membre régulier
 
Avatar de schkrumble
 
Inscription : mai 2008
Messages : 134
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations forums :
Inscription : mai 2008
Messages : 134
Points : 86
Points : 86
Pour l'instant je ne requête pas sur un univers mais sur une table de donnée Excel.

Mais j'ai exactement le même problème si je remplace mon Compte(<ID>) par un indicateur... (je viens de tester avec un indicateur de montant)
schkrumble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h01   #4
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Re,
Avec un indicateur, la fonction Nombre() ne fait pas vraiment sens, il faut plutôt utiliser une fonction d’agrégation comme un Somme()
Attention aussi à la syntaxe du Où : cet opérateur s'applique à un indicateur et la condition qui suit doit être entre parenthèses. Par exemple
Code :
=Somme(<Indicateur>(<Dimension>="oui") )
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h08   #5
Membre régulier
 
Avatar de schkrumble
 
Inscription : mai 2008
Messages : 134
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations forums :
Inscription : mai 2008
Messages : 134
Points : 86
Points : 86
Je n'ai pas mis de fonction nombre devant mon indicateur.

A priori, avec un indicateur dont la fonction de projection par défaut est une somme, pas besoin de rajouter de fonction somme devant.


Edit :
par acquis de conscience je viens quand même d'essayer, ça marche pas mieux !
schkrumble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h11   #6
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
OK, quelle est la syntaxe exacte qui te pose problème avec l'indicateur ?
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h15   #7
Membre régulier
 
Avatar de schkrumble
 
Inscription : mai 2008
Messages : 134
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations forums :
Inscription : mai 2008
Messages : 134
Points : 86
Points : 86
Code :
=<Montant>(<Date> < DateActuelle())
il me renvoie erreur de syntaxe.


Par contre, ça fonctionne avec ceci :
Code :
=<Montant>(<Date>='01/04/2011')
schkrumble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h26   #8
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
OOps ! J'ai loupé ça... l'opérateur Où ne fonctionne qu'avec une égalité.
Le mieux est donc de définir une variable "Test" avec la formule
Code :
=Si <Date> < DateActuelle() Alors 1 Sinon 0
Puis d'afficher la formule
Code :
=<Montant>(<Test> = 1)
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h48   #9
Membre régulier
 
Avatar de schkrumble
 
Inscription : mai 2008
Messages : 134
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations forums :
Inscription : mai 2008
Messages : 134
Points : 86
Points : 86
ça marche !
un grand merci à toi.



Remarques subsidiaires :
  • avec un objet de type dimension agrégé par la fonction Nombre(), ça marche aussi bien qu'avec un indicateur.
  • la syntaxe Où (<date> = DateActuelle()) est quand même refusée pourtant elle s'appuie sur une égalité simple
schkrumble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 19h51   #10
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Super ! Et merci à toi pour les remarques subsidiaires... j'en prends note, ça peut servir.
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h28.


 
 
 
 
Partenaires

Hébergement Web