PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM17] Condition SQL et interrupteurs IOS
[WM17] Condition SQL et interrupteurs IOS
Débuté par Jean-Pierre, 23 mai 2012 02:04 - 3 réponses
Membre enregistré
108 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2012 - 02:04
Bonjour,

J'ai une fenêtre qui me permet de sélectionner différentes options, par exemple, Filtrer des bouteilles de vins qui sont:

Pour la viande rouge VRAI - Faux
Pour le poisson VRAI - Faux
Pour le fromage VRAI - Faux

Le problème c'est que si je veux filtrer 'pour la viande rouge et pour le fromage' (que ces 2 options choisies) avec ma requête il indique également ...ET Poisson = FAUX !!!

J'aimerais que les les choix VRAI sans m'occuper des choix que je n'ai pas sélectionné.

Je ne sais pas si c'est très clair !!!

Voilà la fin de la requêtecrée avec windev mobile pour IOS.

(suis débutant en Windev mobile)

la variable gbPlat_xxx a soit 1 soit 0 récupérée depuis une fenêtre avec
(14 interrupteurs)
...
WHERE
Bouteilles.Apéritif = {gbPlat_Apéritifs}
AND Bouteilles.Charcuterie = {gbPlat_Charcuterie}
AND Bouteilles.Dessert = {gbPlat_Dessert}
AND Bouteilles.Entrée = {gbPlat_Entrée}
AND Bouteilles.Foie_Gras = {gbPlat_Foie_Gras}
AND Bouteilles.Fromage = {gbPlat_Fromage}

Pour simplifier, j'aimerais simplement ne m'occuper que des interrupteur positionné sur ON et ne pas m'occuper des autres...

Merci davance pour votre aide

Jean-Pierre
Posté le 23 mai 2012 - 11:45
Bonjour,

Vu que tu utilises l'éditeur de requête de Windev, je pense que tu peux spécifier que les conditions (pour Bouteilles.Charcuterie, Bouteilles.Dessert, Bouteilles.Entrée, ...) sont "parmi la liste passée en paramètre".
Dans cette liste si ton interrupteur est à 1 tu passes 1 sinon tu passes 0;1.

De cette façon, si ton interrupteur est à 1 tu auras tout ce qui est spécifié 1 et s'il est à 0 tu auras tout ce qui est spécifié 0 ou 1.

En espérant que mon explication est clair...


Bon Dev.

Julien
Membre enregistré
108 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2012 - 13:07
Bonjour,

Merci beaucoup, je pense que c'est une excellente idée, je vais faire des essai, et je confirmerai si ok

Jean-Pierre
Membre enregistré
108 messages
Popularité : +1 (1 vote)
Posté le 24 mai 2012 - 17:41
Bonjour Julien,

Merci pour ta réponse, enfin çà fonctionne très bien en mode test de requête SQL dans Windev Mobile, par contre, je ne m'en sort pas avec la requête appelée depuis ma fenêtre qui est une zone répétée avec remplissage par programmation (en partie repris de la démo IOS CRM, partie client)

J'ai de la peine à comprendre si je dois:
- ajouter un champ pour chaque interrupteur (sous général), non affiché,
- également ajouter un attribut et mettre sous champ le nom de ma variable
globale (celle qui a "0" ou "0;1")

Pour avoir la liste "0" ou "0;1" dans ma variable globale j'ai cré une petite fonction locale.

Ce que j'ai (pour un interrupteur):

- un champ interrupteur soit INT_Appéritif

- une variable globale: gbPlat_Apéritif est une chaîne = "0;1"
(qui est appelée après l'utilisation de l'interrupteur)par
gbPlat_Apéritif = Que_Vrai(INT_Apéritif)

- dans la Requête SQL, après le where, ll y a:
Bouteilles.Apéritif IN ({gbPlat_Apéritif})

Est-ce qu'il faut ajouter dans la zone répétée (pour chaque interrupteur):

- Dans le fichier il y a: Apéritif (valeur logique)

- un champ text qui ne sera pas affiché par ex: LIB_Apéritif

- avec son attribut ATT_Libellé Valeur LIB_Apéritif et quel valeur ??
- mettre la Valeur ou le nom d'une variable locale, globale ??


Le fichier est chaque fois afficher en entier, aucun filtre.

Depuis 5 jours je suis dessus et je ne m'en sort pas du tout.

Merci beaucoup d'avance pour le temps que tu passes.

M. Salutations
Jean-Pierre