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
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
A voir également:
- Access problème code VB "If" résultat re
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
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
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
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
27 juin 2007 à 10:39
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.
27 juin 2007 à 18:08
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
28 juin 2007 à 08:29
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.
28 juin 2007 à 09:45
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