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

  1. #1
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut Erreur Connexion Serveur avec Requête

    Bonjour à tous,

    Je reviens vers vous pour une nouvelle histoire étrange :

    Dans mon application, j'ai une analyse avec :
    Des tables locales au projet (dans un perso dossier "Base_Locale")
    et des tables sur un serveur HFSQL (dans un perso dossier "Base_HFSQL").

    Dans le code d'initialisation du projet, je gère la connexion des tables du serveur via une variable connexion et un HChangeConnexion('Base_HFSQL', MaConnexion).
    ça c'est ok ça fonctionne.

    Pour les tables locales, je fais un HChangeRep('Base_Locale', fRepExe()+"\").
    Tout fonctionne très bien.

    MAIS si maintenant je coupe le serveur HFSQL,
    lorsque j’exécute des requêtes qui utilise uniquement que les tables locales, j'ai une erreur comme quoi il y a un échec de connexion au serveur HFSQL.

    Normalement, cela ne doit pas gêner si ?
    Ce serait des requêtes qui visent les tables HFSQL je comprendrai, et d'ailleurs je le gère ce cas de figure !
    Mais pour les tables locales ????

    Quelqu'un a une idée ??

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 110
    Points : 4 412
    Points
    4 412

    Par défaut

    Si je ne m'abuse, toutes tes lectures/écritures se font par des requêtes SQL.

    Je passerais par 2 connexions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cx1 , cx2 est une connexion
    hdecritconnexion ( cx1, bla bla )  // base locale
    hdecritconnexion ( cx2, bla bla)    // base distante
    houvreConnexion( cx1)
    houvreConnexion( cx2)
     
    // tes requetes 
     
    hferme(cx2)
    // tes requetes  sur la base locale.
    Sachant que dans toutes les requêtes, tu va spécifier si la requête s'exécute sur cx1 ou cx1 : parmi les différentes syntaxes de hexecuteRequeteSQL, il y en a une où le 1er paramètre est une variable de type connexion.

    Avant d'ajouter cx1 et cx2 partout dans tes requêtes, vérifie quand même sur un petit essai bidon que ça marche !
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    alors ce sont des requêtes réalisées avec l'éditeur de requête.
    J'utilise la fonction HExcuteRequete et non HExecuteRequeteSQL...

    Mais je viens de voir que l'on peut également détailler une connexion...

    Ce serait une bonne idée ! Cependant je ne décrit pas de connexion pour les bases locales...
    comme elles sont locales !!

    du coup... ???

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 110
    Points : 4 412
    Points
    4 412

    Par défaut

    Même pour les bases sont locales, tu peux les accéder via hexecuteRequete(maConnexion, ...)

    Dans les faits, tu peux même programmer en faisant partout : hexecuteRequete(maConnexion, ...), et au moment de déployer ton programme, tu vas décider d'installer ta base en locale, ou en HFCS (ou en mySQL ...)
    Le même programme peut tourner indiféremment sur un type de base ou un autre, sans avoir besoin de le recompiler.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    ok ça je comprends.

    Bon attention, je n'utilise pas les connexions décrites dans l'analyse !
    Celles-ci me permettent juste de faire la synchro des base HFSQL en mode développement.

    du coup comment créer une connexion pour des tables locales, situées dans le répertoire de l'application... ???

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 110
    Points : 4 412
    Points
    4 412

    Par défaut

    Regarde l'aide de la fonction hDecritConnexion() : paramètre hAccèsHF7 ; commentaire associé : Pseudo-connexion à une base HFSQL Classic
    Puis hChangeConnexion( fichier1, maconnexionLocale) : Dorénavant, Windev saura que toutes les commandes qui attaquent le fichier fichier1 doivent l'attaque sur la bas HFSQLClassic.

    Et les exemples détaillés qui vont avec l'aide : https://doc.pcsoft.fr/fr-FR/?1000003...exion_fonction

    L'exemple 3 correspond exactement à ce que tu cherches. hDecritConnexion pour passer en HFSQLClassic, et dire en même temps que les fichiers FIC sont dans tel répertoire.

    Tout est dit dans la documentation.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 610
    Points : 957
    Points
    957

    Par défaut

    Bonsoir
    Je fais comme ceci :

    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
    SELON sProvider
        CAS "hAccèsHF7"
            sConexion..Utilisateur = ""
            sConexion..MotDePasse = ""
            sConexion..Serveur = sDirDatos
            sConexion..BaseDeDonnées = ""
            sConexion..Cryptage = hCryptageNon
            sConexion..Accès = hOLectureEcriture 
            sConexion..InfosEtendues = "Infos étendues" 
            sConexion..OptionsCurseur = hCurseurClient 
            sConexion..Compression = Vrai
            sConexion..Source = sDirDatos
            SI HChangeConnexion(sFichero, sConexion) = Faux ALORS
                // CONEXION FALLA
                bConnexionDistante = Faux
                Erreur(HErreurInfo())
            SINON
                // CONEXION CORRECTA
                SI HOuvreConnexion(sConexion) = Faux ALORS
                    bConnexionDistante = Faux
                    Erreur(HErreurInfo())
                SINON
                    // CONEXION CORRECTA
                    bConnexionDistante = Vrai
                FIN
            FIN
        CAS ........

  8. #8
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    Pseudo-connexion à une base HFSQL Classic
    et mais ça à l'aire fort ben intéressant ça !

    tu peux pas t'imaginé combien de fois j'ai lu cette doc sans percuter dessus....

    J'essaye demain.

    @yusep, merci, je fais qqch de similaire...

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 610
    Points : 957
    Points
    957

    Par défaut

    J'ai fait une procedure por traiter tous les types de connexions.
    Si tu veux tu peux collaborer pour la completer et l'ameliorer.

  10. #10
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    Bon ben ça marche pas...

    Je viens de tester :

    J'ai donc créer une pseudo connexion pour les bases locales
    Associé cette connexion aux fichiers locaux.
    Ajouter la connexion dans toutes les requêtes concernées.

    Et même cas de figure, si le serveur HFSQL est arrêté, l'appli plante...

  11. #11
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    c'est étrange parce que si je démarre l'appli alors que le sreveur est éteint, elle se déroule correctement.

    C'est que quand le serveur s'arrête alors que l'appli est en cours que ça plante

  12. #12
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    j'ai l'impression que le problème ne vient pas de la connexion à lq base HFSQL, mais plutôt de la l'appel d'un Thread bien spécifique...

    Quand la connexion au serveur n'existe plus, toute l'appli rame et fini par planté à l'appel de ce fameux thread.

    De plus, j'ai des avertissement quand ça plante qui me dit que :

    L'appel de la fontion ... tableaffiche(), MaFonction(), Message(), ... est déconseillé dans un thread !!!!

    Ce qui très étrange parce que je sais qu'i lne faut pas faire appel à l'IHM dans un Thread !!
    Je passe toujours par des fonctions spécifiques appellées par un ExecuteThreadPrincipal() !!!!!

    vous avez une idée ?

  13. #13
    Membre régulier
    Inscrit en
    mars 2010
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 286
    Points : 72
    Points
    72

    Par défaut

    je crois que je viens de comprendre ce qui bloquait...

    Quel est le lien avec le serveur HFSQL ??? ça je ne sais pas.

    Mais dans Mes Thread, il y a des procédure qui sont appelées par ExecuteThreadPrincipal()

    Dans ces procédures, d'autres procédures sont appelées... mais pas toujours avec ExecuteThreadPrincipal()...

    Du coup je viens de modifier l'appel de TOUTES mes procédures en ajoutant ExecuteThreadPrincipal().

    Et là ça semble bien fonctionner...

    Mais franchement je trouve pas ça logique, surtout si ces procédures n'affectent en rien l'IHM !

    Bref vive la cascade d'appel de procédures !

    Bon je crie pas victoire trop vite...

Discussions similaires

  1. Erreur connexion socket avec Hyper-V
    Par manue85 dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 11/03/2011, 12h52
  2. Connexion serveur avec pgAdmin
    Par John81 dans le forum Installation
    Réponses: 1
    Dernier message: 16/08/2010, 13h11
  3. [BASH]erreurs connexion serveur
    Par tipié dans le forum Administration système
    Réponses: 2
    Dernier message: 11/02/2010, 06h44
  4. Ressources serveur avec requête SELECT et preg_match_all
    Par ascito dans le forum PHP & MySQL
    Réponses: 1
    Dernier message: 28/11/2009, 11h28
  5. [java mail] erreur connexion serveur smtp host
    Par deb31 dans le forum APIs
    Réponses: 9
    Dernier message: 20/08/2009, 17h22

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