2016-07-26 11 views
17

SSRSを使用してレポートを作成する場合、データセットウィンドウのクエリボックスを使用してカスタムクエリを作成できます。しかし、ローカルレポート(.RDLC)では、レポートを作成するときに、レポート用に設計されたデータセットを設定する必要があります。Microsoftレポート用データセットの使用

enter image description here

我々は、我々はまた、100 Datasets.Currently我々は、これらのフィールド(F1、F2、F3、...、F100)で、私たちのデータテーブルを結合する前にデータセットを使用している必要があり100件のレポートを持っているときに問題がありますデータテーブルの列の名前が変更されたことを報告します。しかし、読みやすさは低いです。

私はこの問題を解決するより良い方法はありますか?

おかげ

+0

int|ProductID,string|ProductNameなどの種類ごとに区切り文字を使用して、それを設定することができますか? – lokusking

+0

私は本当にあなたの質問を納得させることはできません。あなたのGUIがあまりにもコンパイルされているか、コードの可読性がある程度向上する必要があるかどうかを知りたいですか? いずれの方法でも、一部のコードスニペットやスクリーンショットで多くの役に立ちます。 – Megajin

答えて

1

私は助けるために、より多くの情報が必要な場合があります - あなたは本当にあるあなたが今にバインドする必要があることをあなたがF1、F2、F3、ラベルされたフィールドを持つデータセットを持っていることを言って...と(たとえば)Id、CustType、IsActiveなどのラベルが付けられた実際のテーブル

この場合、F1、F2、...のように各フィールド名を別名にするビューを使用することをお勧めします。これは元の問題と同じように機能しますが、すべてを自動化できます。

これらの100のビューを作成するには、スクリプトを使用します。このスクリプトは、SQL Serverに格納されているスキーマデータを取得し、必要なスクリプトを出力するスマートT-SQLを実行することによって作成できます。

How can I get column names from a table in SQL Server?をご覧ください。

おそらくT-SQLでカーソルを使用してスキーマデータをループし、スクリプトを出力してビューを作成する必要があります。

最後に、同じ方法で100種類のSSRSレポートをそれぞれ変更する必要がある場合は、それぞれがレポート定義言語(XML)に格納されていることを忘れないで、それぞれを読み込む小さなユーティリティXMLファイルを作成し、必要な変更を加えます。これらのファイルを最初にバックアップしてから、新しいユーティリティを緩和することを忘れないでください。

私はこれがすべて役立ち、答えが遅すぎるとは思わないことを願っています。

+0

ありがとう、しかし私は知っているすべてあなたが言ったと私はそれらのいくつかを試してみてください。だから私はより良い解決策を探します – Arian

3

これは、データセットをグループ化するのが最善の方法です。 ビジネスによって回避されるデータセットをグループ化できます。たとえば、POLICY.xsd、USER.xsd、INVOICE.xsdなどとし、他のデータセットをxsdファイルに追加します。

たとえば、ビジュアルスタジオでは、10のデータセットファイルが表示されます。しかし、すべてのアイテムは異なるデータテーブルを持っています。

2番目のアップグレードでは、t-sqlの方が優れています。あなたが一般的に同様のレポートのためにあなたの列を選択するとき、あなたは同じデータテーブルを使用します。例えば

レポート5 columsn A1、A2、A3、A4、A5 Bレポートこれらのレポートのために6列A1、A2、A3、A4、A5、A6

が含まれますが、Bのレポートのデータテーブルを使用しますが含まれます

0

私は今までに提供された情報でこの問題を完全には理解していませんが、ここには大きな利点となる解決策があります。

ストアドプロシージャからレポートを作成しようとしましたか?このようにすることで、RDLCファイルにはクエリが含まれず、代わりにストアドプロシージャ内のクエリの定義が参照され、RDLCファイル内にデータセットが作成されます。実行時に、コードでストアドプロシージャを実行し、実行するためにRDLCファイルに返されたデータを渡します。

このようにする利点は、クエリがデータベースオブジェクトとしてカプセル化され、プロジェクトに100万個のデータセットが残っていないことと、レポートからクエリを切り離すことができることです。同じフィールドを使用していた同じバージョンの6つのバージョンがありましたが、異なるWHERE句が使用されていました。たとえば、1つのレポートしか使用できませんでした(実行時に関連するストアドプロシージャを呼び出します)。

0

Minimal, Complete, and Verifiable exampleを見てうれしいですが、私はそれにもショットを与えます。

できることは、データベースにテーブルを作成し、それぞれのデータに関連するデータを入れて、そのデータをループします。

すなわち

ID .............フィールド........................ .................. QueryType .............. SqlQuery/StoredProcedure

1 ......... ...... ProducID、ProductName ............ 0 ............................ ..SP_GetBasicProductInfo

2 ............... OrderID、ProductId ..................... 0 .. ............................ SP_GetOrderIdsByProduct

3 ... ............ CustomerID、CustomerName .... 1 ..............................この方法Northwind.Customers

など

から得意先、顧客名を選択して、あなたが実行されるクエリにし、SQLマップするフィールドを取得することができます。 最後に、この情報をData Access Layerに渡してクエリを実行し、必要なデータセットを記入することができます。

あなたは、文字列にすべてを変換しようとしたり、レポートのデータソースとして使用すると、実行時にdynmaicデータセットを作成し、溶液で大丈夫です

関連する問題