Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
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 13/10/2006, 11h07   #1
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
Par défaut problème doublons clause WHERE

Bonjour,

J'ai un probleme avec mes clauses where...
J'ai un flag dans toutes mes tables qui doit etre à 1. (recordstatus)
Donc dans la définition de tous mes objets je met une clause where "recordstatus=1"

Le problème est que lors de ma requete BO les clauses wheres sont concatennées....

ex :SELECT
dbo.Company.iCompanyId,
dbo.Company.vchCompanyName
FROM
dbo.Company
WHERE
( dbo.Company.tiRecordStatus=1 )
AND ( dbo.Company.tiRecordStatus=1 )



Y'a t-il un moyen de ne pas avoir cette répétition...ou d'appliquer un clause where sur tous les objets d'une meme table...? merci
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 11h17   #2
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Tu peux dans le superviseur ajouter pour chaque utilisateur/groupe et pour un univers une restriction SQL sur des objets. Par exemple le fait que tel champ de telle table soit = 1.

Ca sert plutôt à la sécurité, mais on peut imaginer l'utiliser dans ton besoin.

Il y a aussi la solution (moins propre) de créer un table bidon qui sera toujours liée à toutes tes tables, et dans la jointure entre ces tables, tu rajoutes ta condition WHERE. Mais je ne conseille pas cette solution.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 11h33   #3
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
OK..je pense que je vais passer par le superviseur....

...en revanche est-ce qu'un fois toutes les restrictions créées (1 par table quand meme...j'ai une 30 aine de table) je pourrais les enregistrer d'une manière ou d'une autre...

Car je développe mon univers en SSII et devrais l'installer plus tard chez le client...

...faudra-t-il que je recréer ces restrictions ?
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 11h45   #4
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Euh bonne question... De mon expérience personnelle, les restrictions sont liées à l'utilisateur et donc sont présentes dans le référentiel mais PAS dans l'univers.

Il faudra donc que tu installes le référentiel entier chez ton client ou alors que tu les recréées à la main. Evidemment avec un script c'est peut-être faisable mais c'est dangereux quand même.

Bon je peux me tromper, mais je crois que tu n'auras pas le choix.

EDIT :
Enfin bon 30 tables c'est rien. Si le champ a le même nom partout ça te fait 30 secondes par tables -> 15mn. En terme de charge c'est rien, en comparaison de chercher pendant 1/2 journée comment éviter la modif manuelle.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 11h50   #5
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Personnellement pour des cas comme ça j'ai créé pour mes tables une jointure dont la table 1 et la table 2 sont les mêmes, Champ 1 et 2 les mêmes aussi, avec une cardinalité 1 <=> 1 et une expression comme dbo.Company.tiRecordStatus=1.

Quand tu rouvres ta jointure, seule la table 1 apparait... Et cette condition est appliquée sur tous les objets de ta table. Pas besoin de créer une table bidon... Ni de travailler dans le superviseur (auquel je n'ai d'ailleurs pas accès personnellement).
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 11h58   #6
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Tiens c'est sympa comme astuce ça, je pensais que BO refusait ce genre de jointure.

Bon ben pour la facilité ET la portabilité, je soutiens la solution d'Eusebe. Par contre ça résiste en cas de changement de version ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 12h04   #7
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
Je viens de tester....avec ça...

dbo.Company.iCompanyId=dbo.Company.iCompanyId and tirecordStatus=1

Le souci, c'est que ça va me rajouter ceci dans mes requetes "dbo.Company.iCompanyId=dbo.Company.iCompanyId" et pour chaque table....donc ça revient quasiment au meme que d'avoir des recordstatus répété...

La solution du supervisor me semble mieux !!! moi je dis BANCO
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 12h08   #8
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Citation:
Envoyé par bastoonet
Je viens de tester....avec ça...

dbo.Company.iCompanyId=dbo.Company.iCompanyId and tirecordStatus=1

