Rechercher : dans
Par :

Vba Gestion réservation date début/fin

Dernière réponse le 19 mai 2009 à 03:19:25 FMDCC, le 12 mai 2009 à 18:59:01 
 Signaler ce message aux modérateurs

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.
Configuration: Windows Vista Internet Explorer 7.0

Meilleures réponses pour « Vba Gestion réservation date début/fin » dans :
Différence entre dates avec la fonction DATEDIF VoirLa fonction DATEDIF n'est pas documentée dans Excel, mais par contre sur CCM vous pouvez trouver les possibilités offertes. En voici un résumé.   La syntaxe =DATEDIF(date début;date fin;type de calcul) date début : doit être une valeur date...
[VBA] RechercheV Polyvalente VoirRECHERCHE POLYVALENTE Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes. La RechercheV d'origine a beaucoup de limites: La colonne de la donnée doit être avec un offset...
Oracle - Introduction au SGBD Oracle VoirIntroduction au SGBD Oracle Oracle est un SGBD (système de gestion de bases de données) édité par la société du même nom (Oracle Corporation - http://www.oracle.com), leader mondial des bases de données. La société Oracle Corporation a été créée en...

1

othanga, le 12 mai 2009 à 19:31:26

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

Répondre à othanga

2

FMDCC, le 12 mai 2009 à 19:35:24

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.

Répondre à FMDCC

3

othanga, le 12 mai 2009 à 19:41:41

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

Répondre à othanga

4

FMDCC, le 12 mai 2009 à 19:53:22

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.

Répondre à FMDCC

7

othanga, le 12 mai 2009 à 20:06:15

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.

Répondre à othanga

10

FMDCC, le 14 mai 2009 à 19:25:10

Je peux si besoin vous donner mon fichier .mdb ce sera plus simple.

Répondre à FMDCC

11

pebkac, le 15 mai 2009 à 02:41:37

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
?

Répondre à pebkac

12

FMDCC, le 15 mai 2009 à 22:48:58

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

Répondre à FMDCC

13

 othanga, le 19 mai 2009 à 03:19:25

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 ?

Répondre à othanga
Collection CommentÇaMarche.net