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

WebDev Discussion :

Problème d'accès à la bonne base d'accès natif mysql avec HexecuterequeteSQL


Sujet :

WebDev

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut Problème d'accès à la bonne base d'accès natif mysql avec HexecuterequeteSQL
    Bonjour,

    On butte sur un problème. On utilise uniquement l'accès natif MySQL.
    Un code qui fonctionnait sur l'ancien serveur ne fonctionne plus dans le nouveau.

    Dans l'initialisation du projet on change la connection définie dans l'analyse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //*** Initialisation de la base de données ***//
    BaseTarifs..Serveur = INILit("BDD_TARIF","SERVEUR", "ERR_SERVEUR", gs_Chemin_Fichier_Ini)
    BaseTarifs..BaseDeDonnées = INILit("BDD_TARIF","BDD", "ERR_BDD", gs_Chemin_Fichier_Ini)
    BaseTarifs..Utilisateur = INILit("BDD_TARIF","USER", "ERR_USER", gs_Chemin_Fichier_Ini)
    BaseTarifs..MotDePasse = INILit("BDD_TARIF","PASSWORD", "ERR_PASSWORD", gs_Chemin_Fichier_Ini)
     
    SI PAS HOuvreConnexion(BaseTarifs) ALORS
    	Erreur("Erreur de connexion à la base de tarifs !")
    FIN
    Puis plus loin dans le projet on a le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MaSourceDeDonnee est une Source de Données
     
    HExécuteRequêteSQL(MaSourceDeDonnee, BaseTarifs, hRequêteSansCorrection, TexteRequete) 
    HLitPremier(MaSourceDeDonnee, hSansRafraîchir)
    Il y a plein d'accès à la même base de données qui sont effectués avant ce code et tout se passe bien. Ces accès sont faits sur des fichiers définis dans l'analyse. Là c'est l'execution d'une requête en pur SQL qui ne se fait pas. Le message d'erreur dit : "le fichier <MaSourceDeDonnee> inconnu dans l'analyse <C:\xxx.wdd>, ou requête ou vue non initialisée.
    Si il s'agit d'une requête, l'exécution de cette requête a peut-être échoué.
    Dump de l'erreur du module 'WD160HF.DLL' (16.0.79.6)."

    Ca marchait sur l'ancien serveur de production et le serveur de recette. Mais cela ne fonctionne plus sur le nouveau serveur. Je pense que cela marchait car la connection BaseTarifs pointait dans l'analyse vers le feu serveur de production.

    Malheureusement, le chef de projet ne veut pas que l'on modifie le code ou l'analyse pour des raisons de validation en recette,ce qui fait qu'on a les mains liées. Il veut que je trouve la cause du disfocntionnement. A cause de cela on se retrouve sans serveur de production et c'est grâve.

  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

    Il faudrait afficher l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI HExécuteRequêteSQL( ...) ALORS
       HLitPremier(...
    SINON
       Erreur(HErreurInfo())
    FIN
    On en saura alors un peu plus
    Si tu as ce message c'est que HExécuteRequêteSQL a échoué

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Honte sur moi. Comment ai-je pu ne pas y penser. J'aurais écrit ce code correctement si c'est moi qui avait codé, mais bon, je n'ai pas pensé à ca.

    Je vais faire le changement, mais je suis persuadé que le message d'erreur que j'ai eu est le bon.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Comme je m'y attendais, l'erreur affichée reste la même.
    Ca m'ennuyais d'avoir l'air idiot alors que j'étais sûr de moi.

    A savoir :
    Fichier <MaSourceDeDonnee_xxx> inconnu dans l'analyse <C:\xxx\xxx\xxx.wdd>, ou requête ou vue non initialisée.
    Si il s'agit d'une requête, l'exécution de cette requête a peut-être échoué.

  5. #5
    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
    A quel endroit tu affiches le message d'erreur ?
    Tu peux nous montrer ton code ?

    Car on a ce message quand on essaye d’utiliser une source de données non initialisée (par exemple quand un HExecuteRequeteSQL a échoué) mais pas quand on l'initialise

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    MaSourceDeDonnee_Garantie est une Source de Données
    MontantGarantie est un monétaire
    sTypeGarantie est une chaîne	
     
    SI HExécuteRequêteSQL(MaSourceDeDonnee_Garantie, BDDxxxxxx, hRequêteSansCorrection, Requete_Montant_Garantie) ALORS
    	HLitPremier(MaSourceDeDonnee_Garantie, hSansRafraîchir)
    SINON
    	Erreur("Recup du tarif"+RC+HErreurInfo())
    FIN
     
    SI PAS HEnDehors(MaSourceDeDonnee_Garantie) ALORS 
    	sTypeGarantie = MaSourceDeDonnee_Garantie.Type_tarification_id
     
    	SELON MaSourceDeDonnee_Garantie.Type_tarification_id
    		CAS "ADH":
    			MontantGarantie = MaSourceDeDonnee_Garantie.Montant_Zonier * (Nb_adulte + nb_enfant  ) //Modif. CL : Montant_Zonier
    		CAS "CPF":
    			MontantGarantie = MaSourceDeDonnee_Garantie.Montant_Zonier		//Modif. CL : Montant_Zonier
    		CAS "PER":	//Modif. CL : On récupère le montant zonier
    			MontantGarantie = MaSourceDeDonnee_Garantie.Montant_Zonier
    			Decoupage_cotisation_benef[1] = MaSourceDeDonnee_Garantie.Montant_Zonier
    	FIN
    	//Exception faite sur alsace moselle qui ne va pas prendre la réduction automatique de 10% par zone
    	SI SAI_RegimeSociaux = "ALMO" ET SAI_ID_PRODUIT DANS (39,45) ALORS
    		MontantGarantie = MontantGarantie * 1.1
    	FIN
    FIN
     
    HAnnuleDéclaration(MaSourceDeDonnee_Garantie)
    Par contre je n'ai jamais vu d'info concernant l'initialisation d'une requête en w-langage. on a normalement, un ordre d'ouverture de connexion, puis un ordre d'execution d'une requête

  7. #7
    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
    Citation Envoyé par leonidas34 Voir le message
    Par contre je n'ai jamais vu d'info concernant l'initialisation d'une requête en w-langage. on a normalement, un ordre d'ouverture de connexion, puis un ordre d'execution d'une requête
    Oui pour moi exécution et initialisation c'est la même chose (dans le cas d'une requête), c'était juste pour garder le même langage que le message d'erreur.

    Donc pour résumer : l'exécution renvoie FAUX et te dit que la source de donnée n'est pas initialisée (via le Erreur("Recup du tarif"+RC+HErreurInfo())) ???
    Si c'est bien ça c'est quand même étrange, il devrait plutôt te dire ce qui ne va pas dans la requête, ou dans l'accès à un fichier.

    Par contre après le Erreur("Recup... il faut que tu sortes du code car si la requête échoue tu vas générer une erreur fatale puisse que tu passes quand même par le SI PAS HEnDehors(MaSourceDeDonnee_Garantie) ALORS ...
    Et dans ce cas effectivement la source de données ne sera pas initialisée

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Oui, ce qui est étrange c'est que rien n'avait été changé dans l'application, hormis le fait de changer de serveur. Et d'un coup les instructions HexecuteRequeteSQL ne fonctionnent plus correctement.

    Pour moi, ce qui change c'est que la connexion dans l'analyse qui sert de référence pointe vers un serveur dont les bases de données ne répondent plus. Seul le ping répond. Cette connexion dans l'analyse est modifiée dans l'initialisation du projet. Il suffirait de changer cette connexion dans l'analyse, c'est mon point de vue depuis le début.

    Pour info, on a découvert une fonction qui ne marche plus dans le second site qui tounait sur le serveur. Et devinez quoi ?
    C'est le même problème, hexecuterequeteSQL ne marche plus, car la connexion utilisée pointe vers l'ancien serveur.

  9. #9
    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
    Maintenant, concernant l'analyse, je déclare toujours les fichiers en HF Classic, quelque soit le type de base que j'utilise.
    Je défini ensuite une (ou plusieurs) connexion(s) par programmation

    ça évite des connexions intempestives et surtout des problèmes liés à des serveurs inaccessibles

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Je suis tout a fait d'accord. Ca marche de manière plus sûre.
    On ne gagne rien à ne pas importer les descriptions de fichiers Mysql dans l'analyse et on a tout à gagner à les avoir importées.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Bug déjà signalé
    Citation Envoyé par leonidas34 Voir le message
    Je suis tout a fait d'accord. Ca marche de manière plus sûre.
    On ne gagne rien à ne pas importer les descriptions de fichiers Mysql dans l'analyse et on a tout à gagner à les avoir importées.
    Au vue de ton post je déduis que tu utilise la version 16. Et bien c'est un bug déjà signalé

    http://forum.pcsoft.fr/thread.awp?gr...on%2Bmysql&v=2

    Personnellement je n'attends plus rien de PC Soft ; je pensais qu'avec le version 14 (était enfin stable en fin de vie) ils assureraient à l'avenir. Et bien 15 encore + buggué, 16 n'en parlons pas.

    Pour moi c'est clair plus de WD/WB. Trop de bugs ; ce n'est vraiment pas adapté pour des projets importants.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    On vient de me signaler que le problème venait de ce que dans la base de donnée mysql, l'administrateur avait configuré sur on la différence majuscules-minuscules. Je n'avais pas pu détecter ce problème car on ne m'avait pas communiqué les identifiants d'accès à la base mysql, ni ceux du serveur. Du coup, le système était une boite noire pour moi.
    Un simple debug avec test de la première requête qui posait problème m'aurait définitivement mis sur la voie, car j'ai une grande habitude de tester le code des requêtes directement sur mysql, ce qui est une démarche logique et courante. La rétention des identifiants d'accès m'avait fermé la voie à la résolution du problème.
    Je travaille plus sur ce projet depuis le jour ou j'ai ouvert ce sujet.

Discussions similaires

  1. autoriser l'acces a une base de données distante mysql
    Par marouene_ dans le forum Administration
    Réponses: 1
    Dernier message: 20/04/2011, 18h28
  2. Réponses: 3
    Dernier message: 10/04/2010, 11h19
  3. Réponses: 0
    Dernier message: 12/10/2009, 21h33
  4. Problème accès réseau à la base oracle 10g
    Par jer190 dans le forum Connexions aux bases de données
    Réponses: 5
    Dernier message: 25/05/2007, 10h33
  5. Réponses: 1
    Dernier message: 30/07/2006, 20h02

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