[英]Passing Date parameter from C# WinForm to SQL stored procedure
我有一个带有2个dateTimePicker
控件( dtpStart
和dtpEnd
),一个按钮和一个datagridview
的表单,用于显示结果。 datagridview
绑定到bindingSource
控件。
我想将两个date
参数从dateTimePicker
控件传递到存储过程,以便在我的datagridview上返回所需的范围。
我的存储过程如下所示:
CREATE PROC [dbo].[ProcTest](@StartDate date, @EndDate date)
AS
SELECT * FROM Test WHERE ModifiedDate BETWEEN @StartDate AND @EndDate
我的C#代码是:
private void button1_Click(object sender, EventArgs e)
{
dc = new NorthwindDataContext();
var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
bindingSource1.DataSource = Qry;
}
当我运行上面的代码时,我的数据网格上什么也没收到, dtpEnd.value
显示: 13/08/2012 02:15:29
,由于我在存储过程和datetimepicker
使用了date
类型,因此我认为这是一个转换问题。值是dateTime
类型。
请,如何解决这个问题?
您需要检索查询的结果,例如:
bindingSource1.DataSource = Qry.ToList();
我根本不认为问题与Date参数有关。 支持根据:
代替这个
var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
使用它并检查您的问题是否得到解决。
var Qry = dc.ProcTest(dtpStart.ToString("dd-MMM-yyyy"), dtpEnd.ToString("dd-MMM-yyyy"));
多亏了Dave R.提供的链接: http : //msdn.microsoft.com/zh-cn/library/bb386947.aspx,我发现我的代码无需任何修改即可工作。 因此,我首先通过从SP中删除参数来搜索错误,然后发现我必须创建一个指向SP结果的新数据源对象 ,并在设计时将其绑定到datagridview。 现在,数据网格显示数据和参数正在工作。
抱歉,在发布问题之前,我必须验证这一点,但是我对Date参数的使用感到非常困惑。
所以我保留了最初问题中的代码:
private void button1_Click(object sender, EventArgs e)
{
dc = new NorthwindDataContext();
var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
bindingSource1.DataSource = Qry;
}
我相信您需要发送日期,而不是日期时间选择器的值。
基本上,更改此行:
var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
读书:
var Qry = dc.ProcTest(dtpStart.SelectedDate.Value, dtpEnd.SelectedDate.Value);
如果那仍然不起作用,我可以尝试:
var Qry = dc.ProcTest(dtpStart.SelectedDate.Value.Date, dtpEnd.SelectedDate.Value.Date);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.