Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2011, 14h42   #1
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Par défaut Impossible de trouver l'objet "|"

Bonjouuuuur à tous ! (ça faisait longtemps)

Voilà, j'ai un petit problème niveau code, j'aurais besoin d'avis ou de pistes.
Tout d'abord, je suis sous Access 2003, sous Windows XP, et j'ai une BDD sous SQL Server Management Studio. ça, c'était les informations de base.

Ensuite, ce que je veux faire... Et c'est là que ça se complique

J'ai un formulaire F_Consultation avec plusieurs informations. Ce formulaire prend comme source une table de ma BDD (disons une table TB_Signalements). Ainsi, l'utilisateur de l'application peut lire les informations et les modifier directement. Pour simplifier, nous dirons qu'il y a deux-trois champs (texte) sur ce formulaire :
- ID_Signalement
- Annee_Signalement
- Origine_Signalement

J'ai placé du code sur l'évènement Form_Current() afin de remplir des champs spécifiques. Dans ce code Form_Current, on a donc, grosso modo, ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    Dim strSQL As String
    Dim rst As ADODB.Recordset
 
    strSQL = "SELECT  * FROM TB_Truc INNER JOIN TB_Signalements ON " & _
         "TB_Truc.ID = TB_Signalements.ID_Truc " & _
         "WHERE TB_Signalements.ID_Signalement = '" & Me.Id_Signalement & "'"
 
    Set rst = New ADODB.Recordset
    rst.Open strSQL, CNN_Application, adOpenStatic, adLockReadOnly, adCmdText
 
   /*
   *        
   *Remplissage des champs en fonction du résultat de la requête
   *
   */
Ce code fonctionne parfaitement, aucun pb.
Le pb vient d'un autre formulaire, disons F_Recherches, qui permet d'effectuer des... recherches (original hein ? ). Là, l'utilisateur a accès exactement aux mêmes champs (les trois cités précédemment). Il peut rentrer la valeur qu'il veut et cliquer sur un bouton "Recherche". Le code exécuté permet ensuite de construire un filtre en fonction des champs remplis (par exemple : [Origine_Signalement] = 'Truc' AND [Annee_Signalement] > 2010", ouvre le formulaire F_Consultation et applique le filtre :

Code :
1
2
3
4
5
6
7
8
 
 
    Dim Filtre As String
    Filtre = ConstructionFiltre
    DoCmd.Close acForm, "F_Consultation"
    DoCmd.OpenForm "F_Consultation", acNormal
    Forms.F_Consultation.FilterOn = True
    Forms.F_Consultation.Filter = Filtre
Le problème est là...!
Sur la dernière ligne, le code plante et me dit :
"Erreur 7874 : Impossible de trouver l'objet '|' ."

J'ai mis un point d'arrêt sur cette ligne, et en fait quand on arrive sur Forms.F_Consultation.Filter = Filtre, le code repasse par Form_Current, relance la requête Select, re-remplit tous les champs... et le panneau d'erreur apparaît sur la ligne "End Sub"...
Donc je ne comprends pas d'où vient l'erreur.

A votre disposition pour toute question ! J'attends vos idées/pistes. Et désolé pour le pavé, j'ai fait détaillé en pensant que trop est mieux que trop peu


Edit : Juste pour info, quand je remplace
"Forms.F_Consultation.Filter = Filtre"
par
"Forms.F_Consultation.Filter = "" "
Le message d'erreur n'apparaît plus (filtre à vide => OK).
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 16h38   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 466
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 466
Points : 7 544
Points : 7 544
Eegarde si tu n'as pas une erreur de syntaxe dans ton filtre. Ex : une chaîne de caractère sans caractère de fin de chaîne qui est un grand classique.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 10h39   #3
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
...

Effectivement, simple erreur de ma part. Mon filtre était créé à partir des noms des controles du formulaire (par exemple "[Txt_OrigineSignalement] = 'Truc') au lieu de le créer à partir des noms d'attributs de la BDD (par exemple "[OrigineS] = 'Truc' ").

Bref, sujet résolu. Merci beaucoup d'avoir pris le temps de répondre ! Bon we à tous
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h04.


 
 
 
 
Partenaires

Hébergement Web