Vba Gestion réservation date début/fin

Fermé
FMDCC Messages postés 74 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 31 août 2022 - 12 mai 2009 à 18:59
 othanga - 19 mai 2009 à 03:19
Bonjour,

Je fais une petite application de gestion de réservation de chambre dans des résidences vacances(projet PTI de BTS IG).

J'ai pratiquement terminé mais j'ai toujours un problème lors de la recherche des chambres de disponibles selon le type, la ville et les date de début et de fin sélectionnés par l'utilisateur.

Je n'arrive pas à écrire la requête pour que cette sélection se fasse. Je bloque au niveau de la restriction sur les dates.

Voilà tout d'abord mon schéma relationnel:
http://img26.imageshack.us/img26/7246/schemarelation.jpg

Puis le formulaire qui permet la recherche des chambres disponibles et la réservation:
http://img26.imageshack.us/img26/2672/reservation.jpg

Pour le code voilà ce que j'ai en ce moment:
_____________________________________________________________________________

Private Sub RechercherChambresButton_Click()
Dim strVille As String
Dim strCode As String
Dim strReq As String
Dim intNombreChambres As Integer
Dim strNomResidence As String
Dim intNumChambre As Integer
Dim strlibelleType As String
Dim dateDebut As Date
Dim dateFin As Date

ChambresDispoZL.RowSource = ""

If IsNull(VilleResidenceZLD) = False And IsNull(dateDebutTextbox) = False And IsNull(DateFinTextBox) = False Then

dateDebut = CDate(dateDebutTextbox.Value)
dateFin = CDate(DateFinTextBox.Value)

If dateDebut > dateFin Or dateDebut = dateFin Then
MsgBox "Erreur dans la sélection des dates."
Else

Select Case GroupeTypeChambre.Value
Case 1
strCode = "F1"
Case 2
strCode = "F2"
Case 3
strCode = "F3"
End Select

strVille = VilleResidenceZLD.Value

strReq = "SELECT Residence.resCode,resNom,Chambre.chamNum,typeLibelle FROM Residence,Chambre,TypeChambre,Reservation WHERE Residence.resCode = Chambre.resCode AND Chambre.typeCode = TypeChambre.typeCode AND Reservation.resCode = Chambre.resCode AND Reservation.chamNum = Chambre.chamnum "
strReq = strReq & "AND Chambre.typeCode = '" & strCode & "' AND resVille = '" & strVille & "' "
strReq = strReq & "AND " & dateDebut & " NOT BETWEEN reservDateDebut AND reservDateFin "
strReq = strReq & "AND " & dateFin & " NOT BETWEEN reservDateDebut AND reservDateFin "
strReq = strReq & "ORDER BY resNom,Chambre.chamNum;"

Set RSRechercheChambre = BDD.OpenRecordset(strReq)

intNombreChambres = 0

While RSRechercheChambre.EOF = False
strCodeResidence = RSRechercheChambre![resCode]
strNomResidence = RSRechercheChambre![resNom]
intNumChambre = RSRechercheChambre![chamNum]
strlibelleType = RSRechercheChambre![typeLibelle]
ChambresDispoZL.AddItem "'" & strCodeResidence & "';'" & strNomResidence & "';" & intNumChambre & ";'" & strlibelleType & "'"
intNombreChambres = intNombreChambres + 1
RSRechercheChambre.MoveNext
Wend

MsgBox "Il y a " & intNombreChambres & " chambre(s) qui corresponde(nt) à vos critères de recherche."

End If

Else
MsgBox "Certains champs ne sont pas remplis."
End If

________________________________________________________________________________

J'espère que vous pourrez m'aider et je remercis déjà tout ceux qui ont pris le temps de lire ce sujet.
Je peux si certains le veulent vous l'envoyer pour que ce soit peut etre plus simple à comprendre.

9 réponses

Hello

t'es-tu assuré que les dates que tu concatènes au texte de ta requête sont bien présentées dans le format attendu par ton moteur de données ?
car la première chose qui m'intrigue c'est qu'un moteur puisse accepter des dates sans délimiteurs : j'ai toujours vu des dates encadrées par des apostrophes, des guillemets ou des dièses mais jamais sans rien.
ensuite, il faut t'assurer que le format de date utilisé par ton langage colle bien avec le format de date attendu par ton moteur. Si ton moteur attend du yyyymmddhhmmss et que tu lui présente dd/mm/yyyy, ça ne collera évidemment pas.

et dans ton prochain appel à l'aide, n'hésite pas à citer l'éventuel message d'erreur que tu obtiens
0
FMDCC Messages postés 74 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 31 août 2022
12 mai 2009 à 19:35
Mes dates sont enregistrées selon le format date/heure ==> JJ/MM/AAAA

Je n'ai pas de message d'erreur mais je n'obtiens pas ce que je veux dans la zone de liste.
Je veux avoir la liste des chambres disponibles qui ne sont donc pas réservées entre la période de début et celle de fin.
0
comment es-tu sûr du format de cette date ?
quel est exactement le contenu de strReq juste avant l'instruction Set RSRechercheChambre = BDD.OpenRecordset(strReq) ?
0
FMDCC Messages postés 74 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 31 août 2022
12 mai 2009 à 19:53
Pour les dates, je l'ai ai toutes les deux converties en Date

dateDebut = CDate(dateDebutTextbox.Value)
dateFin = CDate(DateFinTextBox.Value)

Pour le contenu de strReq avant

Set RSRechercheChambre = BDD.OpenRecordset(strReq)

c'est juste la longue chaine concaténée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'aurais tendance à te conseiller un msgbox ou un truc trivial dans le genre juste pour vérifier avec tes yeux que strReq contient bien ce que tu crois.
0
FMDCC Messages postés 74 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 31 août 2022
14 mai 2009 à 19:25
Je peux si besoin vous donner mon fichier .mdb ce sera plus simple.

0
encore eut-il fallut que je puisse utiliser Access :D
désolé.

que se passe-t-il si juste avant l'OpenRecordSet(), tu rajoutes la ligne
MsgBox strReq
?
0
FMDCC Messages postés 74 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 31 août 2022
15 mai 2009 à 22:48
Voilà un exemple de ce que peut contenir strReq avant d'être exécutée.

http://img40.imageshack.us/img40/963/strreq.jpg

Si quelqu'un veux que je lui envoye mon fichier.mdb je peux.
Envoyez moi un e-mail à l'adresse: FM_DCC@hotmail.com
0
Hello !

ton msgBox ne montre qu'une jointure entre 4 tables, mais il n'y est aucunement question des dates qui ont déclenché ton appel au secours : tu construisais une requête avec des constantes issues de ton formulaire, des plages de dates (NOT BETWEEN) et j'y avais noté l'absence d'apostrophes pour délimiter les dates.

finalement, c'est quoi l'erreur, c'est quoi qui cloche ?
0