ASP - 从MS Access DB获取记录时,正在使用日期格式(在WHERE子句中)进行争斗

时间:2013-05-29 13:03:37

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

在将现有(以及之前正在运行的)站点从Windows Server 2003迁移到Server 2008,从IIS6跳转到IIS7的过程中,我遇到了这种奇怪的现象:

OpenSQL("SELECT * FROM bookings WHERE apartment_id = '" & strApartment & "' AND BookDate = #" & SwitchDate(dDate) & "#")

运行时,如果日期中没有前导零,则上述SQL脚本仅返回行。例如,如果日期是10/01/2010,它将返回行。但如果日期是01/01/2010,它将不会返回行。而是我收到此错误:

  

BOF或EOF为True,或者当前记录已被删除。请求的操作需要当前记录。

我根本不熟悉ASP(在这种情况下运行VB我相信,虽然我是经典的ASP - 我不知道你怎么说?)。但这是一个非常简单的请求,我无法理解发生了什么。我已经尝试删除switchdate函数(删除所有前导零),并使用语法,但都无济于事。

Access DB以01/01/2001格式保存记录。

1 个答案:

答案 0 :(得分:1)

虽然ACE和Jet数据库引擎确实将不明确的#xx/yy/zzzz#日期文字视为mm/dd/yyyy,但它们也接受明确的格式yyyy-mm-ddyyyy/mm/dd,因此您的最佳解决方案将更新您的SwitchDate()函数以返回其中一种格式。