Le souci, c'est que ça va me rajouter ceci dans mes requetes "dbo.Company.iCompanyId=dbo.Company.iCompanyId" et pour chaque table....donc ça revient quasiment au meme que d'avoir des recordstatus répété...

La solution du supervisor me semble mieux !!! moi je dis BANCO
Il ne faut pas que tu mettes
Code :
dbo.Company.iCompanyId=dbo.Company.iCompanyId AND tirecordStatus=1
mais uniquement
Code :
dbo.Company.tirecordStatus=1
Tu peux tout à fait supprimer ce qui est mis par défaut pas BO...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 12h09   #9
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Ah oui mais non ! Ca va te répéter pour chaque table, alors qu'avant ça allait te les répeter pour chaque objet. C'est pas vraiment la même chose.

De toutes façons, si tu fais des restrictions dans le superviseur ça va AUSSI te rajouter une ligne de condition par table dans ta requete SQL.

EDIT : grillé.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 12h10   #10
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Citation:
Envoyé par nuke_y
Par contre ça résiste en cas de changement de version ?
Ca je ne sais pas... Je travaille personnellement sur la version 5.1.5 du Designer...
Je me demande si je n'avais pas trouvé cette astuce dans une doc de BO... J'essaierai de la retrouver éventuellement...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2006, 12h20   #11
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
Bon je vais utiliser soit la solution jointure table à table..qui marche...soit superviseur...on verra...merci bien

je bosse sous la V5....avec sql server...


merci pour les astuces...
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 10h19   #12
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 18
Points : 15
Points : 15
Mais euh... on peut créer ce qu'on appelle une condition dans le designer.. C'est fait pour.. Dans le designer, tu cliques sur le filtre (en bas à gauche), et ensuite tu cliques droit sur une classe et tu cliques sur condition. Là tu ne remplis que la clause Where et hop ! Ensuite dans ta requête dans le rapport, tu fais glisser la condition dans l'encadré du bas.
_GôTô_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 10h21   #13
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Certes mais je pensais qu'il voulait que ça soit transparent pour le reporter.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 10h27   #14
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 18
Points : 15
Points : 15
Ah.. Je dois avouer que j'ai pas lu toute la discussion
_GôTô_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 10h44   #15
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
De plus, je voulais vérifier techniquement que je n'allais pas dire une bêtise, mais s'il créé une condition contenant
Code :
Tab1.tirecordStatus=1 AND Tab2.tirecordStatus=1 AND ...
il ne pourra pas l'utiliser pour des requêtes qui n'incluent pas TOUTES les tables citées dans cette condition.

Et s'il créé une condition par table
...
Alors il faudra toutes les sélectionner à chaque rapport et faire TRES ATTENTION à n'en oublier aucune. Enorme source d'erreurs donc.

C'est pour ça que je pense que la solution transparente est la meilleure. D'ailleurs, à mon sens, cela devrait être géré directement dans la BDD ce genre de choses...
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 13h48   #16
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
Par défaut bon bah voila koi

Oui je veux que ça soit transparent pour l'utilisateur...

je ne vois pas l'interet d'avoir une condition à utiliser pour absolument toutes les requetes, et de plus il me faudrait une condition par table...et non par classe...ce qui fonctionnellement serait imcompréhensible pour les utilisateurs..d'autant plus qu'il s'agit d'un flag technique !!

La solution de traiter le problème à l'alimentation de la base aurait été certe utile, mais en l'ocurence je fais juste une copie de la base, l'univers étant assez simple et le projet petit, cela ferait de la paperasse en plus et du boulot aussi..

l'utilisation du superviser est donc la meilleur solution...adjugé vendu.....
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2006, 15h41   #17
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Je comprend tes arguments, et je suis d'accord. Je voulais juste dire que dans le cas d'un projet plus conséquent, un travail sur la base avec des vues en lecture + filtre sur les lignes visibles seulement en guise de table aurait valu le coup.
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web