"Data" 和 "Preview" 数据生成在 BIDS 中的工作方式有何区别?
What is the difference between how the "Data" and "Preview" data generation works in BIDS?
当我select“!” ("Run") BIDS 项目中设计图面的数据选项卡上的按钮,它会提示我输入我 selected 需要的存储过程的参数:
提供这些后,我单击“确定”按钮,我会在“数据”选项卡的网格中看到返回的数据。
在“预览”选项卡上使用相同的存储过程(但未明确 selected - 显然项目根据“数据”选项卡中 selected 的内容知道要使用哪个存储过程),而不是通过对话框提示我输入存储过程的参数,它显示了控件(两个日期时间选择器和一个下拉列表,其中填充了适当的选项):
然而,当我在“预览”选项卡的“数据”选项卡上输入相同的精确值时(select输入我从下拉列表中为 "Unit" 输入的值)然后 select "View Report" 按钮,我得到:
处理本地报表时出错。
报告处理期间发生错误。
数据集 'PriceVarianceSP' 的查询执行失败。
过程或函数 'priceAndUsageVariance' 需要未提供的参数“@Unit”。
priceAndUsageVariance 确实需要@Unit:
CREATE Procedure [dbo].[priceAndUsageVariance]
@Unit varchar(25),
@BegDate datetime,
@EndDate datetime
AS . . .
...但它还需要另外两个值 - 所有三个值都已提供。它是否只是抱怨一个据称缺失的“@Unit”值,因为它是列表中的第一个值,并且它会抱怨@BegDate 和@EndDate 缺失,如果它认为提供了@Unit,或者参数的顺序不同?
尝试 运行(执行 <- 并且我 do 感觉就像执行它,有时!)SSRS(在线)中的报告抛出与“预览”选项卡。
那么我怎样才能让它工作呢?存储过程中的某些内容是否需要更改,或者我是否需要对我的报告文件进行一些更改,或者...???
UDPATE
如果 .rdl 可以提供关于这里乱七八糟的东西的线索,那么它就在这里,光彩夺目:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSources>
<DataSource Name="PlatypusData">
<rd:DataSourceID>875e488f-a3fc-4066-befb-5b85a938f58d</rd:DataSourceID>
<DataSourceReference>PlatypusData</DataSourceReference>
</DataSource>
</DataSources>
<InteractiveHeight>11in</InteractiveHeight>
<ReportParameters>
<ReportParameter Name="BegDate">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>Begin Date</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>End Date</Prompt>
</ReportParameter>
<ReportParameter Name="Unit">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>Unit</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>UnitsQuery</DataSetName>
<ValueField>Unit</ValueField>
<LabelField>Unit</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
</ReportParameters>
<rd:DrawGrid>true</rd:DrawGrid>
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:SnapToGrid>true</rd:SnapToGrid>
<RightMargin>1in</RightMargin>
<LeftMargin>1in</LeftMargin>
<BottomMargin>1in</BottomMargin>
<rd:ReportID>bad7a923-1452-4e00-9cc3-1f437ad70ef6</rd:ReportID>
<DataSets>
<DataSet Name="PriceVarianceSP">
<Query>
<DataSourceName>PlatypusData</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>priceAndUsageVariance</CommandText>
</Query>
</DataSet>
<DataSet Name="UnitsQuery">
<Fields>
<Field Name="Unit">
<DataField>Unit</DataField>
</Field>
</Fields>
<Query>
<DataSourceName>PlatypusData</DataSourceName>
<CommandText>select distinct Unit from masterunits order by unit</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
</DataSets>
<Width>33in</Width>
<Body>
<ReportItems>
<Textbox Name="textbox1">
<rd:DefaultName>textbox1</rd:DefaultName>
<Style>
<Color>SteelBlue</Color>
<FontFamily>Tahoma</FontFamily>
<FontSize>20pt</FontSize>
<FontWeight>700</FontWeight>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Height>0.36in</Height>
<Value>PriceAndUsageVarianceReport</Value>
</Textbox>
</ReportItems>
<Height>2.625in</Height>
</Body>
<Language>en-US</Language>
<TopMargin>1in</TopMargin>
</Report>
更新 2
这就是解决困境的方法:
在设计图面的“数据”选项卡上,select 省略号点 ("Edit Selected Dataset")。
在“数据集”对话框中,选择“参数”选项卡。
像这样设置值:
(在 "Name" 列下方输入参数名称后,"Value" 列将填充可用分配,您可以从中进行选择)。
当未提供参数值时,您只会收到有关第一个参数值的错误消息,而不是所有参数值。
我觉得您需要进入数据集属性中的“参数”选项卡,并将报表参数映射到数据集参数。
当我select“!” ("Run") BIDS 项目中设计图面的数据选项卡上的按钮,它会提示我输入我 selected 需要的存储过程的参数:
提供这些后,我单击“确定”按钮,我会在“数据”选项卡的网格中看到返回的数据。
在“预览”选项卡上使用相同的存储过程(但未明确 selected - 显然项目根据“数据”选项卡中 selected 的内容知道要使用哪个存储过程),而不是通过对话框提示我输入存储过程的参数,它显示了控件(两个日期时间选择器和一个下拉列表,其中填充了适当的选项):
然而,当我在“预览”选项卡的“数据”选项卡上输入相同的精确值时(select输入我从下拉列表中为 "Unit" 输入的值)然后 select "View Report" 按钮,我得到:
处理本地报表时出错。 报告处理期间发生错误。 数据集 'PriceVarianceSP' 的查询执行失败。 过程或函数 'priceAndUsageVariance' 需要未提供的参数“@Unit”。
priceAndUsageVariance 确实需要@Unit:
CREATE Procedure [dbo].[priceAndUsageVariance]
@Unit varchar(25),
@BegDate datetime,
@EndDate datetime
AS . . .
...但它还需要另外两个值 - 所有三个值都已提供。它是否只是抱怨一个据称缺失的“@Unit”值,因为它是列表中的第一个值,并且它会抱怨@BegDate 和@EndDate 缺失,如果它认为提供了@Unit,或者参数的顺序不同?
尝试 运行(执行 <- 并且我 do 感觉就像执行它,有时!)SSRS(在线)中的报告抛出与“预览”选项卡。
那么我怎样才能让它工作呢?存储过程中的某些内容是否需要更改,或者我是否需要对我的报告文件进行一些更改,或者...???
UDPATE
如果 .rdl 可以提供关于这里乱七八糟的东西的线索,那么它就在这里,光彩夺目:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSources>
<DataSource Name="PlatypusData">
<rd:DataSourceID>875e488f-a3fc-4066-befb-5b85a938f58d</rd:DataSourceID>
<DataSourceReference>PlatypusData</DataSourceReference>
</DataSource>
</DataSources>
<InteractiveHeight>11in</InteractiveHeight>
<ReportParameters>
<ReportParameter Name="BegDate">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>Begin Date</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>End Date</Prompt>
</ReportParameter>
<ReportParameter Name="Unit">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>Unit</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>UnitsQuery</DataSetName>
<ValueField>Unit</ValueField>
<LabelField>Unit</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
</ReportParameters>
<rd:DrawGrid>true</rd:DrawGrid>
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:SnapToGrid>true</rd:SnapToGrid>
<RightMargin>1in</RightMargin>
<LeftMargin>1in</LeftMargin>
<BottomMargin>1in</BottomMargin>
<rd:ReportID>bad7a923-1452-4e00-9cc3-1f437ad70ef6</rd:ReportID>
<DataSets>
<DataSet Name="PriceVarianceSP">
<Query>
<DataSourceName>PlatypusData</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>priceAndUsageVariance</CommandText>
</Query>
</DataSet>
<DataSet Name="UnitsQuery">
<Fields>
<Field Name="Unit">
<DataField>Unit</DataField>
</Field>
</Fields>
<Query>
<DataSourceName>PlatypusData</DataSourceName>
<CommandText>select distinct Unit from masterunits order by unit</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
</DataSets>
<Width>33in</Width>
<Body>
<ReportItems>
<Textbox Name="textbox1">
<rd:DefaultName>textbox1</rd:DefaultName>
<Style>
<Color>SteelBlue</Color>
<FontFamily>Tahoma</FontFamily>
<FontSize>20pt</FontSize>
<FontWeight>700</FontWeight>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Height>0.36in</Height>
<Value>PriceAndUsageVarianceReport</Value>
</Textbox>
</ReportItems>
<Height>2.625in</Height>
</Body>
<Language>en-US</Language>
<TopMargin>1in</TopMargin>
</Report>
更新 2
这就是解决困境的方法:
在设计图面的“数据”选项卡上,select 省略号点 ("Edit Selected Dataset")。
在“数据集”对话框中,选择“参数”选项卡。
像这样设置值:
(在 "Name" 列下方输入参数名称后,"Value" 列将填充可用分配,您可以从中进行选择)。
当未提供参数值时,您只会收到有关第一个参数值的错误消息,而不是所有参数值。
我觉得您需要进入数据集属性中的“参数”选项卡,并将报表参数映射到数据集参数。