Recherche avancé dans Access par VB 2

Fermé
Franck0 Messages postés 1 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 17 janvier 2005 - 17 janv. 2005 à 03:18
 carnez jean-luc - 17 janv. 2005 à 17:09
C'est le même message c'est seulement que je me suit inscrit comme membre.

Salut,

J'ai besoin d'aide avec ma BD. J'ai un formulaire qui fait la recherche par critère dans ma BD. Je ne sais pas comment faire pour que me recherche soit performante.

Par exemple :

Dans ma BD il y a comme information un champ "région", ce champ est pour mettre les régions où les gens sont intéressés de travailler. Je peux y mettre plusieurs régions comme "Montréal, Laval, Laurentide"

J'ai un formulaire qui fait la recherche par critère. Si je veux trouver les gens qui veulent travailler à Laval, il ne me donne pas ceux qui ont plusieurs régions. Je ne sais pas comment faire la recherche s'il y a plusieurs régions dans mon champs.

Si vous pouvez m'aider, ce serait très apprécié.

Voici mon code dans VB :

Sub Rech_Click()

Dim DB As Database
Dim Table As Recordset
Dim Temp, Temp1, Temp2, Filtre As String
Dim Longueur

Set DB = CurrentDb
Set Table = DB.OpenRecordset("Mutation", dbOpenSnapshot)

Table.MoveFirst
Temp = ""
Temp1 = ""
Temp2 = ""

Do
If Me![Région] <> "" And Me![Région] <= Table![Région] Then
Longueur = Len(Me![Région])
Temp = Mid(Me![Région], 1, Longueur)
Temp1 = "Région like'" & Temp & "'"
End If

If Temp1 <> "" Then
If Me![Classeemploi] <> "" And Me![Classeemploi] = Table![Classeemploi] Then
Temp2 = " AND Classeemploi like '" & Me![Classeemploi] & "'"
Exit Do
End If
Else
If Me![Classeemploi] <> "" And Me![Classeemploi] = Table![Classeemploi] Then
Temp2 = "Classeemploi like '" & Me![Classeemploi] & "'"
Exit Do
End If
End If

Table.MoveNext
If Table.EOF = True Then
Exit Do
End If
If Temp1 = "" Or Temp2 = "" Then
Exit Do
End If

Loop

If Temp1 <> "" Or Temp2 <> "" Then
Filtre = Temp1 & Temp2
DoCmd.Close acForm, "Rechercheadm", acSaveNo
DoCmd.OpenReport "Impression", acViewPreview, , Filtre
Else
DoCmd.OpenForm ("Message")
End If
Table.Close
Set DB = Nothing
End Sub
A voir également:

1 réponse

carnez jean-luc
17 janv. 2005 à 17:09
Bonjour,

il me semble que ton analyse initiale de ta base de donnée est incomplète.
Ta base n'est pas Meurisienne.

Pour le même individu, tu dois avoir autant d'enregistrements dans ta table que tu as de régions de configurées, et non pas un seul enregistrement avec une série de valeur significatives (tes régions) à la queue leu-leu dans un seul champ !!!

l'unicité de ta clef, ce n'est pas l'individu, mais le couple individu-région.

de la sorte, une simple sélection sur égalité d'individu et de région et le tour est joué.

Bien souvent, quand on ne s'en sort pas, c'est que les tables sont mal fichues; revenir à une définition selon Meurise est alors la bonne solution.

bon courage
0