选择2个日期之间的值

时间:2014-02-20 19:36:32

标签: asp.net sql vb.net ms-access

我目前正在建立一个提供辅导服务的网站,我一直坚持这个问题..

我有两个文本框,用户选择开始日期和结束日期,当用户点击视图时,他会想要在网格视图中查看结果。我正在使用FormParameters将日期插入查询。

sqldatasource

的SelectCommand
SelectCommand="SELECT [Session].Session_num AS Num, [Session].Session_Time_Stamp AS Session_Date, Student.Student_First & ' ' & Student.Student_Last AS Student FROM (([Session] INNER JOIN Student ON [Session].Student_Num = Student.Student_Num) INNER JOIN Class ON [Session].Class_ID = Class.Class_ID) WHERE ((([Session].Session_Time_Stamp) Between @firstdate And @seconddate))">

SqlDataSource的参数

<SelectParameters>
    <asp:FormParameter Name="firstdate" Type="DateTime"/>
    <asp:FormParameter Name="seconddate" Type="DateTime"/>
</SelectParameters>

当用户单击视图按钮时执行此操作,它是我设置参数值并执行sql select的地方。

Dim fdate As DateTime = Format(CDate(txtStartDate.Text), "MM/dd/yyyy")
Dim ldate As DateTime = Format(CDate(txtEndDate.Text), "MM/dd/yyyy")
gridTutor.SelectParameters("firstdate").DefaultValue = fdate
gridTutor.SelectParameters("seconddate").DefaultValue = ldate
gridTutor.Select(DataSourceSelectArguments.Empty)
gridTutorSessions.DataBind()

fdate和ldate不为空,但执行此操作后,查询结果为空。可能是执行select的错误方法吗?

编辑:我意识到问题可能在于查询和DateTime格式。当我将文本框值转换为DateTime时,它就像#2/20/2014#那样。但是,即使两个日期之间存在值,它也不会返回任何内容。 如果有人有DateTime的访问查询我想看到它。感谢

2 个答案:

答案 0 :(得分:0)

我设法通过格式化访问数据库中的日期来修复它,这不是最好的解决方案,但它是一种解决方案

答案 1 :(得分:-1)

我相信您需要在执行'selectparameters'之前手动设置fdate和ldate(即使用“fdate = Format(CDate(txtStartDate.Text),”MM / dd / yyyy“)”。根据以下内容,以你所拥有的方式分配给Dim的值不会反映你想要的实时值。请参阅以下有关VB的内容:“可以在创建变量时为变量赋值。对于值类型,使用初始化程序来提供要分配给变量的表达式。表达式必须求值为可在编译时计算的常量。