2009-11-24 5 views
0

Dans mon application .NET, je dois gérer les réservations pour les salles. J'entre la réservation de salle par l'intermédiaire d'une requête SQL à une base de données MS Access en utilisant une instruction INSERT INTO. Avant d'insérer la réservation, je dois vérifier si une réservation existe déjà pour cette période et si elle empêche l'utilisateur de réserver à ce moment-là. J'ai écrit un code pour récupérer un résultat de base de données le jour et l'heure de la réservation qu'ils veulent réserver, et le fait qu'Access renverrait des données signifierait que l'utilisateur essaie de réserver sur quelqu'un d'autre.Vérification du résultat de la base de données MS Access (VB.NET)

Mais je suis coincé sur la façon dont je peux vérifier si j'ai un resuklt retourné. Mon code:

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() 

Mais cela ne fonctionne pas, il affiche le messagebox quel que soit le cas il y a une ligne retournée ou non. Comment puis-je vérifier si une ligne a été renvoyée?

Merci.

Répondre

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 

EDIT: vb.net n'est pas la langue que j'utilise. Vous devrez peut-être appliquer le cast sur cmd.ExecuteScalar. En outre, je suggère l'utilisation de Using déclaration.

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

Questions connexes