Discussion:
Recherche multicritère
(trop ancien pour répondre)
Windevboy
2019-11-18 08:15:43 UTC
Permalink
Bonjour,

J'aimerai faire une recherche multicritère sur une table avec 3 combo donc j
devrai utiliser 3 requête différente pour que toutes les combinaisons soi
possible? Si je veux utiliser simplement les données du combo 2 ou 3 san
remplir les autres c'est possible? Avez vous des exemples?

Merci de l'aide
Romain PETIT
2019-11-18 12:31:22 UTC
Permalink
Post by Windevboy
Bonjour,
Bonjour,
Post by Windevboy
J'aimerai faire une recherche multicritère sur une table avec 3 combo donc je
devrai utiliser 3 requête différente pour que toutes les combinaisons soit
possible? Si je veux utiliser simplement les données du combo 2 ou 3 sans
remplir les autres c'est possible? Avez vous des exemples?
Merci de l'aide
J'imagine que tu as lié des requetes intégrées à ta table ?
A moins avis le plus simple :
- supprimer les requetes liées
- décrire une requete dans une procédure (code SQL, HexecuterequeteSQL
puis parcours de la requete pour afficher la table)
Tu pourras alors construit le code SQL en fonction des combos
sélectionnées et/ou celles sans sélection

A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
windevboy
2019-11-18 12:55:02 UTC
Permalink
Post by Windevboy
Bonjour,
J'aimerai faire une recherche multicritère sur une table avec 3 combo
donc je devrai utiliser 3 requête différente pour que toutes les
combinaisons soit possible? Si je veux utiliser simplement les données
du combo 2 ou 3 sans remplir les autres c'est possible? Avez vous des
exemples?
Merci de l'aide
Merci de ta réponse Romain.

En fait c'est une liste de document qui affiche tous les documents présent dan
la base grâce à une requête.
Sur toute cette liste je voulais pouvoir les filtrer selon les 3 combo qu
j'utilise en recherche (Marque du produit, Modèle du produit et produit) dans l
but d'afficher les documents selon la recherche que je veux.

Par exemple les documents selon la marque du produit simplement ou simplemen
d'un modèle.
Un autre exemple, la liste des documents présent pour la marque + le modèle d'u
produit.

J'arrive à avoir des résultats si j'en utilise un simplement mais j'ai du ma
quand je dois associer plusieurs combo ou qu'un combo est vide.

Merci pour ta réponse en tout cas
Romain PETIT
2019-11-18 13:50:44 UTC
Permalink
J'arrive à avoir des résultats si j'en utilise un simplement mais j'ai du mal
quand je dois associer plusieurs combo ou qu'un combo est vide.
C'est pas bien compliqué, il suffit d'ajouter un filtre/condition et de
gérer les AND

Par exemple :

sCodeSQL est une chaine
sCodeSQLCondition est une chaine
sCodeSQL = "SELECT * FROM MONFICHIER"+rc

SI combo1>0 ALORS
sCodeSQLCondition = "WHERE MONFICHIER.RUB1 = "+combo1..valeur
FIN
SI combo2>0 ALORS
SI sCodeSQLCondition~="" ALORS
sCodeSQLCondition+="WHERE "
SINON
sCodeSQLCondition+=" AND "
FIN
sCodeSQLCondition+=" MONFICHIER.RUB2 = "+combo2..valeur
FIN
SI combo3>0 ALORS
SI sCodeSQLCondition~="" ALORS
sCodeSQLCondition+="WHERE "
SINON
sCodeSQLCondition+=" AND "
FIN
sCodeSQLCondition+=" MONFICHIER.RUB3 = "+combo3..valeur
FIN

A améliorer en factorisant un peu tout ça dans une procédure interne ou
locale mais ça pourrrait être quelque chose dans le genre...

