2016-02-29 115 views
-3

我使用這個代碼來獲得一列中的最後一個號碼,其中列的日期是當天日期:我的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 ..

+0

你確定今天的'max(snum)'實際上不是'NULL'嗎? – JNevill

+2

它只在13日前的幾天工作嗎?建議使用yyyy-MM-dd –

+0

如果不知道數據是什麼樣的,我們無法發表評論。 – SteveCav

回答

3

當您提交的值可能代表mm/dd/yyyy格式中的有效日期,Access會將其解釋爲如此。您可以故意將其格式化爲mm/dd/yyyy而不是dd/mm/yyyy。但是我們很多人喜歡YYYY/MM/DD因爲Access總是解釋該格式正確,我們人類不必在日期是否DD/MM/YYYY毫米/ DD/YYYY困擾關於可能的混淆格式。

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

但是數據庫引擎支持的功能,Date(),該查詢可以用它來指代當前的日期,而不會打擾任何格式。所以這個選擇對我來說似乎最簡單......

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