IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Accès natif MySQL et Win 10


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Accès natif MySQL et Win 10
    Bonjour à tous,
    Je suis confronté à un problème curieux :
    J'ai une application qui accède à une base de données via l'accès natif MySQL.
    Sur les postes en Win7,8,8.1 aucun problème. Sur certains postes en W10 il arrive que le résultat d'une requête (Objet requête paramétré windev) ne comporte qu'une seule ligne. alors qu'il en est attendu plusieurs, ce que confirme l'exécution de la même requete sur un poste en W7.
    Comme indiqué, évidemment le problème est dépendant des postes. Certains poste en W10, n'ont pas le problème.
    Pour info, la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT     p.id
              ,p.name
        FROM projects p
        INNER JOIN members m ON p.id=m.project_id
        INNER JOIN users u ON u.id=m.user_id
        WHERE p.rgt-p.lft=1
            AND p.status=1
            AND m.user_id = {PUser}
            AND p.lft>{PLft}
            AND p.rgt<{PRgt}
        ORDER BY p.name

    L'ensemble des paramètres est systématiquement fourni.

    Si quelqu'un a une idée, je suis preneur. Je soupçonne un problème de DLL MySQL sans pouvoir le prouver !

    Merci d'avance de vos suggestions
    Emmanuel

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    Quelle fonction Windev utilises tu pour exécuter cette requête ?

    Il faudrait vérifier que la dll MySQL est bien adaptée à la version de MySql utilisée, bien que ça me semble bizarre que ça vienne de là

    Ensuite il faudrait aussi tester cette requête dans du code avec HExecuteRequeteSQL (avec hSansCorrection) ou SQLExec pour voir si le résultat est le même

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse,
    Le code est très simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    REQ_ListeProjetUtilisateur.PUser=gstUtilisateurTraité.id
    REQ_ListeProjetUtilisateur.PLft=REQ_LectureProjet.lft
    REQ_ListeProjetUtilisateur.PRgt=REQ_LectureProjet.rgt
    SI HExécuteRequête(REQ_ListeProjetUtilisateur,gcnxConnexion) ALORS
                ListeSupprimeTout(COMBO_ListeProjetUtilisateur)
                FichierVersListeMémoire(COMBO_ListeProjetUtilisateur,REQ_ListeProjetUtilisateur,name,name,id)
    FIN
    Il alimente une combo avec les données issue d'une autre combo...
    Le programme marche parfaitement avec un poste sous SEVEN ou autre mais pas sur tous les postes en Windows 10. C'est pour cela que je soupçonne un pb de dll.
    En fait la requête s'exécute dans tous les cas et fournit un résultat.
    Sur les postes OK : Le nombre de lignes obtenues est complet
    sur les postes KO : Le retour ne fournit que la première ligne.

    Constatation faite par les utilisateurs si la valeur name change (donc l'ordre de tri) le résultat change aussi pour.
    On a l'impression qu'un "limit 1" est inséré quelque part dans le middleware.

    Compte tenu de ses très nombreuses limitation je souhaiterai vivement ne pas utiliser les fonctions SQLxxx totalement obsolètes de mon point de vue.

    Vraiment étrange.

    Encore Merci
    Emmanuel

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    D'accord pour les fonctions SQL.., à n'utiliser que si on doit faire de l'ODBC

    Par contre j'évite d'utiliser HExécuteRequête car Windev contrôle (et modifie peut être) la requête qui sera envoyée au serveur
    Je préfère utiliser HExécuteRequêteSQL avec la constante hRequêteSansCorrection pour que le code sql envoyé soit exactement celui que j'ai écrit

    Il faudrait activer les logs MySql pour voir le code qui est envoyé au serveur

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Je me suis trouvé très malin d'utiliser un HEXECUTEREQUETE avec la constante hsanscorrection : C'était trop malin.
    Et ce soir je n'ai plus de temps.

    Je vais demander à mon client de bien vouloir m'envoyer un log SQL que je le dépiaute.

    Si tu as d'autres idées je suis preneur.

    Pour info : Il y a des postes en W10 qui n'ont pas ce symptôme.... Merci ouinouin.

    Encore merci pour ton aide.

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Un seul conseil : éviter les "boites noires" de PCSOFT

    Pour moi HExécuteRequête en est une : on ne sait pas ce qui y est fait. Tant que ça marche c'est ok, mais un jour on a des surprises

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Bonjour
    +100 pour HPascal!
    Cela fait 2 ans que j'ai découvert HexecuterequeteSQL() et je ne peux plus m'en défaire.
    Je les trouve même plus rapide que Hexecuterequete() sur des bases HF

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 451
    Points
    2 451
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Un seul conseil : éviter les "boites noires" de PCSOFT

    Pour moi HExécuteRequête en est une : on ne sait pas ce qui y est fait. Tant que ça marche c'est ok, mais un jour on a des surprises
    Bonjour,

    Si on évoque les "boîtes noires", on est plutôt dans les nuances de gris (50 ?) que dans le noir pur et absolu.
    Bon, les nuances de noir me vont aussi bien (mais aucun jeu de mots ne me vient à l'esprit, alors ...).
    Je m'explique.

    hpascal utilise couramment les accès natifs, ainsi que les ordre h* sur ces accès natifs.
    Si ce ne sont pas autant de boîtes plus ou moins grises ...

    Le plus radical est sans doute l'accès ODBC et SQLExec, si on veut s'affranchir des boîtes noires, des problèmes sans réponse du support et des risques de régression.
    Avec un accès à toutes les bases.

    Hemgé

Discussions similaires

  1. [WD10] Connexion avec l'accès natif MySQL
    Par dj-julio dans le forum WinDev
    Réponses: 5
    Dernier message: 20/02/2012, 12h38
  2. installation acces natif MySQL linux
    Par lVlatthieu dans le forum WinDev
    Réponses: 3
    Dernier message: 10/07/2007, 19h54
  3. [WD9] Acces natif Mysql
    Par nfrancky dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 09/06/2007, 01h00
  4. [WinDev 10] WinDev accès natif mysql
    Par joelviscarros dans le forum WinDev
    Réponses: 4
    Dernier message: 27/11/2006, 21h02
  5. Erreur accès natif Mysql
    Par joelviscarros dans le forum WinDev
    Réponses: 1
    Dernier message: 17/11/2006, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo