2010-10-26 68 views
3

我不是从头开始创建RDL,所以这可能是一个问题 - 我在准备好的文件上工作。微软如何报告(RDL)查询数据?

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

我在问,因为该措词清楚地表明你可以在那里放一些其他表达式 因此,如果我理解正确,我可以看RDL代码(在Visual Studio中,RDL文件上的RMB,“视图代码”)和有趣的部分会是...?

  • 的datasourcename - 这是一个“链接”到数据库中通过数据源的定义
  • 的CommandText - 我认为这是把查询,如SELECT的地方......但是从我看到有不使用任何查询
+0

**注:**我添加了[一些信息](http://stackoverflow.com/a/40524951/1016343)有关逆向工程a * .rdl文件,但如果有人能够展示如何在Visual Studio的报告编辑器中找到。为此我提供了赏金。 – Matt 2016-11-10 13:45:24

+0

你在寻找RDL格式规范吗?它记录在这里:https://msdn.microsoft.com/en-us/library/ee240083.aspx – 2016-11-11 06:34:54

+0

不,我想找一种方法来使用Visual Studio 2015的报告编辑器(UI)来反向工程报告,而无需必须研究XML数据。正如您所看到的,我提供了一个如何从XML数据中获取信息的答案,但使用Visual Studio也必须采用不同的方式。 – Matt 2016-11-14 11:48:17

回答

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"; 
+1

谢谢。在我的情况下,我没有直接的C#代码对应,但RDL中的CommandText被给出。 – greenoldman 2010-10-27 05:47:59

3

报告服务,加载RDL文件到它,并开始分析和阅读根据自己的部分像

数据源,报表参数,可以等

命令

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

生成输出(html/pdf)。

然后你去。

我只是试图用简短的单词来解释。你可以查看msdn了解完整的细节。

问候,

了Mazhar卡里米

+0

据我所知,我看到的文字是第四种 - 表达式,对吧?所以为了让它工作,在执行这个报告时,表达式被定义了,这就是它的工作原理。假设表达式是“expr1” - 现在我必须在C#代码中定义一些方法expr1? – greenoldman 2010-10-27 05:50:50

1

你可以像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> 

我没有找到一个方法来SE e在Visual Studio的报告编辑器中很容易。也许​​我已经开始在这里帮助(有人喜欢赚取50点声望点)?

1

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

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

+0

谢谢!这正是我所期待的。我正在使用VS Enterprise 2015并在那里打开它。在“报告数据”窗格的“数据集”文件夹中,当我右键单击数据集时,可以选择“数据集属性”,然后在那里看到与报告关联的存储过程。你赢得了+50和upvote,很好的答案! – Matt 2016-11-16 08:53:19