cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009
-
15 janv. 2007 à 16:34
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 2019
-
19 janv. 2007 à 22:08
Bonjour
Veuillez me detecter l'erreur dans mon code qui donne un resultat faux:
j'ai un champ texte dans une table qui peut comporter des nombre ou des lettres ou une valeur nulle ,je veux selectionner seulement les nombres de ce champ compris dans un intervalle variable comme ça:
a=0
b=4
set ado1=adoconnexion.execute ("SELECT CHM FROM Table1 WHERE isnumeric(CHM) and CHM>= '" & a & " ' and CHM<= ' " & b & "' ")
j'affiche le resultat de cette requête dans un mshflexgrid j'obtient des nombres qui ne répondent pas au critères de la requête (exp :12 et 18) ,je ne suis pas arrivé à devoiler cette bug veuillez me donner un coup de main merci .
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 15 janv. 2007 à 16:41
BIP, le détecteur a trouvé l'erreur !
Normal, en format texte, 0 <=12 <= 4
il te faut faire la sélection sur la première lettre :
set ado1=adoconnexion.execute ("SELECT CHM FROM
Table1 WHERE isnumeric(CHM) and Left(CHM, 1) >= '" & a & " ' and
Left(CHM, 1) <= ' " & b & "' ")
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 15 janv. 2007 à 22:49
bonsoir mr dark
j'avais eu de bonnes réponses de votre part auparavant,Merci
Pour ce sujet celà ne marche pas et la requête affiche le nombre 13 qui n'est pas en réalité compris entre 0 et 4 ,et de plus je crois que la fonction left extrait seulement le chiffre des dizaines donc ce chiffre seul est comparé avec 0 et 4 et non le nombre en entier c'est pour celà que le nombre 13 est affiché....merci de revoir ce problème
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 16 janv. 2007 à 21:12
La méthode de DARK ne marche pas, le message suivant est affiché :"Methode imshflexgrid a echoué " parceque je veux afficher les resultats dans un mshflexgrid.je n'est pas pour le moment de valeur nulle dans la champ mais las valeurs suivantes :3, v , 2 ,13 , 15 ,18. : six valeurs pour faire le test
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 16 janv. 2007 à 21:53
bah essaye déjà la requête dans access ou sous vb sans l'attribuer directement dans le mshflexgrid voir si ca passe, car chez moi ca marche (en rajouter un CHM IS NOT NULL dans la requête pour éviter les valeurs nulles), après ca peut être ton mshflexgrid qui est mal configuré (là je peux pas te dire, je n'utilise pas ce contrôle).
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 16 janv. 2007 à 23:21
Bonsoir
Peut importe là où j'affiche le resultat...,j'ai supprimé la valeur chaine de ma table ,en laissant seulment les nombres et en utilisant ta requête avec INT le resultat est : toutes les valeurs du champ et non ceux compris entre 0 et 4
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 18 janv. 2007 à 14:23
Je re pose la question encore , personne à travers le monde n'a pu trouver la solution.
j'ai une table dans access,un champ de type text,contenant des nombres des lettres et des valeurs nulles. une connexion est faites avec access depuis vb 6.0,un recordset executera la requete à critaère variable comme ça:
dim d1 as single,d2 as single: d1=0 :d2=4
set adoselect=adoconnexion.execute("SELECT CHM FROM Table1 WHERE Isnumeric CHM and CHM>='" & d1 & "' and CHM<='" & d2 & "'")
cette requete renvois tous les nombres du champ ('je crois à cause de isnumeric) et non les nombres de l'intervalle [0,4].
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 18 janv. 2007 à 16:07
Fais voir ta requête avec les INT qui te renvoie tout les nombres, car je le répète : ca marche chez moi, donc y'a aucune raison que ca marche pas chez toi !
IDEM, donne nous un échantillon des valeurs de ta table et ce que la requête te renvoie.
Je ne vois vaiment pas en quoi ma requête peut renvoyer tout les nombres !
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 18 janv. 2007 à 16:39
Bah c'est sur.. s'il fait toujours la même requete sans rien ecouter de ce qu'on lui propose ça marchera jamais...
On a déjà dit que ' ' faisait une comparaison de texte par consequent l'utilisation de > et < comme il le concoi est erroné car "100" < "20" et "30" > "2000" etc...
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 18 janv. 2007 à 21:38
j'ecoute bien ce que vous dites et voilà tout ce que j'ai:
une table avec un champ CHM contenat les valeurs : null;1;13;2;18
(ici je supprime la lettre parmis les valeurs parceque une erreur survient avec la fonct INT)
Voici ma requete sur le vb :
command1_click()
dim d1 as single,d2 as single: d1=0 :d2=4
set adoselect=adoconnexion.execute("SELECT CHM FROM Table1 WHERE Isnumeric CHM and INT(CHM)>='" & d1 & "' and INT(CHM)<='" & d2 & "'")
RESULTAT de la requête : 1;13;2;18
remarque:
si les valeurs sont comme ça :null;v;1;13;2;18 une erreur se produit.
si cela marche chez toi DARK avec ces donnéés ,je dois revoir autre chose.... merci de la discusion.
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 19 janv. 2007 à 00:18
BRAVO !
En supprimant le ' (l'accent) tout marche bien,c'est ce qu vous avez dis dans un message précédent alors que ce n'était pas clair pour moi.
maintenat les nulls et les lettres sont ignorés ,c'est ce que veux et j'obtient seule les nombres voulus de ma categorie(entre d1 et d2),et en faisant varier ces bornes j'obtient la catégorie correspondante. mes remerciments.