Access problème code VB "If" résultat re

Fermé
ewan_joey Messages postés 4 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 28 juin 2007 - 22 juin 2007 à 10:47
Sergio63 Messages postés 53 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 9 juin 2011 - 28 juin 2007 à 09:45
Bonjour, j'ai un problème dans Access 2002 SP3 sous XP. J'ai besoin d'aide pour écrire le code VB associé à la demande ci-après :

En cliquant sur 1 bouton appellé Commande4 dans un formulaire, je veux :

- que la macro1 s'exécute (cette macro1 fait tourner une requête1 de sélection, puis une requête2 qui compte le nombre de flag trouvé dans la requête1)

- ensuite que "If" le résultat de la requête2 est plus petit que 7 "Then" il exécute la macro2, "Else" message d'erreur style Attention c'est plus grand que 7.

C'est assez clair pour moi ce que je dois faire, par contre je ne sais pas écrire du code qui test le résultat de la requête. Bref...A tâton c'est un peu long. Donc merci de votre aide. Mon patron est sur mon dos !

Private Sub Commande4_Click()
HELP HELP HELP
End Sub
A voir également:

1 réponse

Sergio63 Messages postés 53 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 9 juin 2011 24
26 juin 2007 à 17:34
Bonjour,

Je te propose une solution qui utilise DAO. Personnellement je procède de cette façon mais il y a surement d'autres méthodes.

1) Définir des variables objet pour la base de données et un recordset ...
Dim VO_Base as database
Dim VO_Liste as recordset

... Initialiser la variable Base de données
Set VO_Base = codedb

2) Définir une variable texte qui contiendra le code SQL de la requête ...
Dim V_Requete as string
... Initialiser la variable
V_Requete = "Select ..... from ..... where ..."

3) Initialiser le recordset avec le résultat de la requête
Set VO_Liste= Vo_Base.Openrecordset(V_Requete)

4) Tester le nombre d'enregistrements contenus dans le recordset
If Vo_Liste.recordcount < 7 then
Macro2
Else
Msgbox("Attention c'est plus grand que 7")
Endif


Cordialement

Sergio
0
ewan_joey Messages postés 4 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 28 juin 2007
27 juin 2007 à 10:39
Bonjour Sergio,
Tout d'abord, merci de m'aider à me sortir de cette merde. Sur tous les autres forums on me propose de me démerder tout seul...Bref. Je dois présenter ma base et il y a encore une erreur. Voici où j'en suis (pour info j'ai une table Personnes (nom, prénom, Selecteur1). Selecteur1 fait oui/non quand on le coche ou non. Dans un formulaire, j'ai fait un sous-formulaire de type Formulaires continus avec la table Personnes. Et le personnel de mon bureau flag le Selecteur1 quand ils sont dans la base. Mais je veux que la Macro tourne uniquement s'il n'y a qu'un seul Selecteur1 allumé) :

Private Sub Commande4_Click()
On Error GoTo Err_Commande4_Click

Dim VO_Base As Database
Dim VO_Liste As Recordset

Set VO_Base = CodeDb

Dim V_Requete As String

V_Requete = "SELECT * FROM Personnes WHERE ([Selecteur1] = Oui)"

Set VO_Liste = VO_Base.OpenRecordset(V_Requete)

If VO_Liste.RecordCount < 2 Then

Dim stDocName As String

stDocName = "Macro"
DoCmd.RunMacro stDocName

Else
MsgBox "Attention vous n'êtes pas seul dans la base. Recommencez plus tard !", vbExclamation, ATTENTION
End If

Exit_Commande4_Click:
Exit Sub

Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click

End Sub

Et voici le message d'erreur : "Trop peu de paramètres. 1 attendu".

Si vous avez encore le courrage d'essayer de décortiquer ce code...je vous en serais très reconnaissant.
0
Sergio63 Messages postés 53 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 9 juin 2011 24
27 juin 2007 à 18:08
Bonjour,

Je ne peux malheureusement pas reconstituer le contexte sur mon PC, il faudrait me dire quelle est la ligne de code qui génère cette erreur.

Sergio
0
ewan_joey Messages postés 4 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 28 juin 2007 > Sergio63 Messages postés 53 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 9 juin 2011
28 juin 2007 à 08:29
Ben, j'ai juste l'erreur quand je clique la commande4. Ca ne pointe pas vers une ligne de code; ça ne fesait pas démarrer le débogueur.

Mais maintenant. j'ai enlevé la 2ème ligne : On Error Goto... Et maintenant, l'erreur pointe sur la ligne qui commance par Set VO_Liste.

Private Sub Commande4_Click()

Forms!Table_des_heures!Texte20 = Calendar7.Value
Forms!Table_des_heures!Date_provisoire = Texte20

Dim VO_Base As Database
Dim VO_Liste As Recordset

Set VO_Base = CodeDb

Dim V_Requete As String

V_Requete = "SELECT * FROM Personnes WHERE ([Selecteur1] = Oui)"

Set VO_Liste = VO_Base.OpenRecordset(V_Requete)

If VO_Liste.RecordCount < 2 Then

Dim stDocName As String

stDocName = "Macro"
DoCmd.RunMacro stDocName

Else
MsgBox "Attention vous n'êtes pas seul dans la base. Recommencez plus tard !", vbExclamation, ATTENTION
End If

Exit_Commande4_Click:
Exit Sub


End Sub

Mais je ne vais pas vous embêter plus longtemps. Si vous ne voyez pas le problème, laisser tomber.
Merci.
0
Sergio63 Messages postés 53 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 9 juin 2011 24 > ewan_joey Messages postés 4 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 28 juin 2007
28 juin 2007 à 09:45
Bonjour,

L'erreur vient du code SQL.

La clause "where" porte sur un champ de type texte, il faut donc encadrer la valeur avec des quotes, essaie comme ça :

V_Requete = "SELECT * FROM Personnes WHERE ([Selecteur1] = 'Oui')"

Ca devrait marcher.

Cordialement

Sergio
0

Discussions similaires