2009-08-09 9 views
1

Je crée un rapport qui va prendre quelques données d'une base de données (Société et liste de clients pour chaque entreprise) et certaines données qui lui sont connectées à partir d'autres bases de données (liste d'articles pour chaque client). Il semble que les données affichées ne peuvent utiliser qu'une DataSource et qu'une DataSource est une connexion à une base de données. J'ai fait des recherches sur les sous-rapports et j'ai essayé cette solution mais le rapport ne ressemble pas (par exemple j'ai des colonnes Société, Client et Article, où le sous-rapport est, et le sous-rapport contient deux colonnes et je ne voudrais pas les afficher dans une colonne ...). Les sous-rapports sont-ils vraiment les seuls moyens d'afficher des données de bases de données croisées?Comment afficher les données de deux bases de données dans le rapport RDL?

Répondre

3

Oui, un seul contrôle de rapport (table, liste, etc.) ne peut afficher que les données d'un jeu de données. Vous avez cependant quelques options.

Vous pouvez référencer plusieurs bases de données à partir d'un seul jeu de données si elles se trouvent sur le même serveur ou si un serveur est lié à l'autre. Par exemple, si vous avez les deux bases de données (société, CustomerData) sur le même serveur puis


Select co.CompanyName, cu.CustomerName, ci.CustomerItem1 
From company.dbo.Companies co 
     Inner Join company.dbo.Customers cu On cu.CompanyID = co.CompanyID 
     Inner Join customerdata.dbo.CustomerItems ci On ci.CustomerID = cu.CostomerID 

Si les bases de données sont des serveurs différents, mais sont liés, alors vous pouvez vous référer aux tableaux à l'aide servername.databasename.schema.tablename à la place. Dans les deux cas, vous devez vous assurer que la connexion que vous utilisez dispose des autorisations appropriées des deux côtés. Vous pouvez également utiliser SSIS pour extraire les tables des deux bases de données dans une base de données commune avant d'exécuter le rapport, qui peut être programmé pour s'exécuter pendant la nuit ou périodiquement pendant la journée.

+0

merci! je n'ai pas trouvé cette information nulle part – agnieszka

0

J'ai fait quelque chose comme ça en utilisant des sous-rapports dans rdlc. Je ne suis pas sûr si c'est possible d'être fait dans rdl mais dans rdlc chaque sous-rapport est en réalité un rapport avec sa propre DataSource. Cordialement, Iordan

Questions connexes