0

レポートにクライアントの名前、住所、ユーザー名が記載された各注文の注文ラインを取得するカスタムレポートを作成する必要があります。

次のような簡単なクエリを実行すると、次のようになります。

SELECT FilteredSalesOrder.*, FilteredAccount.* 
FROM FilteredSalesOrder INNER JOIN FilteredAccount 
ON FilteredSalesOrder.customerid = FilteredAccount.accountid

データを取得しますが、1行のみです。それ以上ある場合、プレビューには何も表示されません。一度に1注文しか必要ないので、それほど大きな問題ではありません。

したがって、OrderReportには、各注文のすべてのOrderLineが必要です。レポートは、同時に複数の注文に対してではなく、注文ごとに印刷されます。次のようになります。 ここに画像の説明を入力してください

注文レポートのデータが必要な5つのテーブルを結合しました。

SELECT FilteredSalesOrder.*, FilteredAccount.*, FilteredSalesOrderDetail.*, FilteredSystemUser.*, FilteredProduct.*
FROM ((((FilteredSalesOrder INNER JOIN FilteredAccount 
ON FilteredSalesOrder.customerid = FilteredAccount.accountid) INNER JOIN FilteredSalesOrderDetail 
ON FilteredSalesOrderDetail.salesorderid = FilteredSalesOrder.salesorderid) INNER JOIN FilteredProduct
ON FilteredProduct.productid = FilteredSalesOrderDetail.productid) INNER JOIN FilteredSystemUser
ON FilteredSystemUser.systemuserid = FilteredSalesOrder.ownerid)

要約すると:

  • 私のSQLクエリは正しいですか?
  • 簡単なレポートをアップロードすると、エラーrsInvalidDataSourceReferenceが表示されます。私はこの問題が何を意味するのか知っていますが、それを解決するために何をする必要がありますか。
  • レポートで、すべてのオーダーラインを含めるために必要に応じてオーダーラインテーブルが増え続けることを確認するにはどうすればよいですか?
4

1 に答える 1

1
  • 私のSQLクエリは正しいですか?

クエリが665を超える列を返し、SQLがそれを処理できないため、エラーが返されました。

  • 簡単なレポートをアップロードすると、エラーrsInvalidDataSourceReferenceが表示されます。私はこの問題が何を意味するのか知っていますが、それを解決するために何をする必要がありますか。

これは、notepad ++でレポートを開いたときに接続文字列を調整することで解決され、実稼働環境に合わせてレポートを変更できます。

  • レポートで、すべてのオーダーラインを含めるために必要に応じてオーダーラインテーブルが増え続けることを確認するにはどうすればよいですか?

これは、SQLServerでVisualStudio2008のレポートウィザードを使用してレポートを作成するときにレポートが処理するものです。データセットからフィールドをドラッグアンドドロップした場合。レポートは、最初に見つかったレコードのみを取得します。

于 2012-09-26T14:00:55.763 に答える