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 :

Procédure de connexion BDD Distante (client/serveur) / BDD Locale (hyperfile classic) [WD18]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 28
    Points
    28
    Par défaut Procédure de connexion BDD Distante (client/serveur) / BDD Locale (hyperfile classic)
    Bonsoir à toutes et à tous,

    Je suis en train de créer une application pour une association. Celle-ci sera utilisable par quelques personnes via internet. J'ai donc loué un serveur distant sur lequel je me connecte.
    Etant novice dans ce genre de développement (J'ai déjà créé des applications monopostes et en réseau local mais pas via internet), je n'ai pas pensé à un point qui, aujourd'hui me bloque :
    J'ai créé mon application, je la développe et je rentre au fur et à mesure les VRAIS données puisque je suis connecté au serveur, ça me fait gagner du temps, je n'aurais plus à les saisir. Revers de la médaille, il faut faire 2x plus attention...

    La semaine dernière, j'ai créé l'exécutable et je l'ai "mise en clientèle" en mode automatique via un FTP, tout fonctionne bien. Nous ne sommes que deux pour le moment (moi et un copain en qui j'ai confiance (sécurité des données de l'association) qui fait le "testeur")

    C'est maintenant que je rencontre un problème: quand je suis en "mode test" (ou "développement", comme vous voulez), vu que je suis connecté au serveur (en test ou le client), si je fais une modification de structure, par exemple, je cours droit à la catastrophe car les modifications seront faites sur le serveur et le "client" ne sra plus en phase tant que je n'ai pas fait de mise à jour...

    On m'a donné la solution mais c'est sa mise en oeuvre qui coince : il suffit de tester dans le code de début de projet si je suis en mode "test" ou pas et de réaliser la bonne connexion.
    Si mode test alors connexion BDD locale (répertoire exe de l'application ?) sinon connexion sur la BDD du Serveur.

    Ci-dessous vous trouverez le code que j'ai fait et qui fonctionne pour la connexion sur le serveur, mais je ne sais pas quoi mettre comme paramètres pour me connecter en local... C'est là que j'aurais besoin d'un petit coup de main...
    Les lignes qui contiennent "info" sont là pour raison de test. Quand je serais sûr que ça fonctionne, je les enlèverai...

    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
    gcnxConnexion est une Connexion
    SI EnModeTest() = faux ALORS
    	// On se connecte sur la vrai BDD
    	Info("Connexion à la vrai BDD")
    	gcnxConnexion..Serveur = "NomDuServeur"+":"+"Port"
    	gcnxConnexion..BaseDeDonnées = "NomDeLaBDD"
    	gcnxConnexion..Utilisateur = "NomUtilisateur"
    	gcnxConnexion..MotDePasse = "MotDePasse"
    	gcnxConnexion..Provider = hAccèsHFClientServeur 
    	gcnxConnexion..Accès = hOLectureEcriture 
    	gcnxConnexion..OptionsCurseur = hCurseurClient
    SINON
    	// On se connecte sur la BDD de Travail
    	Info("Connexion à la BDD de travail")
    // C'EST ICI QUE JE NE SAIS PAS QUOI METTRE
    // Je pense qu'il faut au moins mettre ces deux lignes :
    	gcnxConnexion..Provider = hAccèsHF7
    	gcnxConnexion..Accès = hOLectureEcriture
    FIN
    SI HOuvreConnexion(gcnxConnexion) ALORS
    	Info("Connexion réussie")
    SINON
    	Info("Connexion impossible")
    	FinProgramme()
    FIN
    La question qui viendra ensuite sera de savoir comment rapatrier mes données du serveur pour "créer" ma BDD de travail. Il faut, je pense, déjà avoir une sauvegarde de la BDD qui est sur le serveur, la seule solution (hors programmation perso) que j'ai trouvé, c'est de passer par la sauvegarde proposée dans le menu "?" de l'application car celle réalisée par le centre de contrôle n'est possible que sur un répertoire du serveur... (si j'ai bien tout compris...)

    Merci pour votre aide, en espérant ne pas avoir été trop brouillon... (c'est toujours plus dur de faire comprendre ce qu'on veut par écrit...)

    Bon développement à tous !!!

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Ce problème a déjà été plus ou moins abordé.

    Première chose : tu crées un fichier ini avec toutes tes infos de connexion (adresse, user,password,...).
    Deuxième chose : tu rajoutes un paramètre, ConnexionLocale qui vaut 1 si c'est en local (c'est logique).
    Troisième chose : tu crées une fenêtre qui te permettra de visualiser / modifier tes paramètres.

    Dans ton code du sinon , tu utilises le hchangenom si c'est du classic...

    Lors du lancement de ton projet, tu charges tes paramètres et c'est que du bonheur...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Bonjour Franchsting,

    Merci pour ta réponse.
    Il faut prendre en compte que je débute sur les BDD client/serveur donc ce qui va suivre va peut-être paraître idiot mais bon...

    D'abord, effectivement je me doute que le sujet a du être plus ou moins abordé et, en attendant des réponses, j'ai continué à fureter un peu...
    Je suis avec attention ce sujet (initialisé par jjacques68) : http://www.developpez.net/forums/d14...n-windows-7-a/
    On y parle de connexion et c'est assez similaire avec mon pb.

    Ensuite, pour ce que tu me proposes :
    - Dans le fichier .ini que tu me propose de créer, tu me dis de mettre mes infos de connexions : si je comprend bien, il s'agit des infos que j'ai mis dans mon code dans la partie "On se connecte sur la vrai BDD".
    Dans ce cas quel est l'intérêt du fichier ini par rapport à mon code ? Je tente une réponse : accessible directement si je dois changer un paramètre ?

    - Rajouter un paramètre "connectionLocale=1" : Même question, quel est l'intérêt puisque je sais déjà si je suis en local ou pas grâce à la fonction "Enmodetest()"
    EnModetest()=vrai = Local, = faux, connexion client serveur.

    - Créer une fenêtre pour modifier les paramètres du fichier .ini, ça, ça va aller...

    - tu dis : "Dans ton code du sinon , tu utilises le hchangenom si c'est du classic...". Je viens de regarder la doc à propos de cette commande et je ne comprend pas pourquoi utiliser cette commande. Ne devrais-je pas plutôt utiliser le "HcahngeRep" pour chaque fichier en lui indiquant l'endroit du "répertoire de travail local" ?

    Voilà, mes questions sont celle d'un novice en la matière, mais je ne demande qu'à apprendre, pas en me machant le boulot bien sûr (quoique... ) mais en m'aiguillant, après, à moi de me "tirer les doigts du ..." en potassant les docs. C'est encore le meilleur moyen d'apprendre...

    Pour finir : avant que tu me répondes, j'avais pensé à une possibilité mais je ne sais pas ce quelle vaut : Dans "la description du projet/options des fichiers de données/répertoire des fichiers à utiliser en mode test", j'ai peut-être fait une erreur : l'option sélectionnée est "Répertoire de la configuration courante ou répertoire courant".
    Ne s'agit-il pas ici de ma BDD sur le serveur? Dans ce cas, il faudrait peut-être sélectionner l'option "répertoire ci-dessous" ?
    Si c'est juste ça, je suis pourtant passé plusieurs fois dessus en tentant de trouver une solution... Pfff...

    Voilà, en attendant d'éventuels éclaircissements de ta part (ou de quelqu'un d'autres), je vais tenter de refaire une recherche sur ce sujet sur le forum

    Merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Bonsoir à toutes et à tous,

    Je viens poster une nouvelle fois pour clore le sujet car j'ai trouvé la solution.
    Merci à Frenchsting de m'avoir répondu même si ses informations, sur le coup m'ont apporté plus de questions que de réponses...
    Cumulées avec les informations que j'ai pu récupérer auprès d'autres personnes que je connais qui programme aussi en WD (mais pas en client/serveur pour l'une d'entre elle), j'ai pu orienter mes recherches et me rendre compte que la solution était tellement simple !!! Mais bon, quand on est focalisé dans une direction, on a du mal à regarder ailleurs... Heureusement, en discutant et en demandant des conseils à "la communauté" et en se creusant un peu la tête, on finit par trouver !!
    Donc, voici cette solution (si jamais quelqu'un rencontre le souci...) :
    Le pire, c'est que j'en avais déjà fait la moitié sans le savoir et, j'aurais dû "percuter"... Cette solution est perfectible, j'ai déjà des axes de travail (au vu des infos récoltées) pour l'améliorer.

    - Installation d'un serveur sur mon propre ordinateur,
    - Création d'une BDD "de travail" sur ce serveur via le centre de contrôle HFSQL
    - Création des connexions dans l'analyse,
    - dans le code de la fonction "enmodetest()"
    * Faux : je donne les infos pour se connecter sur la vraie BDD (sur serveur distant, loué)
    * vrai : je donne les infos pour se connecter sur la BDD "de travail" (sur le serveur de mon ordi)
    - j'ouvre la connexion

    Et ça fonctionne...

    Maintenant, je passe au pb suivant : les applications clients ne détectent pas automatiquement la mise à jour que j'ai faite...

    Voilà, merci encore pour les réponses et bon dev à tous !!!

  5. #5
    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
    Salut,

    Discussion résolu, ouverture d'une nouvelle ?

    Une piste : Création d'installateur WD avec mise à jour auto

    Bon DEV

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Non, Zouzoukha, je n'ai pas ouvert une nouvelle discussion car, avant de demander un coup de main, je vais faire des recherches...

    Pour info, la solution que tu proposes, je l'ai vue dans la doc, la méthode de MAJ auto fonctionne très bien sur une autre application que j'ai en réseau local mais, là, en client serveur, ça ne marche pas... J'en ai discuté avec un copain aujourd'hui, et il m'a parlé d'une histoire de HTTP et FTP (l'appli de référence est sur un FTP). Je vais creuser de ce coté là. Et je vais relire encore une fois la doc pour voir si j'ai loupé quelque chose.
    En attendant, j'ai toujours la possibilité de ré-installer l'application avec la nouvelle version mais ça ne me convient pas. Ca devrait marcher, je ne suis pas le premier qui utilise cette méthode. Je suis passé au travers de quelque chose : je vais creuser, je n'aime pas rester sur un échec...

    Mais merci d'avoir pris la peine de me donner une info, c'est sympa.

    Bonne soirée à tous.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    Je pense que dans votre cas, la mise à jours doit être obligatoire (Dans la plus part des cas elle est optionnelle) car les appli client se connecte tous à la même BDD.
    Dans ce cas je vous recommande de faire une vérification de version au lancement de l'appli( la référence de la dernière version devrai être stocké quelque part dans le serveur). Si la version ne courante du client ne correspond pas, l'appli demande de faire une mise à jours avant de se fermer.
    Après, faire une MAJ auto ou faire apparaître un lien de téléchargement, libre à vous.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Merci DarkWD, c'est effectivement une piste à laquelle j'avais pensé...Je vais essayer de voir ça ce WE...

    Bon Dev à tous.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Le système de maj auto de windev permet de diffuser l'exe sur les postes clients, il ne permet pas la mise à jour de la base de données.
    C'est la commande HModifieStructure ou l'utilitaire WDModfic qui permet de le faire.

    Les exe peuvent implémenter des mécanismes de mise a jour de la base du coup, mais ils doivent tous utiliser la même et c'est là que c'est délicat.

    Déjà dans ton cas, taper une base de production quand on est en test....euh nan. Dupliques la base en prod sur ton PC et effectivement avec un fichier INI arranges toi pour changer dynamiquement la connexion dans ton code.
    Astuce: rajoute dans le code un morceau qui t'averti si tu es en mode de test et que tu tentes de te connecter à la base en prod car dans le ini le booléen connexion_test a été mis a zéro par exemple...ca m'a sauvé de grosses bourdes.

    Tu testes toutes tes modifs sur ton pc et quand c'est bon tu peux utiliser le système de la SDD (Synchronisation des Données Déployées) pour mettre à jour le serveur de prod, et diffuser ensuite l'exe (a la main, ou par le système de maj de windev)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion d'une application à une BDD Distante
    Par lyesboys dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 14/12/2012, 08h51
  2. transfert de fichier à partir d'un serveur BDD distant
    Par Mustang.ensi dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 29/11/2010, 11h52
  3. Réponses: 10
    Dernier message: 29/06/2010, 11h03
  4. Client/Serveur en Local sans connexion réseau
    Par ramoud dans le forum C++Builder
    Réponses: 8
    Dernier message: 05/07/2007, 14h44
  5. [Connexion]Se connecter a une bdd distante
    Par jpeg1st dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 22/02/2007, 16h36

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