PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD16] Table liée à requete paramétrée
[WD16] Table liée à requete paramétrée
Débuté par Myriam, 31 mai 2011 18:20 - 2 réponses
Membre enregistré
10 messages
Posté le 31 mai 2011 - 18:20
Bonjour,

J'utilise une table liée à une requête paramétrée, et je ne comprends pas bien le fonctionnement.
Je n'ai qu'un seul paramètre à ma requête.
J'ai défini une variable de type variant au niveau de la fenêtre, que je passe en paramètre à la requête.
A l'initialisation de ma page, la table est affichée vide car le paramètre et la variable de type variant sont initialisés à null. Ma compréhension est donc que la requête ne s'exécute pas (corrigez si c'est faux svp).

Ensuite, le principe est que le critère de recherche (en l'occurence, une référence produit) est saisi par l'utilisateur dans un champ de saisie, et que la liste s'affiche dans la table.

Lorsque l'utilisateur saisit sa référence, tout se passe bien puisque j'alimente mon variant avec le contenu du champ de saisie, puis je passe le paramètre à la requete, et je rafraichis la table avec la commande TableAffiche.
Le code ressemble à ça :
gvNoRef= SAI_REF
REQ_REF.Par_NoRef = gvNoRef
TableAffiche(TABLE_REQUETE,taRéExecuteRequete)

Le problème est dès que je veux vider la table.
Lorsque par exemple l'utilisateur remet son champ de saisie à blanc, alors ma requete me ramène tout le contenu du fichier.
J'ai essayé la commande TableSupprimeTout ( ma table est chargée en mémoire), mais ça ne marche pas.

Y a-t-il une astuce pour vider une table alimentée par une requête paramétrée ?
Ou une astuce pour empêcher à la requête de s'exécuter et donc laisser la table vide ?
Membre enregistré
83 messages
Posté le 01 juin 2011 - 10:55
Bonjour

Dans une requête paramétrée, une valeur Null indique à windev de ne pas prendre en compte le paramètre.

Pourquoi passer par un variant puisque vous connaissez le type de votre colonne "reference produit", et pourquoi passer par une variable intermédiaire ?

Si vous faites une recherche en prenant comme contenu le champ de saisie, et que celui-ci ne renvoie pas Null si il est vide, alors vous chercherez dans votre requete les références produit = "" (vide). Votre table sera donc vide si aucune référence n'est trouvée.

Pour résumer :
Votre champ de saisie est paramétré avec le type de votre colonne "reference"
La case renvoyer null si vode n'est pas cochée

Votre code pour la requete est :
MaRequete.MonParametreDeFiltre = MonChampDeSaisie
TableAffiche(TABLE_REQUETE,taRéExecuteRequete)

Au 1er chargement de la fenêtre le champ sera vide, donc la table aussi :)
Membre enregistré
84 messages
Posté le 01 juin 2011 - 13:34
bonjour

moi je vous encourage à remplir les tables par programmation.
Vous maitriserez tout de A à Z.