ACCESS demander un nombre de boucle?

Résolu/Fermé
doogybreton Messages postés 5 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008 - 22 janv. 2008 à 23:39
doogybreton Messages postés 5 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008 - 23 janv. 2008 à 17:32
Bonjour,


...je souhaiterai maintenant effectuer un formulaire de filtrage sur plusieur critère mais la le nombre de critère dois pouvoir changer a chaque fois...(si l'utilisateur veut filtrer sur 2 ou 10 critères?)

je m'explique voila j'ai une reqtout avec 118 champs de notations, (champ1, champ2, champ3...etc) ca fait bcp je c
apres je creer un formulaire qui sappel frmcritere
sur la meme ligne de mon formularie j'ai creer:
une comboBox source: cmbreqTOUT
type: liste de champs (donc ici je choisi le champs de ma requete sur lequel je souhaite filtrer)
j'ai une seconde combobox a coter appeler cmbsigne : liste valeur "=", ">", "<", "<>"
puis a coter une zone de texte txtvaleur : ou c vide et l'utilisateur entre la valeur qui lui conviendra...
donc l'utilisateur selectionne sont champs a filtrer puis selectionne le signe egale ou sup..et enfin entre la valeur sur lequel filtrer

Si maintenant mon utilisateur souhaite filtrer sur plusieurs critères. en meme temps
j'ai creer 10 autres lignes comme celle o dessus ce qui laisse la possibilite a l'utilsateur de filtrer sur 10 champs différents o max

Mais la dessus j'ai 1 souci:

1/ si l'utilisateur souhaite ne comparer que 5 critères, il faut pouvoir dire a mon code ne pas prendre encore les 5 autres box de critères ou il n'a rien saisi..comment faire ?

SINON et c la que j'attire votre attention, ce qui serait le mieux c avoir que la premiere ligne avec ma combox de liste de champs, ma combox de signe et ma zone texte de valeur...j'avais pensé a une mise en boucle..ou on demande a l'utilisateur sur combien de critère veut il filtrer si 11 : il lance 11 boucle et on pe y saisir nos 11 lignes...un truc ds le genre

est ce possible? et bien evidement comment faire?
NB mon vba reste débutant mais si on me décrit un peu je comprend c deja ca^o^

voici une image de mon formulaire pour un bref apercu du truc sans le loop
http://img153.imageshack.us/img153/1694/formulairesl1.jpg

6 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
23 janv. 2008 à 16:51
Mysql = "select * from mytable"
SQLwhere = ""

Dim i As Integer, nbcomp As Integer
--------------------------------------------
' jusque là tutto bene mais la suivante est inutile
--------------------------------------------
'nbcomp = InputBox("combien de comparaison souhaitez vous effectuer?", "COMPARAISON")
--------------------------------------------
nbcomb ==> nombre de champs presents pour filtrer (champ1 à champ10 ==> nbcomp = 10)
--------------------------------------------
for i = 1 to nbcomp
' c cette partie qui me pose souci merci!!!!!!
--------------------------------------------
'if len(champ1), c'est un raccourci pour if len(champ1) > 0 ou bien if champ1 <> ""
--------------------------------------------
if len(champ1) Then where = where & " " & myAND_ORCombo & " " & col1 " & myComparisonCombo & " '" & champ1 & "' "
if len(champ2) Then where = where & " " & myAND_ORCombo & " " & col2 " & myComparisonCombo & " '" & champ2 & "' "
--------------------------------------------
' malheureusement à cause de col1, col2 etc on ne peut pas boucler
' en tout cas j'espère que dans la bdd t'utilises quand-même des noms du genre FirstName, LastName, City etc...
' p.ex. if champ1 <> "" Then where = where & " " & "AND" & col1 " & " = " & " '" & champ1 & "' "
' myAND_ORCombo list qui contien les strings "AND", "OR", "LIKE"
' myComparisonCombo liste qui contient des strings "=", "<", ">", ...
--------------------------------------------
...
next
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 janv. 2008 à 01:07
Bonjour,

Tu peux faire une fonction qui va construire ta requête soit en passant les paramètres en "Optionale" soit en testant tous les champs de ton formulaire ...

;o)

Polux
0
doogybreton Messages postés 5 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 14:27
vi ca je lai fais pour un formulaire de recherche de base
mais en fait la ou et le pb dans celui ci c que je ne sais pas a lavance le nombre de critère que l'utilisateur souhaite comparer ...
sur mon formulaire j'en ai fais 10 mais peut voudra il en comparer 20 donc comment faire?
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
23 janv. 2008 à 16:29
sql = "SELECT * FROM MyTable "
where = ""

for i = 1 to NumberOfCriteria
if len(champ1) Then where = where & " " & myAND_ORCombo & " " & col1 " & myComparisonCombo & " '" & champ1 & "' "
if len(champ2) Then where = where & " " & myAND_ORCombo & " " & col2 " & myComparisonCombo & " '" & champ2 & "' "
...
next

if len(where) then where = "WHERE " & mid(where, 4, len(where))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
doogybreton Messages postés 5 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 16:38
ouah euh pourrai tu me l'expliquer un peu sil te plait!!^^" jai un pe de mal a le suivre pour l'adapter a mon projet
Mysql = "select * from mytable"
SQLwhere = ""

Dim i As Integer, nbcomp As Integer
nbcomp = InputBox("combien de comparaison souhaitez vous effectuer?", "COMPARAISON")

for i = 1 to nbcomp
' c cette partie qui me pose souci merci!!!!!!
if len(champ1) Then where = where & " " & myAND_ORCombo & " " & col1 " & myComparisonCombo & " '" & champ1 & "' " 
if len(champ2) Then where = where & " " & myAND_ORCombo & " " & col2 " & myComparisonCombo & " '" & champ2 & "' " 
... 
next 

0
doogybreton Messages postés 5 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 17:32
ok je vois ca merci
0