我在Visual Studio中工作以构建具有多个存储过程的报告。我的问题是用户需要能够从多值参数中选择,他们需要运行什么存储过程。存储过程适用于需要相同类型数据的不同部门。
即
-sp_MissingImagesFinance
-sp_MissingImagesHR
-sp_MissingImagesAdmin
我需要为用户创建一个下拉参数,以便能够根据他们的部门选择上述sp中的一个,然后他们将使用他们的特定sp运行报告。有没有办法做到这一点?我没有权限修改任何sp,所以我必须使用我拥有的。
答案 0 :(得分:1)
我建议创建一个与此类似的驱动程序存储过程。您只需要以这种方式传递选定的选项。另一种选择就像Jonathan Wilcock在他的回答中所说的那样。
create procedure MissingImagesReport
(@ReportName varchar(50))
as
set nocount on;
if @ReportName = 'Finance'
exec sp_MissingImagesFinance
if @ReportName = 'HR'
exec sp_MissingImagesHR
if @ReportName = 'Admin'
exec sp_MissingImagesAdmin
正如我在评论中提到的,我会敦促你的团队停止使用sp_
甚至更好,停止使用前缀。
答案 1 :(得分:0)
假设您使用的是ComboBox,那么您所需要的只是:
using (SqlConnection conn = new SqlConnection("MyConnectionString"))
{
conn.Open();
SqlCommand cmd = new SqlCommand(ComboBox1.Text, conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader rdr = cmd.ExecuteReader(); // or whatever you need
conn.Close();
}