Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et 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.

Réponse
 
Outils de la discussion
Vieux 02/09/2008, 16h35   #1 (permalink)
Invité de passage
 
Date d'inscription: septembre 2008
Messages: 5
Par défaut Problème de formulaire recherche multi-critères

Bonjour,

Je tente de créer un formulaire de recherche multi-critères, je me suis basée sur un exemple et voici les codes :

Code :
Option Compare Database
Private Sub chkRefEntreprise_Click()
 
If Me.chkRefEntreprise Then  Me.txtRechRefEntreprise.Visible = False
Else Me.txtRechRefEntreprise.Visible = True
End If 
RefreshQuery
End Sub
 
Private Sub chkFamilleProduit_Click()
If Me.chkFamilleProduit Then Me.cmbRechFamilleProduit.Visible = False
Else Me.cmbRechFamilleProduit.Visible = True
End If
RefreshQuery
End Sub
 
Private Sub chkRefSAP_Click()
 
If Me.chkRefSAP Then Me.TxtRechRefSAP.Visible = False
Else Me.TxtRechRefSAP.Visible = True
End If
RefreshQuery
End Sub
 
Private Sub chkN°Siret_Click()
If Me.chkN°Siret Then Me.txtRechN°Siret.Visible = False
Else Me.txtRechN°Siret.Visible = True
End If
RefreshQuery
End Sub
 
Private Sub chkRegion_Click()
If Me.chkRegion Then Me.cmbRechRegion.Visible = False
Else Me.cmbRechRegion.Visible = True
End If
RefreshQuery
End Sub
 
Private Sub chkNomEntreprise_Click()
If Me.chkNomEntreprise Then Me.txtRechNomEntreprise.Visible = False
Else Me.txtRechNomEntreprise.Visible = True
End If
RefreshQuery
End Sub
 
Private Sub chkDepartement_Click()
If Me.chkDepartement Then Me.txtRechDepartement.Visible = False
Else Me.txtRechDepartement.Visible = True
End If
RefreshQuery
End Sub
Private Sub cmbRechFamilleProduit_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
 
Private Sub cmbRechRegion_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
 
Private Sub Détail_Click()
 
End Sub
 
Private Sub Form_Load()
 
Dim ctl As Control
 
For Each ctl In Me.Controls
    Select Case Left(ctl.Name, 3)
        Case "chk"
            ctl.Value = -1
        
        Case "lbl"
            ctl.Caption = "- * - * -"
 
        Case "txt"
            ctl.Visible = False
            ctl.Value = ""
        
        Case "cmb"
            ctl.Visible = False
            
    End Select
Next ctl
 
Me.lstResults.RowSource = "SELECT [Réf Entreprise], [Réf Entreprise], [Réf SAP], Nom, [N°Siret], Département, Région, [Famille de produit], Type FROM Identité;"
Me.lstResults.Requery
 
End Sub
 
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
 
SQL = "SELECT [Réf Entreprise], [Réf Entreprise], [Réf SAP], Nom, [N°Siret], Département, Région, [Famille de produit], Type FROM Identité Where Identité![Réf Entreprise] <> 0 "
 
If Not Me.chkRefEntreprise Then
    SQL = SQL & "And Identité![Réf Entreprise] like '*" & Me.txtRechRefEntreprise & "*' "
End If
If Not Me.chkFamilleProduit Then
    SQL = SQL & "And Identité![Famille de produit] = '" & Me.cmbRechFamilleProduit & "' "
End If
If Not Me.chkRefSAP Then
    SQL = SQL & "And Identité![Réf SAP] like '*" & Me.TxtRechRefSAP & "*' "
End If
If Not Me.chkN°Siret Then
    SQL = SQL & "And Identité!N°Siret like '*" & Me.txtRechN°Siret & "*' "
End If
If Not Me.chkRegion Then
    SQL = SQL & "And Identité!Région = '" & Me.cmbRechRegion & "' "
End If
If Not Me.chkNomEntreprise Then
    SQL = SQL & "And Identité!Nom like '*" & Me.txtRechNomEntreprise & "*' "
End If
If Not Me.chkDepartement Then
    SQL = SQL & "And Identité!Département like '*" & Me.txtRechDepartement & "*' "
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
 
