PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → [WD12] Acces natif MySQL 5.1.73
[WD12] Acces natif MySQL 5.1.73
Iniciado por I.G.LOG, 19,dic. 2015 10:39 - 6 respuestas
Publicado el 19,diciembre 2015 - 10:39
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
Publicado el 05,julio 2017 - 14:27
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.
Miembro registrado
3 mensajes
Publicado el 05,julio 2017 - 14:38
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.
Mensaje modificado, 05,julio 2017 - 14:39
Miembro registrado
3 mensajes
Publicado el 05,julio 2017 - 19:08
Désolé pour le doublé. Il y a visiblement eu un problème de rafraîchissement.
Miembro registrado
3 mensajes
Publicado el 05,julio 2017 - 19:11
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 ?
Mensaje modificado, 05,julio 2017 - 19:11
Miembro registrado
10 mensajes
Popularité : +1 (1 vote)
Publicado el 18,agosto 2017 - 14:59
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 ?
Miembro registrado
10 mensajes
Popularité : +1 (1 vote)
Publicado el 03,octubre 2017 - 11:09
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.