Multi-recherche

L

Lou

Bonjour,
Dieu merci il y a ce forum!! Est-ce que quelqu'un aurait la gentillesse de
regarder au code suivant?
J'ai téléchargé un exemple de formulaire multi-recherche et j'ai essayé de
l'adapter à ma table. Le problème est que je reçois l'erreur suivante et je
ne trouve pas l'erreur.

Le nom de ma table est "TableMatiere"
Mes champs sont : No_ecole, nom, prenom, matiere, NoEmploy, Diplome, Majeur,
Mineur, EcoleBase.

Dans mon formulaire il y a 3 cases à cocher pour activer les critères de
recherches. Donc si je coche la première case, la liste déroulante
"No_école" est affichée et je peux sélectionner un numéro d'école. Dans ma
zone de liste je reçoit toutes les écoles avec ce numéro. Par la suite je
coche la case "Majeur" et dans ma zone de liste un autre tri s'applique selon
la majeur que j'ai sélectionnée et la même chose pour un troisième critère
qui est "Mineur". Deplus, il y a un compte des enregistrements qui s'affiche
ex : 33/128.

Dès que je coche ma première case voici le message d'erreur que je reçois :
Erreur d'exécution 2428
Vous avez entré un argument non valide dans une fonction de domaine.

Merci beaucoup pour votre aide!!

Voici le code :

Option Compare Database
Private Sub ChkNo_ecole_Click()
If Me.ChkNo_ecole Then
Me.CmbNo_ecole.Visible = False
Else
Me.CmbNo_ecole.Visible = True
End If
RefreshQuery
End Sub

Private Sub chkMajeur_Click()
If Me.ChkMajeur Then
Me.CmbMajeur.Visible = False
Else
Me.CmbMajeur.Visible = True
End If
RefreshQuery
End Sub

Private Sub chkMineur_Click()
If Me.ChkMineur Then
Me.CmbMineur.Visible = False
Else
Me.CmbMineur.Visible = True
End If
RefreshQuery
End Sub

Private Sub CmbMajeur_BeforeUpdate(Cancel As Integer)
RefreshQuery
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 No_ecole, Nom, Prenom, Matiere, NoEmploy,
Diplome, Majeur, Mineur, EcoleBase FROM TableMatiere;"
Me.lstResults.Requery
End Sub

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT No_ecole, Nom, Prenom, Matiere, NoEmploy, Diplome, Majeur,
Mineur, FROM TableMatiere Where TableMatiere!No_Ecole<>0"
If Not Me.ChkNo_ecole Then
SQL = SQL & "And TableMatiere!No_Ecole = '" & Me.CmbNo_ecole & "' "
End If
If Not Me.ChkMajeur Then
SQL = SQL & "And Tablematiere!Majeur = '" & Me.CmbMajeur & "' "
End If
If Not Me.ChkMineur Then
SQL = SQL & "And TableMatiere!Mineur = '" & Me.CmbMineur & "' "
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))
SQL = SQL & ";"
Me.lblStats.Caption = DCount(Nom, "TableMatiere", SQLWhere) & " / " &
DCount(Nom, "TableMatiere")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery
End Sub

Private Sub CmbNo_ecole_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub

Private Sub CmbMineur_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
 
B

Bob Quintal

RefreshQuery

vous aurez bien meillieure chance en acheminant votre demande d'aide
â la version française de cette liste.

Un problème

SQL = "SELECT No_ecole, Nom, Prenom, Matiere, NoEmploy, Diplome,
Majeur,
Mineur, FROM TableMatiere Where TableMatiere!No_Ecole<>0"
Il manque un espace apres le zéro, ou au début de la section
suivante.
SQL = SQL & "And TableMatiere!No_Ecole = '" & Me.CmbNo_ecole & "' "

Résultat:
No_Ecole<>0And TableMatiere
Vous voulez plutot
No_Ecole<>0 And TableMatiere



Je crois que les deux routines

Private Sub CmbNo_ecole_BeforeUpdate(Cancel As Integer)
Private Sub CmbMineur_BeforeUpdate(Cancel As Integer)

sont inutiles et peuvent vous causer une partie de vos problèmes.

Autre chose
 
L

Lou

Merci énormément pour votre réponse Monsieur Quintal. Je vais essayé vos
correction et j'espère que ça va régler mon problème. La raison pour
laquelle j'ai envoyé ma question dans votres section est que depuis quelques
jours je ne peux plus envoyer de questions à la section française. Dès que
j'entre mon mot de passe il me ramenne à la page de forum sans m'afficher la
fenêtre de message. J'ai aussi essayé d'envoyer un message à l'aide de
"Contactez-nous" pour vérifier si c'était un problème du site mais encore là
je n'obtient pas la fenêtre de message. Est-ce que vous êtes au courant si
la section française à des problèmes techniques?

Merci grandement pour votre précieux temps.
 
B

Bob Quintal

Merci énormément pour votre réponse Monsieur Quintal. Je vais
essayé vos correction et j'espère que ça va régler mon
problème. La raison pour laquelle j'ai envoyé ma question dans
votres section est que depuis quelques jours je ne peux plus
envoyer de questions à la section française. Dès que j'entre
mon mot de passe il me ramenne à la page de forum sans m'afficher
la fenêtre de message. J'ai aussi essayé d'envoyer un message
à l'aide de "Contactez-nous" pour vérifier si c'était un
problème du site mais encore là je n'obtient pas la fenêtre de
message. Est-ce que vous êtes au courant si la section
française à des problèmes techniques?

Merci grandement pour votre précieux temps.
Je n'ai aucunne information sur la version française, sauf qu'elle
existe.

Bob Quintal said:
vous aurez bien meillieure chance en acheminant votre demande
d'aide â la version française de cette liste.

Un problème

SQL = "SELECT No_ecole, Nom, Prenom, Matiere, NoEmploy, Diplome,
Majeur,
Mineur, FROM TableMatiere Where TableMatiere!No_Ecole<>0"
Il manque un espace apres le zéro, ou au début de la section
suivante.
SQL = SQL & "And TableMatiere!No_Ecole = '" & Me.CmbNo_ecole & "'
"

Résultat:
No_Ecole<>0And TableMatiere
Vous voulez plutot
No_Ecole<>0 And TableMatiere



Je crois que les deux routines

Private Sub CmbNo_ecole_BeforeUpdate(Cancel As Integer)
Private Sub CmbMineur_BeforeUpdate(Cancel As Integer)

sont inutiles et peuvent vous causer une partie de vos
problèmes.

Autre chose
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top