【发布时间】:2014-02-20 19:36:31
【问题描述】:
我目前正在开发一个提供辅导服务的网站,但我已经在这个问题上停留了很长一段时间..
我有 2 个文本框,用户可以在其中选择开始日期和结束日期,当用户单击视图时,他会假设在网格视图中看到结果。我正在使用 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 不为空,但执行后查询结果为空。会不会是执行选择的方法不对?
编辑:我意识到问题可能出在查询和日期时间格式上。当我将文本框值转换为 DateTime 时,它就像 #2/20/2014# 一样。但是,即使两个日期之间存在值,它也不会返回任何内容。 如果有人对 DateTime 有访问查询,我想看看。谢谢
【问题讨论】:
-
那么在您应用参数后实际执行更新的 Select 命令的代码在哪里...?请给我们更多的背景信息。
-
奇怪的是你得到一个字符串,用CDate把它转换成日期,然后用Format把它转换回一个字符串放在一个日期里面。
-
我会在 "gridTutor.SelectParameters("firstdate").DefaultValue = fdate" 上添加一个断点,确保实际填充了 firstdate 和 seconddate 的值(不是空白)
-
@the_lotus 这是 VB。人们一直在做各种可怕的事情。我见过很多情况,他们甚至都没有明确地转换任何东西。
-
@Wayne G. Dunn 感谢您的输入,但仍然没有显示任何内容。
标签: asp.net sql vb.net ms-access