SQL = SQL & ";"
Me.lblStats.Caption = CStr(DCount("*", "Identité", SQLWhere) & " / " & DCount("*", "Identité"))
Me.lstResults.RowSource = SQL
Me.lstResults.Requery
End Sub
 
 
Private Sub lstResults_BeforeUpdate(Cancel As Integer)
End Sub
 
Private Sub lstResults_DblClick(Cancel As Integer)
 
DoCmd.OpenForm "frmAutoIdentité", acNormal, , "[Réf Entreprise] = " & Me.lstResults
End Sub
 
Private Sub txtRechRefEntreprise_BeforeUpdate(Cancel As Integer)
 
RefreshQuery
End Sub
 
Private Sub txtRechRefSAP_BeforeUpdate(Cancel As Integer)
 
RefreshQuery
End Sub
 
Private Sub txtRechNomEntreprise_BeforeUpdate(Cancel As Integer)
 
RefreshQuery
End Sub
 
Private Sub txtRechN°Siret_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
 
Private Sub txtRechDepartement_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
 
A chaque fois que je désire ouvrir un champs ou le formulaire, une fenêtre demandant :"Entrer la valeur du paramètre. Type :...."
Comment faire disparaître cette fenêtre?

Lorsque je retire cette fenêtre le message d'erreur 3075 apparaît. Je ne comprends pas ou sont mes erreurs de syntaxe.

Je vous remercie par avance !!!!

Dernière modification par Philippe JOCHMANS ; 03/09/2008 à 07h03 Motif: Ajout des balises codes (sélection du code + #), ce n'est pas facultatif
CTRUX est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 16h45   #2 (permalink)
Invité régulier
 
Date d'inscription: mai 2004
Âge: 23
Messages: 10
Par défaut

Citation:
Me.lstResults.RowSource = "SELECT [Réf Entreprise], [Réf Entreprise], [Réf SAP], Nom, [N°Siret], Département, Région, [Famille de produit], Type FROM Identité;"
Est-ce normal que tu es deux fois le champ Réf Entreprise dans ta requête?
Ronaldinho est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 16h50   #3 (permalink)
Invité de passage
 
Date d'inscription: septembre 2008
Messages: 5
Par défaut Réponse

Réf Entreprise est la clé de la table Identité.
En meme temps Réf Entreprise est un champs que j'aimerai utiliser pour un critère de recherche.
CTRUX est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 17h06   #4 (permalink)
Invité régulier
 
Date d'inscription: mai 2004
Âge: 23
Messages: 10
Par défaut

J'avais déjà eu une erreur comme ça et cela venait juste de la syntaxe de ma requête.
Essaie de lancer ton formulaire avec des points d'arrêts pour vérifier ta requête à chaque étape car vu l'erreur cela viendrait de l'execution de ta requête.
Ronaldinho est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 21h16   #5 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 426
Par défaut

Bonjour,

Tu n'as pas une erreur de syntaxe mais plutôt une erreur de champ.
Le champ "Type" n'est tout simplement pas trouvé par le SELECT dans ta table "Identité".
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 10h12   #6 (permalink)
Invité de passage
 
Date d'inscription: septembre 2008
Messages: 5
Par défaut

Je ne comprends pas ce que tu veux dire, je n'ai pas de champs Type dans ma table.
Le messagebox :"Entrer la valeur du paramètre" s'affiche pour tous les champs.
CTRUX est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 13h25   #7 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 426
Par défaut

Dans ce cas il se peut que ce ne soit pas la bonne table...
Vérifie, s'il te plait.
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 16h44   #8 (permalink)
Invité de passage
 
Date d'inscription: septembre 2008
Messages: 5
Par défaut

Il n'y a plus le message d'erreur qui apparait, en effet le champs "Type" était en trop dans :

Me.lstResults.RowSource = "SELECT [Réf Entreprise], [Réf Entreprise], [Réf SAP], Nom, [N°Siret], Département, Région, [Famille de produit], FROM Identité;"

Pourtant il persiste des erreurs d'écriture car le message d'erreur 3075 apparait : erreur de syntaxe.
CTRUX est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 17h32   #9 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 426
Par défaut

Fait un debug.print de ton select
Code :
debug.print SQL
, donne nous le résultat ainsi que la nature des champs que tu interroges (numérique, texte, etc).
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide