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 :

Créer l'objet connexion à la BD au lancement de l'application Windev [WD17]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Créer l'objet connexion à la BD au lancement de l'application Windev
    Bonjour,

    afin de rendre mon appli paramétrable au niveau de la connexion au SGBD (ce sera toujours du SQL Server), je voudrais qu'au lancement de mon appli un fichier .ini soit consulté pour y récupérer les paramètre de création de l'object Connexion utilisé dans toute l'application.

    Et si ce fichier .ini est absent ou que la création de l'objet Connexion échoue, alors ça me redirige automatiquement vers une fenêtre de config de la connexion, laquelle servira à créer un fichier .ini cohérent, ainsi qu'un objet Connexion qui fonctionne.

    Comment faire cela ?

    Dans l'AGL WinDev, à la création de mon projet, j'ai du définir un objet Connexion que j'appelé Cnx, et qui est utilisé partout dès qu'on doit interagir avec les objets de l'analyse.... Dans tous mes HExecute, etc... Mais ce "Cnx" est paramétré en "dur" dans mon projet, hors je veux qu'il soit modifiable à souhait depuis mon appli...

    Merci d'avance
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  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

    Ta variable connexion a des propriétés (..Serveur, ..Uutilisateur etc ...) Page d'aide

    Tu alimentes ces propriétés à partir de ton .INI au début de ton projet

    Si j'ai bien compris ta demande ...

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    dans l’éditeur de code du projet tu peu faire c que tu veux.
    avant le lancement de la fenêtre principal

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Je teste tout ça et je vous redis.

    Merci à vous

    PS : quand je crée un sujet, bien que la coche "S'abonner à la discussion et me notifier les modifications" soit bien activée, je ne reçois aucun mail quand il y a une réponse. Ce n'est pas non plus dans mes indésirables, je ne reçois plus rien depuis le changement de look du forum. Normal ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  5. #5
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    C'est parfait tout ça.

    J'ai créé une fenêtre FEN_INI en première fenêtre de mon projet, invisible par défaut, qui lit le fichier ini et teste la connexion. Si ok, alors j'ouvre mon ihm principale, sinon je rends visible FEN_INI qui est un bête formulaire de paramétrage de la connexion au serveur de base de données.

    C'est donc résolu, merci
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Personnellement je n'aime pas trop les fenêtres transparentes... je préfère avoir du code en init du projet et éventuellement appeler une fenêtre de paramètrage, de sauvegarde, de licence.... avant ma première fenêtre du projet si nécessaire. Mais c'est juste une question d'organisation du code !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  7. #7
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    J'irais plus loin dans le sens de Michel en n'exécutant ces initialisation que dans une fenêtre dédiée à l'ouverture.
    En effet, avec les années, l'initialisation de projet s'allourdi de fonctionnalité et il n'y a pas d'espace utilisateur pour indiquer la progression cas la première fenêtre du projet n'étant ouverte, l'OS ne détecte pas vraiment l'application dans les tâches... ce qui peut être fâcheux en cas de problème... et il y en a toujours au moins à ce stade.

  8. #8
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Oui mais si c'est une fenêtre dédiée, à l'ouverture, c'est qu'il s'agit de ma fenêtre principale de mon projet ?

    C'est donc bien ce que j'ai fait, ou alors j'ai mal compris vos propos. J'ai mis ma fenêtre INI en fenêtre principale et en invisible par défaut (et je la rends éventuellement visible si Cnx KO), parce que je me suis aperçu qu'en la laissant visible, ça laisse la possibilité à l'utilisateur de la fermer, et lorsqu'on ferme la fenêtre définie comme principale dans le projet WinDev, hé bien ça a comme conséquence de fermer l'ensemble du projet, et donc aussi ma fenêtre IHM qui doit rester ouverte !


    Sinon, comment faire ?

    Proposition que je n'ai pas testé : Je rétablis ma fenêtre ihm en fenêtre principale, et à l'ouverture de celle-ci, j'initialise mon objet Cnx en lisant mon fichier INI. Si la connexion ne fonctionne pas, alors seulement j'ouvre une fenêtre de paramétrage ? Mais je dois faire en sorte que cette fenêtre de paramétrage soit bloquante tant que l'objet Cnx n'est pas paramétré comme il faut, sinon je ne peux pas envisager un retour sur ma fenêtre ihm... Ou alors le bouton "Annuler" ou la croix, conduisent nécessairement à la fermeture de toute mon appli...
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  9. #9
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour
    si c'est une fenêtre dédiée, à l'ouverture, c'est qu'il s'agit de ma fenêtre principale de mon projet ?
    En bien non ! L'initialisation de la fenêtre principale peut ouvrir une autre fenêtre se poursuivre (littéralement, j'entends la ligne de code) quand ladite fenêtre est fermée.
    Si vous encadrez cela d'une clause de condition, la fenêtre de configuration n'apparaitra que si nécessaire.
    Autre avantage : vous réutilisez cette fenêtre depuis votre paramétrage normal.

    Pour les puristes, il est aussi possible de ne faire cela qu'à l'affichage de la fenêtre principal, il suffit alors d'utiliser booléen pour contrôler le premier affichage. Cette petite subtilité permet juste de s'assurer que la configuration apparaitra sur la fenêtre principale.

  10. #10
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour R&B et merci pour votre réponse, je l'ai relue 3 fois mais avec toute la meilleure volonté je n'arrive pas à comprendre.

    Est-ce que vous pourriez svp m'illustrer votre procédé avec un exemple, des fenêtre nommées, et laquelle contient quoi. Ainsi que le code, même grossier, qui ferme une fenêtre pour ouvrir l'autre, sans que le projet tout entier ne se ferme complètement.

    Merci à vous
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  11. #11
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    pour ma part : je te donne la façon dont je le gère dans mes applications et qui est, je pense celle préconisée par michel.souris et R&B. Ma fenêtre principale est la fenêtre qui doit s'ouvrir en premier. Dans son code d'initialisation, je recherche les paramètres de connexion à ma base SQL (quelle base, les accréditations, le profil, ...). Lorsque j'ai trouvé et que les paramètres sont valides, je passe à l'ouverture de la fenêtre de login. L'utilisateur rentre son identifiant et mot de passe. Je vérifie si tout est bon et je ferme la fenêtre de login. Le code d'initialisation de la fenêtre principale repart là où j'avais appelé la fenêtre de login. Si les données de connexion n'existent pas, j'ouvre la fenêtre de paramétrage de cette partie. Une fois remplie cette partie, je reviens au code d'initialisation de la fenêtre. Si je ne trouve pas de paramètres de connexion et qu'ils sont non valides, je ferme tout sinon je poursuis sur le login.

    Les différences d'ouverture de fenêtre dépendent des fonctions ouvre, ouvrefille, ouvresoeur. Si tu as bien lu la doc sur l'exécution du code avant, pendant ou après le lancement de la fenêtre, ce sera facile.

    à bientôt,

    Nicolas

  12. #12
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok cette fois j'ai pijé

    Finalement c'est ce que je disais dans ma réponse de hier à 12h40 !

    J'ai tout bien fait comme ça, du coup fini la fenêtre invisible.

    Merci
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  13. #13
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    bonjour,

    obligé de rouvrir ce sujet plutôt que d'en créer un autre, en fait je voudrais tester un objet connexion à partir d'une fonction qui doit exister et servir à cela, plutôt que de passer par un HExecuteRequêteSql sur une table lambda.

    La raison : si ma config ini est correcte, et que mon serveur sql est en carafe, le HExecuteRequêteSql n'aboutit pas et il n'y a même pas de timeout qui ferait que je pourrais m'appuyer sur l'échec de l'instruction pour afficher une erreur, et éventuellement ouvrir la fenêtre de config.

    Donc ma question : comment je peux tester un objet connexion autrement qu'en faisant une requête sur une table ?

    Merci à vous
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  14. #14
    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
    Citation Envoyé par bvadam Voir le message
    Donc ma question : comment je peux tester un objet connexion autrement qu'en faisant une requête sur une table ?
    Oui, en faisant un HOuvreConnexion(TaConnexion)

  15. #15
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Merci pour ta réponse, mais je constate que ça se comporte pareil.

    Quand je place un point d'arret et que je débugge pas à pas je constate que ça bloque sur l'instruction HOuvreConnexion pendant à peu près 30 secondes.

    est-ce que je peux réduire ce timeout, en passant un paramètre ? ou procéder d'une autre manière ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  16. #16
    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
    Essaye de modifier le timeout dans la propriété ..InfosEtendues de ta connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Ici pour un timeout de 5 secondes
    TaConnexion..InfosEtendues = "Connection Timeout=5"
    Je n'ai pas vérifié, c'est juste une recherche Google

  17. #17
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok bien vu.

    Même si ça en semble pas avoir d'influence sur ma connexion sql server oledb
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  18. #18
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Fen_INI
    Bonjour, Est ce que vous pouvez me donner le source de cette fenêtre pour que je la rajoute a mon application et merci.

    Citation Envoyé par droliprane Voir le message
    C'est parfait tout ça.

    J'ai créé une fenêtre FEN_INI en première fenêtre de mon projet, invisible par défaut, qui lit le fichier ini et teste la connexion. Si ok, alors j'ouvre mon ihm principale, sinon je rends visible FEN_INI qui est un bête formulaire de paramétrage de la connexion au serveur de base de données.

    C'est donc résolu, merci

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

Discussions similaires

  1. [MySQL] Impossible de créer un objet de connexion à ma BD (erreur 500)
    Par beegees dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/07/2013, 09h34
  2. [C#] Créer des objets Winform personnalisés
    Par KibitO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 31/05/2005, 17h09
  3. [Info]Créer un objet persistent
    Par seb55555 dans le forum JDBC
    Réponses: 5
    Dernier message: 22/02/2005, 16h53
  4. [VBA ActivX] Créer un objet Name [OWC10.Spreadsheet.10]
    Par FRED.G dans le forum VBA Access
    Réponses: 12
    Dernier message: 06/07/2004, 16h29
  5. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47

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