您好,欢迎访问三七文档
第1课:添加按日期筛选报表的参数第1课:添加按日期筛选报表的参数通过在报表查询中包含开始日期参数和结束日期参数,可以指定用来限定从数据源检索的数据所处的日期范围。您可以创建其他参数,以便对从数据源检索到的数据进行筛选。在本课中,您将向查询添加@StartDate和@EndDate参数,以便限定从数据源检索的数据。StartDate和EndDate两个报表参数是自动创建的,并显示在“报表数据”窗格中。参数区分大小写。查询参数以@符号作为开头,而报表参数则不然。您将这些参数的数据类型设置为DateTime,并将看到报表查看器工具栏中会显示一个带有参数文本框的日历控件。您还将设置这些参数的默认值,以使报表可以自动运行。最后,您将创建未绑定到查询参数的报表参数DayofWeek,并使用该报表参数对从数据源检索到的数据进行筛选。本教程要求您已完成教程:创建基本表报表。打开现有报表服务器项目1.单击“开始”,依次指向“所有程序”和MicrosoftSQLServer2008R2,单击BusinessIntelligenceDevelopmentStudio。2.在“文件”菜单上,指向“打开”,再单击“项目/解决方案”。3.导航到Tutorial.sln。本教程是在教程:创建基本表报表中创建的。4.单击“确定”打开项目。“教程”项目即在解决方案资源管理器中显示,并带有一个名为SalesOrders.rdl的报表。注意如果解决方案资源管理器不可见,请单击“视图”菜单中的“解决方案资源管理器”。将嵌入数据源转换为共享数据源1.在“报表数据”窗格中,右键单击数据源AdventureWorks并选择“转换为共享数据源”。名为AdventureWorks.rds的数据源即被添加到“解决方案资源管理器”中。2.在“报表数据”窗格中,右键单击AdventureWorks数据源,并选择“数据源属性”。3.在“名称”中,键入AdventureWorks_Ref。4.单击“确定”。替换现有数据集1.在“报表数据”窗格中,右键单击数据集AdventureWorksDataset,然后单击“数据集属性”。注意:如果未显示“报表数据”窗格,请单击“视图”菜单上的“报表数据”。2.在“数据源”中,确保已选中AdventureWorks_Ref。3.在“查询类型”中,确保已选中“文本”。4.单击“查询设计器”按钮打开查询设计器。5.用下列查询替换文本框中的文本。6.SELECT7.soh.OrderDateAS[Date],8.soh.SalesOrderNumberAS[Order],9.pps.NameASSubcat,pp.NameasProduct,10.SUM(sd.OrderQty)ASQty,11.SUM(sd.LineTotal)ASLineTotal12.FROMSales.SalesPersonsp13.INNERJOINSales.SalesOrderHeaderASsoh14.ONsp.BusinessEntityID=soh.SalesPersonID15.INNERJOINSales.SalesOrderDetailASsd16.ONsd.SalesOrderID=soh.SalesOrderID17.INNERJOINProduction.ProductASpp18.ONsd.ProductID=pp.ProductID19.INNERJOINProduction.ProductSubcategoryASpps20.ONpp.ProductSubcategoryID=pps.ProductSubcategoryID21.INNERJOINProduction.ProductCategoryASppc22.ONppc.ProductCategoryID=pps.ProductCategoryID23.GROUPBYppc.Name,soh.OrderDate,soh.SalesOrderNumber,24.pps.Name,pp.Name,soh.SalesPersonID25.HAVING(ppc.Name='Clothing'AND(soh.OrderDateBETWEEN(@StartDate)AND(@EndDate)))除添加了带有两个限制参数的条件之外,该查询与以前的查询相同:AND(soh.OrderDateBETWEEN(@StartDate)AND(@EndDate))26.在工具栏上单击“运行”(!)。此时将打开“定义查询参数”对话框,提示您输入参数值。27.提供以下两个值以查看筛选的结果集:1.在“参数值”列中,为@StartDate,输入值,例如1/31/2001。2.在“参数值”列中,为@EndDate输入值,例如1/31/2003。28.单击“确定”。29.结果集显示2001至2002年期间筛选后的订单数据集。30.单击两次“确定”。“报表数据”窗格即用数据集字段进行填充。另请注意将自动创建StartDate和EndDate两个报表参数,并显示在“参数”节点下面。在定义报表的查询参数之后,必须更改报表参数的数据类型,使其与源数据的数据类型匹配。默认数据类型为文本,在大多数数据源中,它映射为字符串数据类型。如果源数据是数字、布尔值或日期/时间,则必须更改报表参数数据类型。更改报表参数的数据类型和默认值1.在“报表数据”窗格中,展开“参数”,并双击StartDate。此时将打开“报表参数属性”对话框。2.确保参数名称为StartDate,并且提示为“开始日期”。3.在“数据类型”中,选择“日期/时间”。4.单击“确定”。5.在“报表数据”窗格中,双击EndDate。验证名称和提示值。6.在“数据类型”中,选择“日期/时间”。7.单击“确定”。8.单击“预览”。StartDate和EndDate参数将分别随附一个日历控件显示在报表工具栏中。参数的数据类型是Date/Time并且未定义可用值列表时,将自动显示日历控件。如果定义了可用值列表,则改为显示一个值下拉列表。9.提供以下两个参数值以运行报表:1.在StartDate参数文本框中,输入日期1/31/2001。2.在EndDate参数文本框中,输入日期1/31/2003。10.单击“查看报表”。报表将仅显示位于报表参数值范围中的数据。为报表创建报表参数后,可以为这些参数添加默认值。默认参数可以使报表自动运行;否则,用户必须输入参数值,报表才能运行。为参数设置默认值1.在“设计”视图的“报表数据”窗格中,展开“参数”,并双击StartDate。此时将打开“报表参数属性”对话框。2.单击“默认值”。3.选择“指定值”选项。此时将显示“添加”按钮和空的“值”网格。4.单击“添加”。空行即被添加到网格中。5.单击“值”文本框,并删除默认文本(Null)。6.键入1/31/2001。单击“确定”。7.在“报表设计”窗格中,双击EndDate。8.单击“默认值”。9.选择“指定值”选项。10.单击“添加”。11.键入1/31/2003。单击“确定”。12.单击“预览”。由于为所有参数定义了默认值,因此报表会立即运行。将新字段添加至查询以用于筛选1.切换到“设计”视图。2.右键单击数据集AdventureWorksDataset,并选择“数据集属性”。打开查询设计器,并用以下新查询替换查询:3.SELECT4.soh.OrderDateAS[Date],DATENAME(weekday,soh.OrderDate)asWeekday,5.soh.SalesOrderNumberAS[Order],6.pps.NameASSubcat,pp.NameasProduct,7.SUM(sd.OrderQty)ASQty,8.SUM(sd.LineTotal)ASLineTotal9.FROMSales.SalesPersonsp10.INNERJOINSales.SalesOrderHeaderASsoh11.ONsp.BusinessEntityID=soh.SalesPersonID12.INNERJOINSales.SalesOrderDetailASsd13.ONsd.SalesOrderID=soh.SalesOrderID14.INNERJOINProduction.ProductASpp15.ONsd.ProductID=pp.ProductID16.INNERJOINProduction.ProductSubcategoryASpps17.ONpp.ProductSubcategoryID=pps.ProductSubcategoryID18.INNERJOINProduction.ProductCategoryASppc19.ONppc.ProductCategoryID=pps.ProductCategoryID20.GROUPBYppc.Name,soh.OrderDate,soh.SalesOrderNumber,21.pps.Name,pp.Name,soh.SalesPersonIDHAVING(ppc.Name='Clothing'AND(soh.OrderDateBETWEEN(@StartDate)AND(@EndDate)))在查询中,将以下命令添加至SELECT语句,以便为发生销售业务的工作日另外定义一个计算列:DATENAME(weekday,soh.OrderDate)asWeekday.22.单击“运行”(!)。“定义查询参数”对话框随即打开。23.在“参数值”列中,为@StartDate,输入值,例如1/31/2001。24.在“参数值”列中,为@EndDate输入值,例如1/31/2003。25.单击“确定”。结果集中应该显示一个标有Weekday的新列。26.单击两次“确定”。在“报表数据”窗格中,确保含有Weekday字段。(可选)设置要筛选的表数据中的日期的格式1.单击“设计”选项卡。2.右键单击带[Date]字段表达式的单元,然后单击“文本框属性”。3.单击“数字”,然后在“类别”字段中,选择“日期”。4.在“类型”框中,选择“2000年1月31日,星期一”。5.单击“确定”。添加新报表参数1.在“设计”视图中,单击“报表数据”窗格中的“新建”,然后单击“参数”。此时将打开“报表参数属性”对话框。2.在“名称”中,键入DayoftheWeek。3.在“提示”中,键入“筛选每周工作日:”。4.确保该数据类型是Text。5.单击“默认值”。6.选择“指定值”选项。此时将显示“添加”按钮和空的“值”网格。7.单击“添加”。8.键入Friday。9.单击“确定”。使用参数表达式设置表筛选器1.在“设计”视图中,右键单击表的行控点或列控点,并选择“Tablix属性”。注意:表数据区域是基于Tablix数据区域的模板。2.单击“筛选器”。此时将显示空筛选器网格。3.单击“添加”。空行即被添加到网格中。4.在“表达式”的下拉列表中,选择[Weekday]。5.确保“运算符”显示为等号(=)。6.单击“值”文本框旁边的表达式(fx)按钮。此时将打开“表达式”对话框。7.在“类别”中,单击“参数”。当前参数列表将显示在“值”窗格中。双击DayoftheWeek。该参数表达式便会添加至表达式文本框中。现在表达式文本框中将显示以下表达式:=Parameters!DayoftheWeek.Value。8.单击“确定”。再次单击“确定”,退出“Tablix属性”对话框。现在设置表的筛选器,使其比较字段Weekday中的值和DayoftheWeek的参数值。例如,在报表工具栏中为DayoftheWeek输入值Friday时,报表处理器将仅处理表中字段Weekday的值是Friday的行。单击“预览”。由于所有参数都有默认值,因此报表会自动运行。该表将仅显示由StartDate和EndDate定义的日期范围中的值,以及有关Friday的值。后续步
本文标题:BI2
链接地址:https://www.777doc.com/doc-68 .html