PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → [WD12] Acces natif MySQL 5.1.73
[WD12] Acces natif MySQL 5.1.73
Started by I.G.LOG, Dec., 19 2015 10:39 AM - 6 replies
Posted on December, 19 2015 - 10:39 AM
Bonjour à tous,

J'ai un problème avec la fonction SQLExec et avec un client LibMySQL.dll
version 5.1.73 (même version que le serveur MySQL).
SQLExec avec la requête suivante retourne Faux avec un code erreur n° 00000:

select t_col.ID_COL, t_caract._NOM, t_col._TYPE, t_col._LONG
from t_col
inner join t_caract
on t_caract.ID_CAR = t_col.ID_CAR
where t_col.ID_TBL = 6 // erreur n° 00000

Cette requête est pourtant valide puisque je l'exécute sans problème dans
MySQL.

Par ailleurs, j'ai un client libmysql.dll - dont je ne connais pas la
version (taille 1044 Ko du 14/02/2005) - avec lequel cette requête
fonctionne (et toutes les autres d'ailleurs)
Mais j'aimerais utiliser les bonnes versions de MySQL.
Et là je ne comprend pas le problème. SQLExec boggué ? Limité ?

Merci pour vos réponses
Posted on July, 05 2017 - 2:27 PM
Bonjour,

Le sujet est ancien mais reste d'actualité.
Il faut noter qu'une requête simple du type "SELECT * FROM machin" fonctionne. Même si on ajoute quelques jointures. Ce n'est que quand la requête devient un peu velue, avec des fonctions (d'agrégations ou non) dans le SELECT ou des sous-requêtes, que le problème survient au SQLExec().
Si quelqu'un peut nous aider ce serait vraiment sympa. Inutile de nous dire de passer à Windev 22 ou de prendre la vielle libmysql.dll qui fonctionne. Des contraintes externes nous empêche de le faire. A la limite, s'il y a moyen "d'aiguiller" l’accès natif vers une libmysql.dll qui serait dans un autre répertoire que celui de l'exécutable, je prends.
J'ai essayé de modifier les formats de chaîne envoyés aux commandes sqlXXX() natives, peine perdue. Le fait que l'erreur retournée soit "00000" me fait penser qu'il y a erreur de l'accès natif et non de la DLL mySQL.

J'utilise une classe qui encapsule les appels à l'accès natif aussi m'est-il possible d'utiliser directement les fonctions de libmysql.dll ou le package .NET de MySQL. Mais ça me ferait bien (bip) d'être obligé d'en arriver là alors qu'il y a peut-être une solution à portée de main.

Merci de toute l'aide que vous pourrez m'apporter car c'est très pénible.
Registered member
3 messages
Posted on July, 05 2017 - 2:38 PM
Bonjour,

Le sujet est ancien mais reste d'actualité.
Il faut noter qu'une requête simple du type "SELECT * FROM machin" fonctionne. Même si on ajoute quelques jointures. Ce n'est que quand la requête devient un peu velue, avec des fonctions (d'agrégations ou non) dans le SELECT ou des sous-requêtes, que le problème survient au SQLExec().
Si quelqu'un peut nous aider ce serait vraiment sympa. Inutile de nous dire de passer à Windev 22 ou de prendre la vieille libmysql.dll qui fonctionne. Des contraintes externes nous empêche de le faire. A la limite, s'il y a moyen "d'aiguiller" l’accès natif vers une libmysql.dll qui serait dans un autre répertoire que celui de l'exécutable, je prends.
J'ai essayé de modifier les formats de chaîne envoyés aux commandes sqlXXX() natives, peine perdue. Le fait que l'erreur retournée soit "00000" me fait penser qu'il y a erreur de l'accès natif et non de la DLL mySQL. Ma DLL WD120MSQL.dll est bien la dernière publiée par PCSoft.

Sinon, j'utilise une classe qui encapsule les appels à l'accès natif aussi m'est-il possible d'utiliser directement les fonctions de libmysql.dll ou le package .NET de MySQL. Mais ça me ferait bien (bip) d'être obligé d'en arriver là alors qu'il y a peut-être une solution à portée de main.

Merci de toute l'aide que vous pourrez m'apporter car c'est très pénible.
Message modified, July, 05 2017 - 2:39 PM
Registered member
3 messages
Posted on July, 05 2017 - 7:08 PM
Désolé pour le doublé. Il y a visiblement eu un problème de rafraîchissement.
Registered member
3 messages
Posted on July, 05 2017 - 7:11 PM
J'ai réussi à faire passer des trucs en jouant avec des AnsiVersUnicode() au moment d'envoyer la requête. Je pense que c'est ça. La DLL trop récente travaille en UNICODE et pas l'accès natif de Windev 12.
Existe-t-il un moyen de forcer l'accès natif de WD12 à travailler en UNICODE ?
Message modified, July, 05 2017 - 7:11 PM
Registered member
10 messages
Popularité : +1 (1 vote)
Posted on August, 18 2017 - 2:59 PM
Bonjour Francis,

Je ne sais pas si on parle du même sujet mais mon problème est le nombre de champ appelé dans mon select qui "plante" à partir de 8 champs ou plus.
Exemple : SELECT CHAMP1, CHAMP2, ... FROM MATABLE fonctionne jusqu'à 7 champs mais à partir du 8ème champs j'ai l'erreur :

Le contexte auquel cette requête fait référence (13156) est invalide (votre session s'est terminée pour une raison inconnue).

(59, ERR_BAD_CONTEXT_FOUND)

Attention je suis en WEBDEV (oui je sais sais pas le bon endroit mais erreur similaire)
Je me connecte à du MySQL et l'accès Natif est également en erreur.

Pour info, je suis aller dans le WDSQL (pour voir) et la version 64 bits est OK (je suis sur un PC Windows 10 64 bits) et le 32 bits est en erreur...

Bizarre, bizarre...

Comment as-tu fait Francis pour faire passer tes requêtes en Unicode ?
Registered member
10 messages
Popularité : +1 (1 vote)
Posted on October, 03 2017 - 11:09 AM
Personn02 a écrit :
Bonjour Francis,

Je ne sais pas si on parle du même sujet mais mon problème est le nombre de champ appelé dans mon select qui "plante" à partir de 8 champs ou plus.
Exemple : SELECT CHAMP1, CHAMP2, ... FROM MATABLE fonctionne jusqu'à 7 champs mais à partir du 8ème champs j'ai l'erreur :

Le contexte auquel cette requête fait référence (13156) est invalide (votre session s'est terminée pour une raison inconnue).

(59, ERR_BAD_CONTEXT_FOUND)

Attention je suis en WEBDEV (oui je sais sais pas le bon endroit mais erreur similaire)
Je me connecte à du MySQL et l'accès Natif est également en erreur.

Pour info, je suis aller dans le WDSQL (pour voir) et la version 64 bits est OK (je suis sur un PC Windows 10 64 bits) et le 32 bits est en erreur...

Bizarre, bizarre...

Comment as-tu fait Francis pour faire passer tes requêtes en Unicode ?


Bon le problème venait de mon PC et du windows qui était cassé...
Après réinstalle complète de windows tout est OK pour moi.