A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Raminagrobis
2019-11-18 21:45:59 UTC
Permalink
Post by Romain PETIT
J'arrive à avoir des résultats si j'en utilise un simplement mais j'ai du mal
sCodeSQL est une chaine
sCodeSQLCondition est une chaine
sCodeSQL = "SELECT * FROM MONFICHIER"+rc
SI combo1>0 ALORS
sCodeSQLCondition = "WHERE MONFICHIER.RUB1 = "+combo1..valeur
FIN
Tu as lu la doc de Windev depuis la version 5?
windevboy
2019-11-18 13:15:36 UTC
Permalink
Post by Windevboy
Bonjour,
J'aimerai faire une recherche multicritère sur une table avec 3 combo
donc je devrai utiliser 3 requête différente pour que toutes les
combinaisons soit possible? Si je veux utiliser simplement les données
du combo 2 ou 3 sans remplir les autres c'est possible? Avez vous des
exemples?
Merci de l'aide
Je vais tester avec une requête SQL en intégrant les 3 combo dans la requêt
avec le Null de coché si un combo est vide
windevboy
2019-11-18 14:49:49 UTC
Permalink
Post by Windevboy
Bonjour,
J'aimerai faire une recherche multicritère sur une table avec 3 combo
donc je devrai utiliser 3 requête différente pour que toutes les
combinaisons soit possible? Si je veux utiliser simplement les données
du combo 2 ou 3 sans remplir les autres c'est possible? Avez vous des
exemples?
Merci de l'aide
Merci pour ta réponse ça m'aide bien. Je vais tester tout ça.

Merci de ton aide
Raminagrobis
2019-11-18 21:47:20 UTC
Permalink
Post by Windevboy
Bonjour,
J'aimerai faire une recherche multicritère sur une table avec 3 combo donc je
devrai utiliser 3 requête différente pour que toutes les combinaisons soit
possible? Si je veux utiliser simplement les données du combo 2 ou 3 sans
remplir les autres c'est possible? Avez vous des exemples?
Merci de l'aide
Regarde la doc sur les requêtes et leurs paramètres....
Une requête paramétrée dont le paramètre n'est pas passé est
automatiquement contruite pour ignorer les paramètres.

Sinon tu peux faire comme Romain, on faisait ça il y a 15 ans
Romain PETIT
2019-11-19 07:40:27 UTC
Permalink
Raminagrobis vient de nous annoncer :

Bonjour,
Post by Raminagrobis
Sinon tu peux faire comme Romain, on faisait ça il y a 15 ans
Je m'adapte à mon interlocuteur qui semble être débutant.

La code SQL écrit, avec des identations et des instructions simples et
claires, ya rien de tel pour apprendre et comprendre ce que l'on fait,
plutôt que de galérer à vouloir remplir des paramètres que l'on ne
comprend pas.

A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Raminagrobis
2019-11-19 21:34:11 UTC
Permalink
Post by Windevboy
Bonjour,
Post by Raminagrobis
Sinon tu peux faire comme Romain, on faisait ça il y a 15 ans
Je m'adapte à mon interlocuteur qui semble être débutant.
La code SQL écrit, avec des identations et des instructions simples et
claires, ya rien de tel pour apprendre et comprendre ce que l'on fait, plutôt
que de galérer à vouloir remplir des paramètres que l'on ne comprend pas.
Tu plaisantes?

Déjà il y a bien d'autres manières moins ignobles de concaténer des
chains, et RIEN n'est plus simple que les requêtres paramétrées.

C'est une des plus grande forces de Windev
Romain PETIT
2019-11-20 10:14:49 UTC
Permalink
Post by Raminagrobis
Tu plaisantes?
Non
Post by Raminagrobis
Déjà il y a bien d'autres manières moins ignobles de concaténer des chains,
C'est pas question, je ne fait pas un concours, je montre une méthode
de façon compréhensible.
Post by Raminagrobis
et RIEN n'est plus simple que les requêtres paramétrées.
Chacun sa façon de voir.
Par expérience je passe moins de temps à maintenir un code clair et
explicite que du code "automatisé" par cases à cocher qui sont buguées
une fois sur deux dans les versions suivantes.
Exemple :
une requete paramétrée sur une table à partir d'une variable globale de
type structure (chaque colonne est affectée à un membre)
Tu changes le nom de ta variable -> tu te retapes toutes les
affectations à la main...
(essaye...)
Post by Raminagrobis
C'est une des plus grande forces de Windev
Mouais, c'est aussi une grande faiblesse quand ça marche pas.

