0

EFを使用したASP.NETMVC4プロジェクトがあります。RDLCレポートのReportControlを表示するASPXWebページがあります。

そこに2つのテーブルがあります:注文エージェント。私のレポートでは、すべての注文を(Tablixで)表示したいと思います。

OrderNo | OrderDate | OrderTotal | OrderStatus | エージェント

(エージェント列はエージェントの名前です: "Agent.Name")

Q: Tablixの別のテーブル(エージェント)のフィールド(Agent.Name)を表示するにはどうすればよいですか?

if (!IsPostBack)
   {
    var qry = FROM o in db.Orders
              //JOIN a in d.Agents on o.idAgent equals a.idAgent
              SELECT o; // 
    ReportDataSource dataSource = new ReportDataSource("DataSetOrder_Agent", qry);
    ReportViewerOrders.LocalReport.DataSources.Add(dataSource);
   }
4

1 に答える 1

0
  1. SPの使用:

    CREATE PROCEDURE [dbo].spAgentOrders    
    (
    @fromdate DATE,
    @todate DATE
    )   
    AS
    DECLARE @from DATE = @fromdate, @to DATE = @todate
    SELECT o.orderbo, o.orderdate, o.ordervalue, o.status, a.name
    FROM orders o 
    JOIN agent a on o.id_agent = a.id_agent
    WHERE o.orderdate between @from and @to
    RETURN
    

モデルを更新し、複合型を返す関数インポートとしてSPを追加します。2. Webフォームのコードビハインド:

if (!IsPostBack)
{
//...
var qry = db.spAgentOrders(tbFrom.Text, tbTo.Text);

ReportDataSource dataSource = new ReportDataSource("DataSetOrder_Agent", qry);
ReportViewerOrders.LocalReport.DataSources.Add(dataSource);
}
  1. レポートのデータソース.xsdを更新します。サーバーエクスプローラーからSPをドラッグします。
于 2012-08-05T09:01:33.860 に答える