Probleme avec un module VBA
Dernière réponse : dans Programmation
Bonjour
Je vien de faire ce programme en VBA sur acces mais il y’a un petit problème.
Est-ce que vous pouvez m’aider à le résoudre ?
Svp j’en ai besoin pour demain
Merci d’avance
Il y’a ce message qui s’affiche :![]()
Voila le programme:
Je vien de faire ce programme en VBA sur acces mais il y’a un petit problème.
Est-ce que vous pouvez m’aider à le résoudre ?
Svp j’en ai besoin pour demain
Merci d’avance
Il y’a ce message qui s’affiche :

Voila le programme:
Sub Mise_a_jour_places_dispo()
Dim nbre_places_max As Integer 'nombre de palces maxi'
Dim nbre_places_disp As Integer 'nombre de places disponibles'
Dim bd As Database
Dim rqpr1 As String
Dim Tabrqpr1 As Recordset
Set bd = CurrentDb()
'mise a jour des places disponibles'
MsgBox ("Saisissez le nombre de places")
nbre_places_disp = InputBox("Combien de places voulez vous ?")
rqpr1 = "SELECT UPDATE SEJOURS.code_sejour, nbre_places_max, nbre_places_disp" & _
"FROM SEJOURS" & _
"ORDER BY nbre_places_disp"
MsgBox rqpr1
Set Tabrqpr1 = bd.OpenRecordset(rqpr1)
nbre_places_disp = nbre_places_max - nbre_places_disp
MsgBox ("Le nombre de place disponible est de" & nbre_places_disp)
End Sub
Autres pages sur : probleme module vba
Lassé par la pub ? Créez un compte
Je suis un peu desordonné, enfin ce programme vba que j'ai fais devra normalement me permettre de mettre à jour le nombre de places disponibles pour chaque séjour en tenant compte des inscriptions effectuées, je ne suis meme pas sure qu'il faut mettre une requette sql dans ce programme la,
svp aidez moi je n'en est besoin pour demain matin. Merci
svp aidez moi je n'en est besoin pour demain matin. Merci
Ligne 15, il y a écrit "SELECT UPDATE ... ORDER BY ...". Je doute fort que ton SGBD puisse comprendre ça.
D'après la suite du code, ceci devrait retourner des valeurs, donc le UPDATE n'a rien à faire là.
Tu parles maintenant de mise à jour... Donc il faudra faire un UPDATE, c'est sûr. Donc le problème est bien SQL, pas VB, CQFD.
D'après la suite du code, ceci devrait retourner des valeurs, donc le UPDATE n'a rien à faire là.
Tu parles maintenant de mise à jour... Donc il faudra faire un UPDATE, c'est sûr. Donc le problème est bien SQL, pas VB, CQFD.
Sub Mise_a_jour_places_dispo()
Dim nbre_places_max As Integer 'nombre de palces maxi'
Dim nbre_places_disp As Integer 'nombre de places disponibles'
Dim bd As Database
Dim rqpr1 As String
Dim Tabrqpr1 As DAO.Recordset
nbre_places_disp = InputBox("Combien de places voulez vous ?" )
rqpr1 = "SELECT SEJOURS.code_sejour, nbre_places_max, nbre_places_disp " & _
"FROM SEJOURS " & _
"ORDER BY nbre_places_disp"
Set Tabrqpr1 = currentdb.createQueryDef("",rqpr1).openrecordset(dbopendynaset)
End Sub
Jusque là ca semble correct globalement, attention au espace entre les sauts de ligne sur ta requête.Mais après je ne comprend pas trop. Est ce que ta requête ne renvoie qu'une seule valeur ? Logiquement tu devrais obtenir une liste de séjour avec des places restantes. Donc soit tu veux un total global, soit une liste par ligne, dans ce cas il faut savoir ou tu veux l'afficher.
Mais d'ors et déjà tu auras besoin de ceci concernant les recordsets.
Tabrqpr1.close 'fermeture
Tabrqpr1.movefirst ' placage sur le premier élement
Tabrqpr1.EOF ' Fin du recordset
Tabrqpr1.movenext ' enregistrement suivant
Tabrqpr1.addnew ' Nouveau
Tabrqpr1.edit ' modification enregistrement
Tabrqpr1.update ' Validation modification ou création.
novice_33 a dit :
Est ce que ta requête ne renvoie qu'une seule valeur ?
Oui ma requete renvoie qu'une seule valeur.
la je vien de retravailler tout mon programme , il là l'aire de marcher mais je ne sais pas s'il remplie bien sa fonction qui est de "permettre de mettre à jour le nombre de places disponibles pour chaque séjour en tenant compte des inscriptions effectuées".
voila le pro :
Sub Mise_a_jour_places_disp()
Dim nbre_places_max As Integer 'nombre de palces maxi'
Dim nbre_places_disp As Integer 'nombre de places disponibles'
Dim nbre_insc_effec As Integer 'nombre d'inscription effectuer'
Dim bd As Database
Dim rqpr1 As String
Dim Tabrqpr1 As DAO.Recordset
Dim x As String
'mise a jour des places disponibles'
nbre_places_max = InputBox("Saisissez le nombre de places Maxi")
Do
nbre_insc_effec = InputBox("Combien de places voulez vous ?")
nbre_places_disp = nbre_places_max - nbre_insc_effec
rqpr1 = "SELECT SEJOURS.code_sejour, nbre_places_max, nbre_places_disp " & _
"FROM SEJOURS " & _
"ORDER BY nbre_places_disp"
Set Tabrqpr1 = CurrentDb.CreateQueryDef("", rqpr1).OpenRecordset(dbOpenDynaset)
MsgBox ("Le nombre de place disponible est de " & nbre_places_disp)
nbre_places_max = nbre_places_disp
x = InputBox("Continuer l'operation O/N ?")
Loop While x = "o"
End Sub
Et autre chose dans le programme qu'est ce que font ces choses la , leurs roles dans le programme :
Dim bd As Database
Dim rqpr1 As String
Dim Tabrqpr1 As DAO.Recordset
Et
Set Tabrqpr1 = CurrentDb.CreateQueryDef("", rqpr1).OpenRecordset(dbOpenDynaset)
Merci
Bonjour,
Ce que je ne comprends pas bien dans ton programme, c'est la logique que tu appliques et les messages box.
Donc si je résume tu as une table séjour contenant un code séjour, nbmax place et nb restant place, N'y a t'il pas un table concernant les reservations ou achat de place ?
Enfin pour tes questions.
OpenRecordset permet d'ouvrir un recordset sur une table ou une requête de sélection. Le recordset c'est un peu comme le pointeur (fleche noire) quand tu consultes le contenu de tes tables. Donc ca te permet d'effectuer des traitements sur une table complète.
Dans ton problème il me semble que ca doit servir, puisque une fois que tu as ouvert ce recordset tu devrais parcourir les enregistrements et mettre à jour pour chaque séjour le nombre de places restantes.
Ce que je ne comprends pas bien dans ton programme, c'est la logique que tu appliques et les messages box.
Donc si je résume tu as une table séjour contenant un code séjour, nbmax place et nb restant place, N'y a t'il pas un table concernant les reservations ou achat de place ?
Enfin pour tes questions.
Dim db as database ' inutile ici
Dim rqpr1 As String ' Chaine de caractère pour la constitution de ta requête (supprimable)
Dim Tabrqpr1 As DAO.Recordset ' Recordset consulte aide en ligne.
Set Tabrqpr1 = CurrentDb.CreateQueryDef("", rqpr1).OpenRecordset(dbOpenDynaset)
OpenRecordset permet d'ouvrir un recordset sur une table ou une requête de sélection. Le recordset c'est un peu comme le pointeur (fleche noire) quand tu consultes le contenu de tes tables. Donc ca te permet d'effectuer des traitements sur une table complète.
Dans ton problème il me semble que ca doit servir, puisque une fois que tu as ouvert ce recordset tu devrais parcourir les enregistrements et mettre à jour pour chaque séjour le nombre de places restantes.
novice_33 a dit :
Bonjour,Donc si je résume tu as une table séjour contenant un code séjour, nbmax place et nb restant place, N'y a t'il pas un table concernant les reservations ou achat de place ?
voila le model relationnel de la table SEJOURS :
SEJOURS (code_séjour, date début, date fin, prix du séjour, nombre de places maxi, nombre de place disponibles, code lieu)
Clé primaire : code_séjour
Clé étrangère : code lieu en référence à code lieu de la relation LIEUX
et il n'y a aucune table concernant les reservations ou achat de place
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumProbleme pastespecial vba
- ForumProbleme vba vista
- ForumVba copier module
- ForumProbleme de demarrage du module nvidia
- ForumProbleme avec php photo module
- benchmarkProbleme au chargement du module nvidia
- ForumProbleme creation module importation
- ForumModule introuvable vba
- ForumModule switch probleme
- ForumVba impossible de compiler le module
- Voir plus
et qu'il utilisera un vrai SGBD, il faudra qu'il utilise des CURSORs, alors autant être précis )
Quelle mauvaise foi !?