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 :

Questions lenteurs SQL [WD16]


Sujet :

WinDev

  1. #61
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Les ordres SQL* genre SQLExec sont juste un lien vers ton SGBD, tout ce que peux exécuter par ton SGBD peut l'être via SQLExec je pense.
    Pour se connecter, il y a juste à utiliser SQLConnecte et c'est parti.

    Par contre, HCréationSiInexistant ne fonctionnera plus ? Il faut que je crée mes tables SQL avec les fonctions SQL* ?
    Le cas typique d'une utilisation de fonctions WinDev qui perturbe les gens...
    Tu peux faire tout ce que tu veux. Est-ce qu'il y a un interet à ce que la création de ta BdD soit dans ton programme ?

    Quand je développe une application, j'étudie le modèle de la base de données que je crée directement via SQL Server et ensuite je l'utilise dans mon application. Je n'utilise pas du tout l'analyse de WinDev alors que j'ai un éditeur 100 fois plus adapté fournis avec SQL Server.

    Pour moi, la séparation Application / Base de données est importante.

    Pour finir, je reprécise que tout ce que je dis est MA vision des choses et que c'est pas la seule et encore moins la meilleure.

  2. #62
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Je souhaite effectivement que l’utilisateur puisse faire le maximum de choses sans mon action car c'est une application commercial.

    Mais bon, je présume qu'il faut dans ce cas faire comme ci, c’était une base d'un site Internet et qu'il faut tout créer avec des CREATE TABLE. Ce n'est pas si gênant que cela si je gagne en puissance et efficacité de l'autre coté

  3. #63
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Comme je t'ai dis avant, utiliser une base non HFSQL implique seulement de faire les choses manuellement.
    un HCréationSiInexistant n'est rien d'autre qu'un test si une table existe et une création dans le cas contraire... bref, rien de bien compliqué en SQL.

    Par contre, ca m’intéresse une application commerciale où le client peut créer des tables...
    Tu peux donner un cas d'utilisation ?
    Le client a aussi le code pour programmer l'utilisation de cette table ?

  4. #64
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Pour mon cas, j'ai un installateur fait sous InnoSetup qui copie les fichiers nécessaire selon l'install choisie : Serveur / Poste client / Poste monoposte.

    Et donc dans cet installateur, j'automatise "un peu" l'installation du serveur HFSQL, car par contre il faut créer à la main la BDD dans le Centre de Controle (je n'ai pas trouver de fonction le faisant par programmation) et c'est juste au moment de se connecté à la base dans l'appli que je fais un HCreationSiInexistant... Voila

  5. #65
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir,

    Citation Envoyé par WDKyle Voir le message
    Je conçois que récupérer 10 000 enregistrements c'est beaucoup mais j'ai besoin que l'utilisateur fasse des recherches, filtres sur les auditeurs et donc il à besoin de tout le contenu dans la table ...? Ma fenêtre de base est assez grande avec des ancrages, la table prend la plus grande partie de la fenêtre si je ne met rien dans cette table cela ne sera pas très esthétique...
    Nous ne connaissons pas la finalité ni l'organisation de votre application, mais votre utilisateur n'est quand même pas comme certains conducteurs qui doivent savoir que leur voiture a des chevaux sous le capot...
    Faut-il vraiment qu'il aie ses 10.000 auditeurs juste derrière l'écran, à portée de clic, pour pouvoir décider qu'il va se pencher sur telle tranche d'âge, ou sur les auditeurs de telle région / pays, ou sur les femmes plutôt que sur les hommes ?

    Vous pourriez imaginer qu'il effectue ses sélections principales avant de lancer la requête et là, miracle !
    Miracle, puisqu'il peut tout de suite "agir" en posant ses choix et qu'ensuite, non seulement il recevra ses résultats plus rapidement puisque sélectionnés, mais il aura sans doute en sus l'impression de réactivité et de vitesse que vous souhaitez donner.
    D'autre part, ayant sélectionné des critères, il acceptera que la machine fasse le travail que LUI lui aura demandé.

    Quant à l'esthétique, il me semble que vous vous égarez : une sélection ramènera 2 fiches tandis qu'une autre en ramènera plusieurs écrans.
    Et si non, il vous restera à être créatif puisqu'il s'agit d’esthétique !

    Vous êtes disposé à changer de SGBD. Vous pourriez peut-être vous y retrouver à moindres frais en réorganisant votre manière d'envisager votre application.

  6. #66
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonsoir,

    Je vais revoir un peu l'architexture de l'application mais je viens de faire un test avec une connexion à SQL Server Express en OLE DB et c'est vraiment bluffant ! 1.2 sec pour lister dans ma table les 10 000 enregistrements avec TableAjouteLigne !

    Par contre, il n'y a pas moyen avec les fonctions SQL* de lié la table en fichier ?

    Merci

  7. #67
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par WDKyle Voir le message
    Par contre, il n'y a pas moyen avec les fonctions SQL* de lié la table en fichier ?
    Réponse simple mais claire : non

    Par contre l'accès OLEDB tu peux aussi utiliser les ordres H..., les tables fichiers, ... ça fonctionne
    Moi je préfère éviter mais c'est un choix personnel

    Une page récap de types d'accès : ICI

  8. #68
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Citation Envoyé par WDKyle
    Je vais revoir un peu l'architexture de l'application mais je viens de faire un test avec une connexion à SQL Server Express en OLE DB et c'est vraiment bluffant ! 1.2 sec pour lister dans ma table les 10 000 enregistrements avec TableAjouteLigne !
    Et oui, SQL Server express c'est pas HFSQL...
    SQL Server Express = SQL Server niveau performance. Il y a juste quelques restrictions qui n'affectent pas du tout les petites configurations.

    Si tu veux revenirs aux fichiers de l'analyse + fonctions H*, fait bien un test de performance pour comparer SQL* et H*.
    Il faut bien comprendre que les ordres SQL* sont un accès strict aux données alors que les fonctions H* et l'analyse font d'autres traitements intermédiaires pour facilité la tâche du développeur.

    Comme le dis hpascal : moi je préfère éviter

  9. #69
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonsoir,

    Bon je pars sur du SQL* mais petite question !

    Comment lire le premier enregistrement d'une requête comme avec HLitPremier svp ?

    Je souhaite faire une action particulière si il y a un enregistrement de lu sinon faire une autre action.

    Merci

  10. #70
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonsoir

    Avec SQLPremier par exemple

    Ou SQLAvance selon la méthode choisie


  11. #71
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut Les différents types d'accès aux données
    J'avais jamais essayé les fonctions SQLPremier/SQLSuivant/SQL.NbLig, c'est super interessant !
    C'est quoi la différence entre un parcours SQLPremier/SQLSuivant et un parcours SQLAvance ?

    Autre question : c'est quoi la différence entre une connexion en OLEDB et ODBC ? Laquelle est la plus performante ?
    Moi j'utilise ODBC pour le moment, mais j'y connais rien
    OLEDB n'a pas besoin de source de données si je comprend bien ?

  12. #72
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Les différences entre les deux modes de parcours sont dans l'aide en ligne .

    Il y a des avantages et des inconvénients pour les deux types de parcours.

    Tatayo.

  13. #73
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Ok donc, si je comprend bien l'aide, il vaut mieux utiliser SQLAvance pour éviter les problèmes, mais l'autre méthode offre plus de fonctionnalité (nombre de ligne, parcours avant/arriere, et autres infos).
    Ca me rappelle presque les méthode H*

    Pour mes questions OLEDB/ODBC, j'ai eu ma réponse .
    Donc vaut mieux utiliser ODBC. Performances meilleures / OLEDB est déprécié maintenant.

  14. #74
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonjour,

    Par contre avec ODBC, il faut renseigner une sources de données dans la panneau de configuration du pc voulant se connecter à la base ?

    Pour l'instant, je suis en OLE DB, ça fonctionne bien mais si la performance est encore accru en ODBC je suis preneur !

    Par contre avec SQLConnect, ils demande un Provider OLE DB donc on reste en OLE DB avec cette fonction ?

    Merci

  15. #75
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Avec ODBC, à ma connaissance, il faut bien créer une source de données.
    Si tu te connectes en ODBC, tu peux écrire SQLConnecte comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gnIdConnexion = SQLConnecte("ODBCName", "User", "Password", "BdD", "ODBC")
    Pour OLE DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gnIdConnexion = SQLConnecte("SERVERSQL", "User", "Password", "BdD", "OLEDB", "SQLOLEDB")

  16. #76
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Je vais faire des tests alors

    EDIT : Je viens de tester mais cela ne fonctionne pas chez moi J'ai le code d'erreur 00000.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI SQLConnecte("RU_SQL", "sa", "XXXXXXX", "RU-Gestion-Auditeurs", "ODBC") = 0 ALORS
    	SQLInfoGene()
    	Erreur(SQL.Erreur)
    FIN
    Il y a quelques choses à configurer dans SQL Server ?

    Dans l'administrateur de sources de données, tout fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Pilote ODBC de Microsoft SQL Server Version 06.01.7601
     
    Exécution des tests de connectivité...
     
    Tentative de connexion
    Connexion établie
    Vérification de la configuration des options
    Déconnexion du serveur
     
    TESTS EFFECTUÉS AVEC SUCCÈS.

  17. #77
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    T'as bien créé ton "DSN" dans l'onglet User DSN ? Si oui, essaye dans System DSN...
    RU_SQL est bien le nom de ce DSN ?
    Le compte "sa" a bien accès à la base ? (j'imagine que oui )

  18. #78
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Ah j'ai créer dans Sources de données systèmes, mais pas dans sources de données utilisateur.

    J'essai !

    EDIT : Bingo ! Donc c'est dans sources de données utilisateur et non systeme qu'il faut créer la sources ?

  19. #79
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    De mon côté toutes les sources de donnée sont créées au niveau système, et non utilisateur.

    Tatayo.

  20. #80
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Citation Envoyé par tatayo Voir le message
    De mon côté toutes les sources de donnée sont créées au niveau système, et non utilisateur.

    Tatayo.
    Ah... En système ca ne marche pas chez moi... bizarre alors !

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

Discussions similaires

  1. question su sql server 2005 express edition
    Par nass06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/04/2006, 20h15
  2. [MySQL] Questions include + sql
    Par Kerweb dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/02/2006, 10h01
  3. Question sur sql et ASP
    Par claralavraie dans le forum ASP
    Réponses: 5
    Dernier message: 23/12/2005, 11h41
  4. Quelques questions sur SQL Server 2000
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h39
  5. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48

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