【问题标题】:How do Microsoft reports (RDL) query the data?Microsoft 报告 (RDL) 如何查询数据?
【发布时间】:2010-10-26 12:23:15
【问题描述】:

我不是从头开始创建 RDL,所以这可能是个问题——我在处理已经准备好的文件。

MSDN 声明 RDL 文件中的 CommandText 可以包含 T-SQL 查询。好的,这个我明白了,但它还能包含什么?

我之所以问,是因为措辞清楚地表明您可以在其中添加一些其他表达方式 因此,如果我理解正确,我可以查看 RDL 代码(在 Visual Studio 中,RDL 文件上的 RMB,“查看代码”),有趣的部分将是......?

  • DataSourceName -- 这是通过数据源定义到数据库的“链接”
  • CommandText -- 我认为这是放置查询的地方,例如 SELECT... 但据我所见,没有使用任何查询

【问题讨论】:

  • 注意: 我添加了 some info 关于对 *.rdl 文件进行逆向工程的内容,但如果有人能在 Visual Studio 的报告编辑器中展示如何找到它,那就太好了.为此,我提供了赏金。
  • 您在寻找 RDL 格式规范吗?它记录在这里:msdn.microsoft.com/en-us/library/ee240083.aspx
  • 不,我宁愿寻找一种方法来使用 Visual Studio 2015 的报表编辑器(UI)对报表进行逆向工程,而无需研究 XML 数据。如您所见,我提供了如何从 XML 数据中获取他的信息的答案,但使用 Visual Studio 也必须有不同的方法。

标签: c# visual-studio report rdl


【解决方案1】:

报告服务,将rdl文件加载到其中,并根据其部分开始解析和读取命令

数据源、报表参数等

获取参数的值(如果有)。开始使用数据源数据库连接。执行 query/sp 命令。获取数据,并存储在 rdl 中也提到的单独数据字段中。将它们的值与控件(文本框、网格列等)绑定,如果有任何表达式写入其中,也执行它们。

生成输出(html/pdf)。

你去吧。

我只是试图用简短的语言来解释。您可以查看 msdn 以获得完整的详细信息。

问候,

马扎尔·卡里米

【讨论】:

  • 据我了解,我看到的文字是第 4 种类型——表达式,对吧?所以为了让它工作,在执行这个报告时,表达式被定义,这就是它的工作方式。假设表达式是“expr1”——现在我必须在 C# 代码中定义一些方法 expr1?
【解决方案2】:

您可以手动创建报告并在其中填写您想要的任何数据。

类似的东西:

ReportDataSource reportDataSource = new ReportDataSource();
reportViewer.Reset();
reportDataSource.Name = "DataSetOdczyty_klienci_adresy";
reportDataSource.Value = klienciadresyBindingSource;
reportViewer.LocalReport.DataSources.Add(reportDataSource);
reportViewer.LocalReport.ReportEmbeddedResource = "Wodociagi.Reports.ReportListaKlientow.rdlc";

【讨论】:

  • 谢谢。就我而言,虽然我没有直接的 C# 代码对应物,但给出了 RDL 中的 CommandText。
【解决方案3】:

您可以使用Notepad++. 等XML 编辑器打开报告文件*.rdl,然后搜索<DataSets>,您将找到报告中使用的数据集。

  • 每个数据集的字段名称在<Fields>部分
  • 在每个数据集的<Query> 部分,您可以找到<CommandText><QueryParameters>,如下例所示

示例:

  <Query>
    <DataSourceName>MyDataSource</DataSourceName>
    <CommandType>StoredProcedure</CommandType>
    <CommandText>usp_QueryCustomers</CommandText>
    <QueryParameters>
      <QueryParameter Name="@CustomerId">
        <Value>=Parameters!PersSysId.Value</Value>
      </QueryParameter>
      <QueryParameter Name="@RowsCnt">
        <Value>=Parameters!RowsCnt.Value</Value>
      </QueryParameter>
    </QueryParameters>
  </Query>

我没有找到在 Visual Studio 的报表编辑器中轻松查看它的方法。也许我已经开始的bounty 在这里有帮助(有人喜欢赚取 50 声望点)吗?

【讨论】:

    【解决方案4】:

    最初,我不确定为什么 OP 和 @Matt 都直接读取 XML,而不是在 Visual Studio 中编辑查询(我只在极端情况下使用)。但现在我认为你可能已经失败了 missing "Report Data" pane 的受害者。

    像往常一样在 Visual Studio BIDS 中打开报表,然后从“查看”菜单中选择“报表数据”。如果它不存在,在任何地方单击报告画布,它就会出现。在将出现的“报告数据”窗格中,您对数据源(数据来自哪里?)和数据集(查询、参数、表达式是什么?)感兴趣。

    【讨论】:

    • 谢谢!这正是我一直在寻找的。我正在使用 VS Enterprise 2015 并在那里打开它。在“报告数据”窗格的“数据集”文件夹中,当我右键单击数据集时,我可以选择“数据集属性”,在那里我看到与报告关联的存储过程。你赢得了 +50 并投票,很好的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多