PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Accès natif MySQL
Accès natif MySQL
Iniciado por christophe.charron, jul., 05 2005 7:13 PM - 7 respostas
Publicado em julho, 05 2005 - 7:13 PM
Bonsoir,
Est-ce que le message suivant parle pour quelqu'un ?

"La requête <Requete_ComptageCA> n'a pas été préparée ni exécutée au préalable. La réexécution de la requête n'est pas possible. Vous devez spécifier un code SQL."

La requete en question, testée dans l'éditeur de requête fonctionne, ainsi que dans MySQL Query Browser !!
Elle ne me semble pas trop compliquée pourtant :
"select 1 as selection,count(*) as nombre,chiffredaffaires from MP group by chiffredaffaires,selection order by nombre desc"

Question subsidiaire : je suis particulièrement maladroit ou est-t'il bien impossible de lancer des requêtes avec HExécuteRequêteSQL dans des threads, toujours avec l'accès natif MySQL de PC-Soft?


--
Cordialement
Christophe Charron

PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or

Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:christophe.charron@prologiq.fr
Publicado em julho, 05 2005 - 7:32 PM
Bonjour,

Avez-vous essayé d'utiliser le paramètre hRequêteSansCorrection à votre
requête ? Egalement quelle commande utilisez vous ? HExecuteRequête() ou
HexecuteRequêteSQL().



Concernant les thread, cela fonctionne bien, je vous laisse donc choisir la
réponse.


--
Ed en Ligne


"Christophe Charron" <christophe.charron@prologiq.fr> a écrit dans le
message de news: 42ca98d8$1@news.pcsoft.fr...

Bonsoir,
Est-ce que le message suivant parle pour quelqu'un ?

"La requête <Requete_ComptageCA> n'a pas été préparée ni exécutée au
préalable. La réexécution de la requête n'est pas possible. Vous devez
spécifier un code SQL."

La requete en question, testée dans l'éditeur de requête fonctionne, ainsi
que dans MySQL Query Browser !!
Elle ne me semble pas trop compliquée pourtant :
"select 1 as selection,count(*) as nombre,chiffredaffaires from MP group
by chiffredaffaires,selection order by nombre desc"

Question subsidiaire : je suis particulièrement maladroit ou est-t'il bien
impossible de lancer des requêtes avec HExécuteRequêteSQL dans des
threads, toujours avec l'accès natif MySQL de PC-Soft?


--
Cordialement
Christophe Charron

PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or

Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:christophe.charron@prologiq.fr

Publicado em julho, 06 2005 - 10:09 AM
Bonjour,
et merci, d'abord de répondre avant que je ne pose la question (ptr), et ensuite de vous pencher sur mon problème. Ce que j'ai refait ce matin et en enlevant le 's' surnuméraire au "sélections" du group by, ça va beaucoup mieux !!!!
Par contre, les threads plantent toujours !!
soit :
//Code du bouton2
ThreadExécute("EffectifsCompte",threadNormal,Pf_Compte_Effectif_A)
ThreadExécute("CACompte",threadNormal,Pf_Compte_CA)
Trace("LE threads effectif a été lancé")

et
PROCEDURE Pf_Compte_CA()
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,chiffredaffaires from MP group by chiffredaffaires,selection order by nombre desc
]
SI PAS HExécuteRequêteSQL("reqcompteca",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete) ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
FichierVersTableMemoire(c_a_CA,"reqcompteca")

et

PROCEDURE Pf_Compte_Effectif_A()
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,effectif from MP group by effectif,selection order by nombre desc
]
SI PAS HExécuteRequêteSQL("reqcompteeffectifA",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete) ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
FichierVersTableMemoire(c_a_Effectifs,"reqcompteeffectifA")
Trace("Fin A")

Plante avec le message suivant :

Erreur à la ligne 18 du traitement Procédure locale Pf_Compte_Effectif_A.
Vous avez appelé la fonction FichierVersTableMemoire.
L'objet reqcompteeffectifA n'a pas été trouvé.
Publicado em julho, 06 2005 - 11:23 AM
Bonjour,

Ce n'est la requête qui pose problème mais l'utilisation de
FichierVerstableMémoire(). Vous ne pouvez pas utiliser dans un thread
secondaire des commandes de gestion de l'écran, affichage, table, etc.

Le contexte Hyper File du thread principal et donc du champ table est
différent de celui du thread. La requête n'est pas générée dans le thread
principal et donc pas dans celui de la table.


--
Ed en Ligne


"Christophe Charron" <christophe.charron@prologiq.fr> a écrit dans le
message de news: 42cb6ae0$1@news.pcsoft.fr...

Bonjour,
et merci, d'abord de répondre avant que je ne pose la question (ptr), et
ensuite de vous pencher sur mon problème. Ce que j'ai refait ce matin et
en enlevant le 's' surnuméraire au "sélections" du group by, ça va
beaucoup mieux !!!!
Par contre, les threads plantent toujours !!
soit :
//Code du bouton2
ThreadExécute("EffectifsCompte",threadNormal,Pf_Compte_Effectif_A)
ThreadExécute("CACompte",threadNormal,Pf_Compte_CA)
Trace("LE threads effectif a été lancé")

