[access] qui est ce qui s'y connait??
RésoluMerci de me répondre
Configuration: Windows XP Safari 525.19
33 réponses
Filtrer et tout sélectionner via une requête sur une même table constitue la problématique centrale, avec des cas où des valeurs nulles ou vides doivent être traitées pour une récupération complète. Plusieurs répondants évoquent des méthodes variées, allant de l'utilisation du formulaire plutôt que du code VBA, à la modification de la requête R_recherche_total et à la gestion des valeurs NULL ou vides. En cas de doute, les échanges montrent que les solutions dépendent fortement du contexte et que la gestion des valeurs non renseignées influe directement sur le comportement de la requête et l'interaction avec le formulaire.
-
Je vous fait part de la solution que j'ai trouvé pour une sélection d'un nom ou de tout les noms
voici tout d'abord mon code
Private Sub rechercher_Click()
On Error GoTo Err_rechercher_Click
Dim stDocName As String
If (intervenant.Value = "<Tous>") Then
If (ligne.Value = "<Toutes>") Then
If (equipement.Value = "<Tout>") Then
If (ssequipement.Value = "<Tout>") Then
flag = MsgBox("Veuillez ne sélectionner que deux critères de recherche au maximum")
stDocName = "M_ouvrir_recherche_total"
Else
stDocName = "M_recherche_ssequipement"
End If
Else
stDocName = "M_recherche_equipement"
End If
Else
If (equipement.Value = "<Tout>") Then
stDocName = "M_recherche_ligne"
Else
stDocName = "M_recherche_ligne_equipement"
End If
End If
Else
If (ligne.Value = "<Toutes>") Then
If (equipement.Value = "<Tout>") Then
If (ssequipement.Value = "<Tout>") Then
stDocName = "M_recherche_intervenant"
Else
stDocName = "M_recherche_ssequipement_intervenant"
End If
Else
stDocName = "M_recherche_intervenant_equipement"
End If
Else
stDocName = "M_Recherche_total"
End If
End If
DoCmd.RunMacro stDocName
Exit_rechercher_Click:
Exit Sub
Err_rechercher_Click:
MsgBox Err.Description
Resume Exit_rechercher_Click
lorsque je click sur mon bouton recherche je fait différents test en fonction des 8 valeurs différentes que peut prendre mes 4 listes déroulantes
en effet, en fonction de ces valeurs et de conditions requises j'ouvre différente macro qui exécute différentes requêtes paramètré de sélection
si je sélectionne dans une liste "tout" forcément dans ma requête aucune commande sql de sélection ne sera active sur ce paramètre
la requête de sélection se fera sur les valeurs simple sélectionné par l'utilisateur
si vous avez des questions n'hésitez pas à me les poser -
yg_be j'ai besoin ton aide
je remonte le sujet -
Ouin moi tout ce que je veux c'est que ça sélectionne tout les noms quand je click sur tous et un nom precis lorsque je click sur le nom en question
Ouin je suis bloqué dessus depuis une semaine et je suis un paté ça me saoul^^
enfin bref le problème c'est que à travers access les manipulations de formulaire et de sous formulaires liées à des tables des requête et des macros je ne comprend pas tout ce qui se passe, tandis que le code déjà ça me parle plus^^
reprenons tout depuis le début
l'événement est lorsque je click sur un nom ou sur "<<TOUS>>" dans ma liste déroulante
j'insére un code événementielle
ou j'ouvre un sous formulaire que j'ai créer précédement je l'appel sf_recherche_total
ce sous formulaire faute de choix est lié à la table T_intervention (table qui je le rappel contient tout les données servant à faire la recherche) dans mon formulaire F_recherche_total j'ai donc qui s'affiche un sous formulaire qui comprend tout les noms de T_interventions, noms qui sont aussi dans ma liste déroulante
maintenant j'ouvre mon code vba et je met
//variables bouche trou, il me les faut donc je les mets^^
Dim valeur As String
Dim retour As Integer
//pointeur est le nom de ma liste déroulante et je récupère la valeur sélectionné
valeur = pointeur.Value
//je test si j'ai bien récupèré la valeur
retour = MsgBox("le resultat est" & valeur, vbDefaultButton1)
//j'ouvre mon sous formulaire
DoCmd.OpenForm "sf_recherche_total", , , ""
//si la valeur est "<<TOUS>> j'execute mon code
If (valeur = "<<TOUS>>") Then
retour = MsgBox("vous êtes dans le if", vbDefaultButton1)
//j'execute ma requête mais j'ai un message d'erreur
me.formulaire.rowsource="SELECT * FROM [R_effectif]"
Else
retour = MsgBox("vous êtes dans le else", vbDefaultButton1)
End If
-
ContributeurTon but, je pense, c'est que le formulaire fasse la sélection, pas le code VBA.
-
ben ce que je pense c'est que si ma condition est vérifié je fait une sélection de tout les noms je ne crois pas que ce soit plus difficile que ça non?
-
Contributeurutilises les types dao.database et dao.recordset
que veux-tu obtenir avec les recordset ? je pense que c'est une fausse piste, dans ton cas. -
je l'ai associé à la table qui me paraissait donner la meilleur associations de toute façon je n'avais pas le choix c'était la seule table en rapport avec mon problème
je vas essayer de retaper me.
cependant je me penche sur une autre possibilité :
Dim valeur, mysql As String
Dim retour As Integer
Dim dbs As Database
Dim rst As Recordset
valeur = pointeur.Value
retour = MsgBox("le resultat est" & valeur, vbDefaultButton1)
If (valeur = "<<TOUS>>") Then
Set dbs = CurrentDb
mysql = "SELECT * FROM [R_effectif];"
Set rst = dbs.OpenRecordset(mysql)
If rst.RecordCount <> 0 Then
retour = MsgBox("vous êtes dans le 2éme if", vbDefaultButton1)
End If
retour = MsgBox("vous êtes dans le if", vbDefaultButton1)
Else
retour = MsgBox("vous êtes dans le else", vbDefaultButton1)
End If
End Sub
ne fait pas attention au msgbox elle me servent "point d'arrêt"
mais j'ai un problème avec le database il me dis que 'est type non défini par l'utilisateur -
Contributeurl'instruction suivante change le critére de sélection (exprimée comme une requête SQL) associé au formulaire (ou sous formulaire)
me.formulaire.rowsource="SELECT * FROM [R_effectif]"
les instructions suivantes ouvrent le formulaire (ou sous formulaire) en lui donnant un filtre pour limiter les enregistrements à inclure dans le formulaire
DoCmd.OpenForm "formulaire", , , "intervenant = "BLANC Thierry""
ou bien
DoCmd.OpenForm "formulaire", , , ""
Dans ton code, tu as mis le nom du sous formulaire à la place du nom du formulaire ? Quand tu tapes me. dans ton code, est-ce que le formulaire et le sous formulaire apparaissent dans la petite liste qui s'ouvre à ce momemt-là ?
Quand tu a créé ton sous formulaire, tu l'as bien associé à la bonne table ? -
ok ça je l'ai fait et ensuite explique moi ce que ton code fait surtout les deux ligne docmd.formopen et me.formuliare.rowsource je ne les comprend pas et de plus l'aide de mon vba n'est pas garnie
edit je dois faire n'importe quoi la je suis perdu, j'ai créer un sous formulaire en mettant n'importe quoi, et de plus l'erreur se produit toujours je ne comprends pas pourquoi est ce à cause de l'évenement?
je rappel que l'événement est lorsque je click ma liste déroulante -
ContributeurJe pense que F_... c'est un nom de formulaire, pas de requête.
Pour créer un sous formulaire dans un formulaire, tu ouvres le formulaire en mode "design".
Tu as probablement une petite fenetre avec une dizaine de petits boutons. Tu verifies que le bouron "magicien" (en haut à droite) est actif. Tu cliques sur le bouton "sous formulaire". Tu fais un rectangle pour créer le sous formulaire. Le magicien va venir t'aider... -
la colonne de quoi de ma table? de ma requête?
-
tu cliques sur le nom de la collonne et voila !
-
je sais que je dois créer un sous formulaire le problème est que je ne sais pas comment faire c'est bête mais je ne vois pas ce que c'est
-
ah non pas du tout c'est le nom de ma requête... dsl, mais qu'est ce qu'un sous formulaire? le code que tu m'a donnée me permet il de créer ce sous formulaire? cependant l'erreur se produisais déjà alors que j'avais recopier le code complet que tu m'avais envoyé
-
ContributeurF_Recherche_total, c'est bien le nom du sous formulaire qui va contenir le résultat de la sélection ? Ce n'est pas le nom du formulaire principal ?
-
désoler de répondre si tard mais la j'ai finis ma journée de stage donc ...^^
l'erreur se produit sur la ligne
Me.F_Recherche_total.RowSource = "SELECT * FROM [R_effectif]"
et il me surligne l'item F_Recherche_total.RowSource -
ContributeurSur quelle ligne de code se produit l'erreur ?
Laisse l'éditeur de programme ouvert pendant que tu testes, comme cela il te montrera où est l'erreur. -
je viens de saisir une de tes informations crucial je pense le test pour la sélection de tout les noms marche donc si j'ajoute ta commande qui permet de modifier une requête cela pourrait donner:
Dim valeur As String
valeur = pointeur.Value
If (valeur = "<<TOUS>>") Then
Me.F_Recherche_total.RowSource = "SELECT * FROM [R_effectif]"
End If
non?
problème c'est qu'il me met toujours la même erreur comprend pas pourquoi ce formulaire existe -
il me met une erreur :
erreur de compilation :
membre de méthode ou de données introuvable
cela viens t-il du fait que j'exécute le code lorsque je click sur élément de ma zone de liste (=que l'événement se situe au niveau d'un click sur la zone de liste déroulante) ou alors viens t il du fait qu'il souhaite ouvrir un formulaire F_ssrecherche_total qui n'existe pas?^^
j'en peux plus de ce problème je crack c'est horrible depuis mercredi dernier j'ai tout essayé
enfin bon je suis très heureux d'être tomber sur toi yg_be -
attends attends la je n'y suis plus pourrais tu me re-expliqué car je ne comprends pas désoler c'est pas de la mauvaise volonté mais je comprend plus je suis embrouillé
que dois je faire sur le vba ouvrir un sous formulaire ou le créer? qu'est ce qu'un sous formulaire que va t il faire à quoi va t il ressembler et surtout comment (avec la requête de sélection total que tu as mis) va t il agir sur ma requête R_recherche_total?
autant de question que je me pose car je ne comprend pas les tenants et les aboutissants de ta solution
désoler de mon manque d'expérience mais je suis content d'en apprendre autant avec toi
- 1
- 2