我的SELECT语句有什么问题?

时间:2016-02-29 21:52:12

标签: sql vb.net ms-access select

我正在使用此代码获取列日期为今天日期的列中的最后一个数字:

cn.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\bysys.mdb")
rs.Open("Select max(snum) From tblbill where idate = #" & Format(Today.Date, "dd/MM/yyyy") & "# ", cn, 1, 2)

If IsDBNull(Rs.Fields(0).Value) Then
    TextBox6.Text = 1
Else
    TextBox6.Text = Rs.Fields(0).Value + 1
End If

有时候它可以正常工作,但有时,它总会返回1 ..

1 个答案:

答案 0 :(得分:3)

当您提交可以用 mm / dd / yyyy 格式表示有效日期的值时,Access会将其解释为此类型。您可以故意将其格式化为 mm / dd / yyyy 而不是 dd / mm / yyyy 。但我们中的许多人更喜欢 yyyy / mm / dd ,因为Access总是正确地解释这种格式,我们人类不必担心日期是否为 dd / mm / yyyy可能会产生混淆 mm / dd / yyyy 格式。

"Select max(snum) From tblbill where idate = #" & Format(Today.Date, "yyyy/mm/dd") & "# "

然而,db引擎支持一个函数Date(),您的查询可以使用该函数来引用当前日期而不必担心任何格式。所以这个替代方案对我来说似乎最简单......

"Select max(snum) From tblbill where idate = Date()"