Requête Sql et TextBox

Le
cornichon
Bonjour à tous, internautes de ce site.

Je dispose :
- d'une base de données hébergée sous Access2003 contenant une unique table.
- de l'environnement de développement VisualWebDeveloper 2008 express édition.

Je dois réaliser le filtrage de cette base de donnée via une page web (en .aspx ) afin de récupérer toutes les ligne de cette table dont un champ (mettons le champ marguerite) a une valeur supérieure(resp inférieure ou égale) à ce que j'indique dans une textbox. Le choix inférieur/supérieur/égal se fait par une DropDownList convenablement renseignée.

Afin d'éviter les erreurs de saisie ou autres, la TextBox n'accepte que des caractère numériques ( de 0à9 ) ainsi que la virgule comme séparateur décimal.

Un petit travail de déboguage m'a permis de constater ( par affichage sur la page ) que la variable tmp servant à stocker la clause WHERE a un contenu adéquat. Par exemple l'affichage me dit : marguerite > 100 (si j'ai rentré 100 dans la TextBox).

LE BUG:
lorsque j'appuie sur le bouton rechercher, j'ai un message d'erreur disant:
Impossible d'effectuer l'opération > sur les types int32 et String.
La mise à True de l'attribut Debug m'a parmis de voir que l'erreur/exception est soulevée lors de l'appel de GridView.Databind()

toutes les autres requêtes portant sur des String (comme la recherche d'un item nommé PafLeChien ) retournent ce qu'il faut sans erreur.

merci de m'avoir lu, et au plaisir (et soulagement) d'avoir des éléments de réponse.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #16343061
On essaie de comparer du texte et du numérique dans du code .NET... Il
faudrait voir comment se fait la sélection. Mon premier mouvement serait de
vérifier que le champ "marguerite" est bien numérique (as t'on le même
problème avec marguerite>'A' par exemple ?)...
---
Patrice

"cornichon" discussion :
Bonjour à tous, internautes de ce site.

Je dispose :
- d'une base de données hébergée sous Access2003 contenant une unique
table.
- de l'environnement de développement VisualWebDeveloper 2008 express
édition.

Je dois réaliser le filtrage de cette base de donnée via une page web (en
.aspx
) afin de récupérer toutes les ligne de cette table dont un champ (mettons
le
champ marguerite) a une valeur supérieure(resp inférieure ou égale) à ce
que
j'indique dans une textbox. Le choix inférieur/supérieur/égal se fait par
une
DropDownList convenablement renseignée.

Afin d'éviter les erreurs de saisie ou autres, la TextBox n'accepte que
des
caractère numériques ( de 0à9 ) ainsi que la virgule comme séparateur
décimal.

Un petit travail de déboguage m'a permis de constater ( par affichage sur
la
page ) que la variable tmp servant à stocker la clause WHERE a un contenu
adéquat. Par exemple l'affichage me dit : marguerite > 100 (si j'ai
rentré 100
dans la TextBox).

LE BUG:
lorsque j'appuie sur le bouton rechercher, j'ai un message d'erreur
disant:
Impossible d'effectuer l'opération > sur les types int32 et String.
La mise à True de l'attribut Debug m'a parmis de voir que
l'erreur/exception
est soulevée lors de l'appel de GridView.Databind()

toutes les autres requêtes portant sur des String (comme la recherche d'un
item
nommé PafLeChien ) retournent ce qu'il faut sans erreur.

merci de m'avoir lu, et au plaisir (et soulagement) d'avoir des éléments
de
réponse.


cornichon
Le #16348181
Merci pour ta réponse Patrice

La comparaison à 'a' de marguerite ne soulève aucun message d'erreur. J'avais essayé de régler mon problème en mettant des ' autour de textbox.text, mais ça m'a donné des résultats certes correct au niveau lexicographique, mais voir qu'un item ayant une valeur de 5 est sélectionné quand on a demandé une valeur mini de 10, ça pose problème.

J'ai vérifié les quelques 300 lignes de la table, le champ marguerite ne contient que des chiffres de 0à9 ainsi que virgule. J'ai déjà essayé en remplaçant la virgule par un point, mais cela n'a rien corrigé.
Patrice
Le #16348961
Le contenu n'a aucune importance. C'est le type du champ qui compte et là il
semble bien que ce champ soit de type texte donc on a "10"<"5" tout comme
"BA"<"E" car on commence par comparer les lettres par la gauche pour du
texte.

Vérifier quel est le type de ce champ et si c'est bien du texte voir
pourquoi ce choix a été fait et si il ne pourrait pas être reconsidéré...

--
Patrice

"cornichon" discussion :
Merci pour ta réponse Patrice

La comparaison à 'a' de marguerite ne soulève aucun message d'erreur.
J'avais
essayé de régler mon problème en mettant des ' autour de textbox.text,
mais ça
m'a donné des résultats certes correct au niveau lexicographique, mais
voir
qu'un item ayant une valeur de 5 est sélectionné quand on a demandé une
valeur
mini de 10, ça pose problème.

J'ai vérifié les quelques 300 lignes de la table, le champ marguerite ne
contient que des chiffres de 0à9 ainsi que virgule. J'ai déjà essayé en
remplaçant la virgule par un point, mais cela n'a rien corrigé.


cornichon
Le #16350071
Merci beaucoup Patrice de tes explications, j'ai regardé plus en détail la base de données, l'ai recrée ( par importation d'une feuiller excel où j'ai pris soin de sélectionner les colonnes fautives et d'appliquer le format de cellule nombre )
et ça fonctionne parfaitement maintenant.

Pour une raison X ou Y , une ( ou plusieurs) cellules devait ne pas avoir le bon format et abvoir donc conduit Access à typer ce champ comme String et non comme entier.

Re merci Patrice, tout est clair maintenant ^^

Il me reste à continuer la découverte de VB ( j'en suis à ma 3ème semaine). Le Visual Web Developer est réellement agréable à manipuler :-)
Publicité
Poster une réponse
Anonyme