我有一个报告,它使用的存储过程可以有三种不同的输出,具体取决于参数值的选择。
参数private void sendWhatsapp(String message){
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");
sendIntent.setPackage("com.whatsapp");
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(sendIntent);
}
}
具有以下选项:“日/月/年”。
如果用户选择“Day”,则过程中有一个IF语句,用于使用表A并返回第1,2,3列。
如果用户选择“月”,则有一个IF语句使用表B并返回第4,5,6列
年份相同的情况。
因此存储过程可能会返回:
Report Type
正如您所看到的,我使用此存储过程在报表中创建的数据集,我无法“刷新字段”,它会提取字段供我在报表中使用。
如何在报告中使用一个具有不同返回值的存储过程,以便我可以设置字段来显示数据?
答案 0 :(得分:1)
我认为您最好的方法是让每个案例都返回相同的列名和类型集。如果一个案例返回的列数少于另一个案例,那么只需用空值填充额外的列。
答案 1 :(得分:0)
您可以通过SP决定参数并进行计算
的方式来实现CREATE PROCEDURE dbo.uspGetData @paramValue nvarchar(30)
AS
Select [column 1] as col1, [column 2] as col2, [column 3] as col3 from [Table 1] where @paramValue=N'Day'
UNION
Select [column 4] as col1, [column 5] as col2, [column 6] as col3 from [Table 2] where @paramValue=N'Month'
UNION
Select [column 7] as col1, [column 8] as col2, [column 9] as col3 from [Table 3] where @paramValue=N'Year'
GO