2010-03-15 8 views
2

Je n'arrive pas à configurer un modèle de rapport pour créer des rapports avec le Générateur de rapports. Je suppose que je fais quelque chose de mal lors de la configuration du modèle de rapport, mais cela peut aussi être dû au changement d'entité principale dans le générateur de rapports.Modèle de rapport; problème concernant les relations plusieurs-à-plusieurs

J'ai 3 tables: Client, Adresse et Produit. Le client a PK ClientNumber. L'adresse et le produit ont tous deux une relation FK sur ClientNumber. La relation entre Client et Adresse est 1-à-plusieurs et également entre Client et Produit: Product- (many: 1) -Client- (1: many) -Address.

J'ai créé un modèle de rapport (principalement généré automatiquement) avec ces 3 tables, pour chaque table dans laquelle j'ai créé une entité. Maintenant, sur l'entité cliente, j'ai 2 rôles, adresse et produit. Ils ont tous les deux une cardinalité de 'OptionalMany', car le Client peut avoir plusieurs Adresses ou Produits. Sur l'adresse et le produit, j'ai un rôle client avec la cardinalité 'Un', car pour chaque adresse ou produit, il doit y avoir un client (essayé OptionalOne aussi ...).

Maintenant, j'essaie de créer un rapport dans Report Builder (2.0) où je sélectionne les champs de ces trois entités. J'aimerais avoir un aperçu des clients avec leur adresse principale et leurs produits, mais je ne semble pas être en mesure de créer un rapport avec des champs d'adresse et de produits. Je commence par sélectionner les attributs du Client, et dès que j'ajoute un Produit par exemple, l'entité Principale change comme si je sélectionnais Produits (au lieu de Clients).

Ceci est un exemple de base d'un problème auquel je suis confronté dans un modèle beaucoup plus complexe. J'ai essayé beaucoup de choses différentes pendant 2 jours, mais je n'arrive pas à le faire fonctionner. Est-ce que quelqu'un a une idée de comment faire face à cela?

(Utilisation SSRS 2008)

Edit: T-SQL est ce que je veux dire:

SELECT * 
FROM CLIENT 
    INNER JOIN ADDRESS ON CLIENT.CLIENT_NUMBER = ADDRESS.CLIENT_NUMBER AND ADDRESS.TYPE = 1 --Main Address 
    INNER JOIN PRODUCT ON CLIENT.CLIENT_NUMBER = PRODUCT.CLIENT_NUMBER 
WHERE CLIENT.CLIENT_NUMBER = 1 
+0

J'ai exactement le même problème. Si jamais je trouve une solution, je l'afficherai. – HardCode

Répondre

1

Mon expérience remonte au Générateur de rapports 1.0, mais MS n'a pas beaucoup changé dans leur modèle de rapport depuis donc il s'applique probablement encore.

Comme vous le mentionnez, vous pouvez définir de nombreuses relations dans le modèle, mais matérialiser ces relations dans un rapport tabulaire n'est pas possible. Une fois que vous avez choisi l'une des entités de tous les côtés (Produits), vous n'avez plus aucun moyen d'importer des données de l'autre côté (Adresses).

Vous pouvez avoir un peu de chance avec la création d'une table "jonction" (ClientID-AddressID-ProductID) et l'enchérissant de vos utilisateurs comme Bob's SQL Reporting Services Blog suggère.

En fin de compte c'est une grande limitation avec des modèles MS et il ne semble pas améliorer leur dernière incarnation Denali BISM many-to-many

+0

Eh bien, je suis heureux de voir que ce n'était pas seulement moi, ou l'OP. Merci pour l'info. – HardCode

0

Je comprends les anciens et les modèles de rapport SSRS post original est de 4 ans sont de plus hors de propos, mais une solution est pour définir les relations OptionalMany comme OptionalOne dans le modèle, en trompant essentiellement le modèle pour permettre la navigation et la génération de requêtes appropriées.

Questions connexes