PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → [WD1.5]  Requete SQL
[WD1.5] Requete SQL
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 ;-)