问题描述
我有一个textBox1可以输入姓名或者电话一个包含日期复选框checkbox1 2 个 dateTimePicker 控件(dtpStart 和 dtpEnd)、按钮Search 一个comboBox1内有3个参数一个 datagridview
我想将用户在快速搜索框内输入姓名或者电话点击搜索 或者用户点击日期复选框checkbox1选择日期后将dateTimePicker 控件中的两个 date 参数传递给存储过程,以便在我的 datagridview 上返回所需的范围.
我的存储过程如下所示
ALTER PROCEDURE [dbo].[pHis_DoctorBaEndList]
(
@szBegin varchar(50),
@szEnd varchar(50),
@szZt varchar(50),
@szCond varchar(50)
)
AS
declare @szCyDateTj varchar(200)
declare @szCondTj varchar(1000)
declare @szSql varchar(8000)
declare @szZtTj varchar(200)
if (@szBegin='') or (@szBegin='')
select @szCyDateTj=''
else
select @szCyDateTj=' and 入驻时间>='''+@szBegin+''' and 入驻时间<='''+@szEnd+''' '
select @szCond='%'+@szCond+'%'
select @szCondTj=' and (姓名 like '''+@szCond+''' or 电话 like '''+@szCond+''')'
if @szZt='所有'
select @szZtTj=''
else
select @szZtTj=' and BaType='''+@szZt+''' '
select @szSql=' select ZYH,* from (select ZYH,''男'' as BaType from SC_WFP where EndType=''完成提交'' '+
' union all select ZYH,''女'' as BaType from SC_CFP where EndType=''完成提交'' '+
' union all select BAH as ZYH,''基层'' as BaType from N0_1 where EndType=''完成提交'' '+
' ) B,PersonInfo Z where B.ZYH=Z.zy_bm '+
' '+@szCyDateTj+@szCondTj+@szZtTj+' order by ZYH '
我使用winform搭建的三层框架框架
这个和几层架构无关,代码能返回DataSet,DataTable吗? 如果不能,可以参考一下下面的代码自行调整一下
```c#
public DataSet ExecuteProcedureDs(string StoredProcedureName, SqlParameter[] paraArray)
{
SqlConnection sqlConnection = (SqlConnection)this.OpenDbConnection();
try
{
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.StoredProcedure; //存储过程类型
sqlCommand.CommandText = StoredProcedureName;
sqlCommand.CommandTimeout = base.SqlExcueteTimeOut;
if (paraArray != null)
{
for (int iLoop = 0; iLoop < paraArray.Length; iLoop++)
{
sqlCommand.Parameters.Add(paraArray[iLoop]);
}
}
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
DataSet ds = new DataSet();
sqlDataAdapter.Fill(ds);
return ds;
}
catch (Exception xe)
{
throw new Exception(xe.Message);
}
finally
{
this.CloseDbConnection(sqlConnection);
}
}
```
得到DataSet或DataTable后,this.Grid控件.DataSource=DataSet或DataTable对象即可。