et
PROCEDURE Pf_Compte_CA()
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,chiffredaffaires from MP group by
chiffredaffaires,selection order by nombre desc
]
SI PAS
HExécuteRequêteSQL("reqcompteca",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete)
ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
FichierVersTableMemoire(c_a_CA,"reqcompteca")

et

PROCEDURE Pf_Compte_Effectif_A()
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,effectif from MP group by
effectif,selection order by nombre desc
]
SI PAS
HExécuteRequêteSQL("reqcompteeffectifA",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete)
ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
FichierVersTableMemoire(c_a_Effectifs,"reqcompteeffectifA")
Trace("Fin A")

Plante avec le message suivant :

Erreur à la ligne 18 du traitement Procédure locale Pf_Compte_Effectif_A.
Vous avez appelé la fonction FichierVersTableMemoire.
L'objet reqcompteeffectifA n'a pas été trouvé.

Publicado em julho, 06 2005 - 1:23 PM
Soit, soit ...
Mais si je remplace le fichierverstablememoire par un trace, j'ai le même problème...

--
Cordialement
Christophe Charron
Publicado em julho, 06 2005 - 1:34 PM
Re-Bonjour,

Trace utilise également le contexte HF du thread principal.

--
Ed en Ligne


"Christophe Charron" <christophe.charron@prologiq.fr> a écrit dans le
message de news: 42cb985d$1@news.pcsoft.fr...

Soit, soit ...
Mais si je remplace le fichierverstablememoire par un trace, j'ai le même
problème...

--
Cordialement
Christophe Charron


Publicado em julho, 06 2005 - 2:59 PM
Je m'en doutais un peu, en fait je le savais !! J'ai trop vite répondu, j'ai donc fait l'essai suivant, en alimantant des chaines déclarées en global au niveau de la fenêtre et voila le message d'erreur :

Erreur à la ligne 20 du traitement Procédure locale Pf_Compte_Effectif_A.
Le mécanisme de sécurité Hyper File s'est déclenché lors d'un parcours intégré du fichier 'reqcompteeffectifA' sur la rubrique ''.
Erreur de l'accès natif MySQL.
Numéro d'erreur = 22

L'erreur suivante a été renvoyée par la base données <localhost> :
Numéro d'erreur = <2013>.
Message d'erreur :
Lost connection to MySQL server during query
...

L'un ou l'autre de groupe, avec threadUtiliseHyperFile ou threadNormal plantent de la même manière !


ThreadExécute("EffectifsCompte",threadUtiliseHyperFile,Pf_Compte_Effectif_A)
ThreadExécute("CACompte",threadUtiliseHyperFile,Pf_Compte_CA)

ThreadExécute("EffectifsCompte",threadNormal,Pf_Compte_Effectif_A)
ThreadExécute("CACompte",threadNormal,Pf_Compte_CA)



PROCEDURE Pf_Compte_Effectif_A()
vf_b_Thread_effectifs = Vrai
vf_c_Chaine_effectifs = ""
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,effectif as effectif from MP group by effectif,selection order by nombre desc
]
SI PAS HExécuteRequêteSQL("reqcompteeffectifA",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete) ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
POUR TOUT "reqcompteeffectifA"
vf_c_Chaine_effectifs+={"reqcompteeffectifA.selection"}+TAB+{"reqcompteeffectifA.nombre"}+TAB+{"reqcompteeffectifA.effectif"}+TAB+RC
FIN
////pf_alimente_effectifs()
//trace("Fin A")
vf_b_Thread_effectifs = Faux

PROCEDURE Pf_Compte_CA()
vf_b_Thread_CA = Vrai
vf_c_Chaine_CA = ""
vl_c_Requete est une chaîne
vl_c_Requete =
[
select 1 as selection,Count(*) as nombre,chiffredaffaires as chiffredaffaires from MP group by chiffredaffaires,selection order by nombre desc
]
SI PAS HExécuteRequêteSQL("reqcompteca",va_c_nomcon,hRequêteSansCorrection,vl_c_Requete) ALORS
Erreur(HErreurInfo(hErrComplet))
RETOUR
FIN
POUR TOUT "reqcompteca"
vf_c_Chaine_CA+={"reqcompteca.selection"}+TAB+{"reqcompteca.nombre"}+TAB+{"reqcompteca.chiffredaffaires"}+TAB+RC
FIN
//trace("Fin compte ca")
vf_b_Thread_CA = Faux
//pf_alimente_CA()
Publicado em julho, 07 2005 - 10:50 AM
Bonjour,

vous n'avez pas d'idée sur mes threads qui génèrent cette erreur ?

Erreur à la ligne 20 du traitement Procédure locale Pf_Compte_Effectif_A.
Le mécanisme de sécurité Hyper File s'est déclenché lors d'un parcours intégré du fichier 'reqcompteeffectifA' sur la rubrique ''.
Erreur de l'accès natif MySQL.
Numéro d'erreur = 22

L'erreur suivante a été renvoyée par la base données <localhost> :
Numéro d'erreur = <2013>.
Message d'erreur :
Lost connection to MySQL server during query
...

--
Cordialement
Christophe Charron