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 :

Base de données en ligne


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 152
    Par défaut Base de données en ligne
    Bonjour à toutes et à tous

    J'ai conçu une application WinDev 25 qui fonctionne parfait lorsque je l'installe avec une base de données soit en monoposte soit en HFSQL Client/serveur.
    Par contre lorsque je me connecte avec une base de données en ligne (Kalanda dans mon cas ici), tout devient exagérément lent lors de l'exécution de toutes les taches à commencer par l'ouverture de la fenêtre login du groupware utilisateur.
    Je me demande si ca ne serait l'utilisateur du groupware utilisateur ou encore l'utilisation certaine fois de la fonction "hlitrecherche" (il y en a très peu) qui pourrait être à la base de cette lenteur.
    voici quelques éléments à vous montrer:

    1 - Configuration de mon groupware utilisateur

    Nom : gpw.png
Affichages : 99
Taille : 42,5 Ko

    2 - Connexion à la base de données dans une procédure globale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	MaconnexionCloud est une Connexion
    	MaconnexionCloud..Serveur		= "assurisk-civ.com"
    	MaconnexionCloud..BaseDeDonnées	= "assurisk-04"
    	MaconnexionCloud..Utilisateur	= "assurisk"
    	MaconnexionCloud..MotDePasse	= "xxxxxxxxxxxxxxxxx"
    	MaconnexionCloud..Cryptage		= hCryptageRC5_16
    	MaconnexionCloud..Provider		= hAccèsHFClientServeur
    	// Affectation de la connexion à tous les fichiers de données
     
    	HChangeConnexion("*",MaconnexionCloud)
    	// Ouverture de la connexion
    	HOuvreConnexion(MaconnexionCloud)
    	// Création des fichiers de données
    	HCréationSiInexistant("*")
    J'ai besoin s'il vous plait de vos observations et vos conseils pour résoudre ce problème de lenteur
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 930
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Les raisons d'une lenteur d'une appli en réseau sont multiples. Les principales sont
    1-La qualité du RSO
    2-L'utilisation de boucles à la place de requêtes. Dans une boucle, à chaque itération, il y a un aller-retour du client vers le serveur alors qu'avec une requête, il n'y a qu'un seul A-R. Je compare souvent ces deux méthode à quelqu'un qui fait ses course.
    Boucle
    J'ouvre le placard, il me maque du sel, je vais acheter le sel, je range le sel.
    J'ouvre le placard, il me manque de l'huile, je vais acheter l'huile, je range l'huile.
    etc...
    et on y passe la journée
    Requête
    J'ouvre mes placards
    Je note ce qui me manque
    Je vais acheter ce qui me manque
    On y passe qu'une heure ou deux.

    Si on remplit un champ table par programmation avec HLitRecherchePremier/HLitSuivant au lieu de le lier à une requête ou un tableau de classe, ça peut devenir rapidement catastrophique au niveau du temps d'exécution.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 497
    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 497
    Par défaut
    Bonjour,

    En plus de la remarque de voroltinquo, j'ajouterais que je ferais ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Si PAS HOuvreConnexion(MaconnexionCloud) ALORS
    	//Traitement de l'erreur
    	Retour
    FIN
    Si PAS HChangeConnexion("*",MaconnexionCloud)ALORS
    	//Traitement de l'erreur
    	Retour
    FIN
    gbFichiersDéjàCréés = IniLit("Param", "FichiersCréés", faux, sCheminEtNomFichierIni)
    Si PAS gbFichiersDéjàCréés ALORS
    	HCréationSiInexistant("*")
    	IniEcrit("Param", "FichiersCréés", gbFichiersDéjàCréés, sCheminEtNomFichierIni)
    FIN
    1. Je traite les erreurs
    2. J'ouvre déjà la connexion avant de faire le changement pour les fichiers
    3. Je ne fais une création que si j'ai besoin de le faire. Généralement, on le fait à la première ouverture du programme, puis plus jamais (ou presque). Cette fonction peut être lente. D'autant plus qu'il y a beaucoup de fichiers (et que la connexion est lente).
    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

  4. #4
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 930
    Billets dans le blog
    1
    Par défaut
    HOuvreConnexion doit toujours être utilisé en dernier cf Optimiser les temps de connexion aux bases HFSQL Client/Serveur
    Par ailleurs, si on ne travaille que sur une seule connexion, il est inutile d'utiliser HChangeConnexion.
    En ce qui concerne le HCréationSiInexistant, l'administrateur a normalement créé les tables, surtout en cas d'évolution de l'appli qui amène à ajouter des tables. Dans ce cas, le booléen est à vrai mais il ne prend pas en compte les nouvelles tables.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  5. #5
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 091
    Par défaut
    Bonsoir,

    Avec WD55 je remplace HCréationSiInexistant par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    H.ErrIgnore = Vrai
    HOuvre(NomFich)
    H.ErrIgnore = Faux
    si H.Erreur = 3 alors HCreation(NomFich)
    S'il y a beaucoup de fichiers la différence est spectaculaire !

    A adapter et tester sur les nouvelles versions ...

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 497
    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 497
    Par défaut
    @voroltinquo merci pour l'astuce sur l'ordre des instructions.
    Concernant la présence du HChangeconnexion(), j'ai eu plusieurs fois des déconvenues concernant l'emplacement des fichiers. Maintenant, je la mets toujours (et maintenant, je le mettrais avant d'ouvrir la connexion )
    Concernant les ajouts de tables, c'est l'intérêt de ce genre de méthode : lorsqu'il y a évolution de la bdd, un module d'init doit être fait. c'est lui qui va mettre à faux le booléen. Dans mon exemple, je les ai enchaînés pour plus de lisibilité. La lecture / modification de ce paramètre doit être faite en amont.

    @serendib, je pense que ton code serait maintenant qq chose du genre (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si PAS HOuvre(NomFich) _ET_ HErreurInfo(hErrCode) = 3 ALORS HCreation(NomFich)
    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

  7. #7
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 091
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    @serendib, je pense que ton code serait maintenant qq chose du genre (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si PAS HOuvre(NomFich) _ET_ HErreurInfo(hErrCode) = 3 ALORS HCreation(NomFich)
    Vous n'avez plus qu'à tester

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 152
    Par défaut
    J'ai suivi avec beaucoup d'attention et d'intérêt toutes vos remarques, elles sont vraiment pertinentes.
    je vais :
    - transformer toutes mes fonctions hlitrecherche en requête
    - modifier la procédure de connexion au cloud
    et encore...
    merci pour toutes ces remarques.

Discussions similaires

  1. [vb.net]supprimer une ligne d'une base de donné
    Par progfann dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/07/2007, 20h52
  2. ajoute d'une ligne dans une base de donnes
    Par anisj1m dans le forum JDBC
    Réponses: 5
    Dernier message: 19/03/2007, 19h35
  3. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  4. [Tomcat][Oracle] connexion base de donnes debutant....
    Par yogz dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 16/07/2004, 13h32
  5. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22

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