|
Iniciado por michael.brouwers, abr., 08 2003 6:05 PM - 6 respostas |
| |
| | | |
|
| |
Publicado em abril, 08 2003 - 6:05 PM |
Bonjour,
J'ai un petit souci avec une requete SQL, qui devrait fonctionner mais qui ne donne rien comme résultats. Voici ma simple requête SELECT num FROM clients WHERE prenom like '%el%'
Avec WDSQL ça ne me donne rien comme résultats alors que normalement, je devrais avoir ces deux personnes qui sortent 5412 michael 4172 christelle
Comment puis-je tourner ma requête pour obtenir ce résultat ?
Merci pour vos réponse
Mike
PS:Je travaille avec des bases de données HF. |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 09 2003 - 11:25 AM |
Slt Mike
normalement ta requête est bonne. Il n'y a pas de raison qu'elle ne fonctionne pas.
Essai éventuellement : SELECT DISTINCTROW.... par acquis de conscience mais ça ne devrait rien changé.
Peux-tu nous dire comment ce passe ta connexion ODBC et ce que te retourne le booléen sqlexec().
a +
Alain V
"Mike" <michael.brouwers@joskin.com> a écrit dans le message news: 3e92e1c7@news....
Bonjour,
J'ai un petit souci avec une requete SQL, qui devrait fonctionner mais qui ne donne rien comme résultats. Voici ma simple requête SELECT num FROM clients WHERE prenom like '%el%'
Avec WDSQL ça ne me donne rien comme résultats alors que normalement, je devrais avoir ces deux personnes qui sortent 5412 michael 4172 christelle
Comment puis-je tourner ma requête pour obtenir ce résultat ?
Merci pour vos réponse
Mike
PS:Je travaille avec des bases de données HF.
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 09 2003 - 12:49 PM |
J'ai essayé le DISTINCTROW mais ça ne change absolument rien à mon problème
Voici mon code du bouton de recherche en entier
ResConnect est un entier long ResExec est un booleen Req est une chaine
info("Debut de la requete") ResConnect = sqlconnect(INILit("BDD","Cheminanalyse","NOTFOUND",SysRep(true)"\intranet.in i"),"","") si ResConnect alors info(ResConnect) // On a la connection avec le fichier HF req="SELECT num, prenom FROM clients WHERE prenom like '%el%'" ResExec = sqlexec(Req,"REQ1") info(ResExec) si ResExec = faux alors SQLInfoGene("REQ1") Erreur("Erreur SQL: ",SQL.MesErreur) sinon info("Requete OK") TantQue SQLFetch("REQ1") = 0 // il y a encore une ligne à lire //récupérer les données
tableajoute("RESULTAT",sqllitcol("REQ1",1)+tab+sqllitcol("REQ1",2)) FIN fin SQLFerme("REQ1") sinon info("Problème de connection à l'analyse") FIN SQLDeconnecte()
info("Debut de la requete") s'affiche une fois sur 2 quand tout va bien info(ResConnect) me donne comme résultat: -1 info(ResExec) me donne comme résultat: 1 info("Requete OK") s'affiche bien
Je suis vraiment désespérer :'(
Je n'ai pas d'antivirus qui tourne, rien qui pourrais gêner webdev. Pire encore des fois j'ai même des "runtime ERROR" de wwawp :-/
Merci pour vos réponses
Michaël |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 09 2003 - 2:41 PM |
Euh ??... Mike
Où est SQLpremier() (qui permet de lire l'enregistrement sur lequel tu pointes) ?
Bonne lecture du tome 2 (page 1151 ou approchant).
Alain V
"Mike" <michael.brouwers@joskin.com> a écrit dans le message news: 3e93e92d@news.... > J'ai essayé le DISTINCTROW mais ça ne change absolument rien à mon problème
Voici mon code du bouton de recherche en entier
ResConnect est un entier long ResExec est un booleen Req est une chaine
info("Debut de la requete") ResConnect =
sqlconnect(INILit("BDD","Cheminanalyse","NOTFOUND",SysRep(true)"\intranet.in
i"),"","") si ResConnect alors info(ResConnect) // On a la connection avec le fichier HF req="SELECT num, prenom FROM clients WHERE prenom like '%el%'" ResExec = sqlexec(Req,"REQ1") info(ResExec) si ResExec = faux alors SQLInfoGene("REQ1") Erreur("Erreur SQL: ",SQL.MesErreur) sinon info("Requete OK") TantQue SQLFetch("REQ1") = 0 // il y a encore une ligne à lire //récupérer les données
tableajoute("RESULTAT",sqllitcol("REQ1",1)+tab+sqllitcol("REQ1",2)) FIN fin SQLFerme("REQ1") sinon info("Problème de connection à l'analyse") FIN SQLDeconnecte()
info("Debut de la requete") s'affiche une fois sur 2 quand tout va bien info(ResConnect) me donne comme résultat: -1 info(ResExec) me donne comme résultat: 1 info("Requete OK") s'affiche bien
Je suis vraiment désespérer :'(
Je n'ai pas d'antivirus qui tourne, rien qui pourrais gêner webdev. Pire encore des fois j'ai même des "runtime ERROR" de wwawp :-/
Merci pour vos réponses
Michaël
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 09 2003 - 6:12 PM |
Alain,
Dans mes autres page qui utilisent ce même type de requête je n'ai jamais utilisé SQLPremier(), mais en lancant ma requête en mode pas à pas, la fonction SQLExec() prend un temps incroyable pour s'exécuter, elle reste bien calée 2 minutes avant de se débloquer, et ne sort toujours qu'une seule ligne (christelle et pas michael)
Par contre, quand je lance une requete style "SELECT num from clients where nom = 'michael'", cette requête s'exécute en moins de temps qu'il faut pour le dire.
Merci pour ton aide
Michaël
"SFCI Conseil - Alain" <sfci.conseil@wanadoo.fr> a écrit dans le message de news: 3e94042e$1@news....
Euh ??... Mike Où est SQLpremier() (qui permet de lire l'enregistrement sur lequel tu pointes) ? Bonne lecture du tome 2 (page 1151 ou approchant). Alain V "Mike" <michael.brouwers@joskin.com> a écrit dans le message news: 3e93e92d@news.... J'ai essayé le DISTINCTROW mais ça ne change absolument rien à mon problème Voici mon code du bouton de recherche en entier
ResConnect est un entier long ResExec est un booleen Req est une chaine
info("Debut de la requete") ResConnect =
sqlconnect(INILit("BDD","Cheminanalyse","NOTFOUND",SysRep(true)"\intranet.in
i"),"","") si ResConnect alors info(ResConnect) // On a la connection avec le fichier HF req="SELECT num, prenom FROM clients WHERE prenom like '%el%'" ResExec = sqlexec(Req,"REQ1") info(ResExec) si ResExec = faux alors SQLInfoGene("REQ1") Erreur("Erreur SQL: ",SQL.MesErreur) sinon info("Requete OK") TantQue SQLFetch("REQ1") = 0 // il y a encore une ligne à lire //récupérer les données
tableajoute("RESULTAT",sqllitcol("REQ1",1)+tab+sqllitcol("REQ1",2)) FIN fin SQLFerme("REQ1") sinon info("Problème de connection à l'analyse") FIN SQLDeconnecte()
info("Debut de la requete") s'affiche une fois sur 2 quand tout va bien info(ResConnect) me donne comme résultat: -1 info(ResExec) me donne comme résultat: 1 info("Requete OK") s'affiche bien
Je suis vraiment désespérer :'(
Je n'ai pas d'antivirus qui tourne, rien qui pourrais gêner webdev. Pire encore des fois j'ai même des "runtime ERROR" de wwawp :-/
Merci pour vos réponses
Michaël
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 10 2003 - 2:27 PM |
Bonjour Mike
Le temps de recherche est normal puisque tu indiques par exemple %el% donc tu feras une recherche sur : christelle, Joel, Michel, Mickael, etc...
Si par contre tu faits une recherche sur Mickael il sera un peu plus rapide puisque moins de réponses (je penses qu'il doit y avoir un contrôle de taille automatique avec SQL : en rêvant un peu !!! ).
Je t'avoue que je ne vois pas l'utilité d'un SQLFetch() en dehors d'une boucle. En fait tu pourrais écrire directement :
ResExec = sqlexec(Req,"REQ1") info(ResExec) si ResExec = faux alors SQLInfoGene("REQ1") Erreur("Erreur SQL: ",SQL.MesErreur) sinon sqlassocie("req1", Var1,Var2,Var3) sqlpremier("req1") Tablesupprimetout("Mapage.matable") //pour nettoyer la table tantque pas sql.endehors tableajoute("MaPage.matable",Var1+tab+Var2+tab+Var3) sqlsuivant("req1") Fin FIN SQLFerme("REQ1")
Je sais que l'utilisation de variables n'est pas judicieux mais j'arrive à faire un chargement d'une trentaine d'enregistrement sur une table de 10 colonnes (pas besoins de plus) en 10 secondes maxi entre le clic de demande et l'affichage en réalisant des recherche sur une partie du nom ou sur une borne de date ou sur une borne de numéro d'identification.
Ma table, où je faits ma recherche, contient plus de 3000 enregistrements.
A toi de tester et de voir si tu peux mettre directement le nom des champs de table au lieu des variables.
Tiens nous au courant.
Alain V
"Mike" <michael.brouwers@joskin.com> a écrit dans le message news: 3e9434d2@news....
Alain,
Dans mes autres page qui utilisent ce même type de requête je n'ai jamais utilisé SQLPremier(), mais en lancant ma requête en mode pas à pas, la fonction SQLExec() prend un temps incroyable pour s'exécuter, elle reste bien calée 2 minutes avant de se débloquer, et ne sort toujours qu'une seule
ligne (christelle et pas michael)
Par contre, quand je lance une requete style "SELECT num from clients where > nom = 'michael'", cette requête s'exécute en moins de temps qu'il faut pour
le dire.
Merci pour ton aide
Michaël
"SFCI Conseil - Alain" <sfci.conseil@wanadoo.fr> a écrit dans le message de
news: 3e94042e$1@news.... Euh ??... Mike Où est SQLpremier() (qui permet de lire l'enregistrement sur lequel tu pointes) ? Bonne lecture du tome 2 (page 1151 ou approchant). Alain V "Mike" <michael.brouwers@joskin.com> a écrit dans le message news: 3e93e92d@news.... J'ai essayé le DISTINCTROW mais ça ne change absolument rien à mon problème Voici mon code du bouton de recherche en entier
ResConnect est un entier long ResExec est un booleen Req est une chaine
info("Debut de la requete") ResConnect =
sqlconnect(INILit("BDD","Cheminanalyse","NOTFOUND",SysRep(true)"\intranet.in
i"),"","") si ResConnect alors info(ResConnect) // On a la connection avec le fichier HF req="SELECT num, prenom FROM clients WHERE prenom like '%el%'" ResExec = sqlexec(Req,"REQ1") info(ResExec) si ResExec = faux alors SQLInfoGene("REQ1") Erreur("Erreur SQL: ",SQL.MesErreur) sinon info("Requete OK") TantQue SQLFetch("REQ1") = 0 // il y a encore une ligne à lire //récupérer les données
tableajoute("RESULTAT",sqllitcol("REQ1",1)+tab+sqllitcol("REQ1",2)) FIN fin SQLFerme("REQ1") sinon info("Problème de connection à l'analyse") FIN SQLDeconnecte()
info("Debut de la requete") s'affiche une fois sur 2 quand tout va bien
info(ResConnect) me donne comme résultat: -1 info(ResExec) me donne comme résultat: 1 info("Requete OK") s'affiche bien
Je suis vraiment désespérer :'(
Je n'ai pas d'antivirus qui tourne, rien qui pourrais gêner webdev. Pire encore des fois j'ai même des "runtime ERROR" de wwawp :-/
Merci pour vos réponses
Michaël
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 11 2003 - 3:39 PM |
J'ai mis de côté cette recherche, car elle ne me donne jamais l'entièreté des résultats attendus (via wdmap j'ai 45 enregistrements en 30 sec et via la requête SQL 22 seulement en 2 minutes)
Via WDMap, je cherche les enregistrement qui contiennent une chaîne.
Dans ma table j'ai +/- 10 000 enregistrements.
Merci quand même pour tes infos
Mike
Je fais un SQLfetch pour charger mon résultat en mémoire (donc j'utilise pas le SQLPremier), juste une autre technique |
| |
| |
| | | |
|
| | | | |
| | |
|