A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Raminagrobis
2019-11-20 17:00:16 UTC
Permalink
Post by Raminagrobis
Tu plaisantes?
Non
Post by Raminagrobis
Déjà il y a bien d'autres manières moins ignobles de concaténer des chains,
C'est pas question, je ne fait pas un concours, je montre une méthode de
façon compréhensible.
Post by Raminagrobis
et RIEN n'est plus simple que les requêtres paramétrées.
Chacun sa façon de voir.
Par expérience je passe moins de temps à maintenir un code clair et explicite
que du code "automatisé" par cases à cocher qui sont buguées une fois sur
deux dans les versions suivantes.
une requete paramétrée sur une table à partir d'une variable globale de type
structure (chaque colonne est affectée à un membre)
Tu changes le nom de ta variable -> tu te retapes toutes les affectations à
la main...
Je pense que tu ne sais pas ce que c'est qu'une requête paramétrée.
Je ne vois pas le rapport avec une table ni le reste.

On parle d'une requête dans l'éditeur

MaRequete

Select toto from tata
where machin={Param_Machin}
and truc={Param_Truc}

1)
hExecuteRequete(Marequete)
Machin et truc sont ignorés

2)
Marequete.Param_Truc=1

Et Windev execute
Select toto from tata
where truc=1


etc...

En quoi tu peux faire plus simple que ça?
Tu écris la requête la plus complète sous l'éditeur et tu ne renseignes
QUE les paramètres que tu veux passer.

Alors oui, on peut passer 2 heures à contruire une chaine illisible.
Une chaine qui va planter sévèrement si on change la moindre colonne
dans la base de données (alors que l'éditeur et l'analyse bien
synchronisés préviendront de la moindre régression)...

Bref travaille comme en Windev 5.5 si tu veux...
On passe à la 25....
Romain PETIT
2019-11-21 08:24:08 UTC
Permalink
Post by Raminagrobis
Je pense que tu ne sais pas ce que c'est qu'une requête paramétrée.
Je ne vois pas le rapport avec une table ni le reste.
Oui, tu as raison je suis allé un peu vite et ai parlé d'affectation de
colonnes à partir d'une requête ou d'une variable.
C'était pour illustrer le fait que les automatismes sont parfois
(souvent avec Windev) sources de perte de temps alors qu'ils sont faits
pour en faire gagner.
Post by Raminagrobis
En quoi tu peux faire plus simple que ça?
Tu écris la requête la plus complète sous l'éditeur et tu ne renseignes QUE
les paramètres que tu veux passer.
Alors oui, on peut passer 2 heures à contruire une chaine illisible.
Une chaine qui va planter sévèrement si on change la moindre colonne dans la
base de données (alors que l'éditeur et l'analyse bien synchronisés
préviendront de la moindre régression)...
Oui, c'est vrai tu as raison c'est plus simple.
J'utilise peu les requêtes (je suis plus dans la partie indus) mais
effectivement pour quelqu'un qui travaille plus les données ce doit
être plus efficace d'utiliser les requetes paramétrées.
Post by Raminagrobis
Bref travaille comme en Windev 5.5 si tu veux...
On passe à la 25....
Ah,...mais... vous sentez là ?
Ca sent l'anonyme du 34 qui a besoin de vendre...
(ca me rappelle le bon vieux temps, merci pour ce moment)

A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Raminagrobis
2019-11-21 21:01:51 UTC
Permalink
effectivement pour quelqu'un qui travaille plus les données ce doit être plus
efficace d'utiliser les requetes paramétrées.
Post by Raminagrobis
Bref travaille comme en Windev 5.5 si tu veux...
On passe à la 25....
Ah,...mais... vous sentez là ?
Ca sent l'anonyme du 34 qui a besoin de vendre...
(ca me rappelle le bon vieux temps, merci pour ce moment)
Lol tu m'as trop grillé.
Non c'est juste que des conseils datés de 10 ans à des débutants, c'est
commencer à prendre des habitudes médiocres...
Romain PETIT
2019-11-22 07:19:33 UTC
Permalink
Post by Raminagrobis
Non c'est juste que des conseils datés de 10 ans à des débutants, c'est
commencer à prendre des habitudes médiocres...
Comme celle de poster et de donner des leçons derrière son masque de
troller anonyme ?
Reviens en parler quand tu seras capable d'assumer tes propos en toute
transparence.
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Loading...