2009-11-24 192 views
0

在我管理的預訂客房,我的.NET應用程序檢查結果。我通過使用INSERT INTO語句中的SQL查詢到MS Access數據庫進入房間預訂。從MS Access數據庫(VB.NET)

之前我插入預約,我需要檢查是否預訂已經存在的那段時間,如果確實如此,從能夠預定在那個時候停止用戶。

我已經寫代碼來檢索當天,他們要預訂的預訂時間,而事實上,訪問將返回的數據將意味着用戶想要預訂在別人數據庫的結果。

但我堅持我如何能檢查,如果我有一個resuklt返回。我的代碼:

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Database\database.mdb;") 
    cn.Open() 
    cmd = New OleDbCommand("SELECT * FROM(" & roomvar.ToLower() & ") WHERE (((" & roomvar.ToLower() & ".date)=" & Chr(34) & dtpDate.Value.Date & Chr(34) & "))", cn) 
    dr = cmd.ExecuteReader 
    If dr.HasRows = True Then 
     MsgBox("There is an existing booking") 
    End If 
    dr.Close() 

但是,這不起作用,它顯示消息框,無論是否有一個行返回或不。我如何檢查一行是否被返回?

謝謝。

回答

0
cmd = New OleDbCommand("SELECT Count(*) FROM(" & roomvar.ToLower() & ") WHERE (((" & roomvar.ToLower() & ".date)=" & Chr(34) & dtpDate.Value.Date & Chr(34) & "))", cn) 
dim alreadyBooked as Integer = cmd.ExecuteScalar 

If alreadyBooked > 0 Then 
    Msgbox "There is an existing booking" 
End If 

編輯:vb.net是不是我使用的語言。您可能需要在cmd.ExecuteScalar上投射。
另外,我建議使用Using聲明。

鏈接:http://www.pluralsight.com/community/blogs/fritz/archive/2005/04/28/7834.aspx