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

Requêtes et SQL. Discussion :

lenteur listes déroulantes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 13
    Points
    13
    Par défaut lenteur listes déroulantes
    Bonjour !!

    Configuration :
    Access 2007 (front)
    SQL serveur 2005 (Back)
    Connection ODBC

    J'utilise dans un formulaire des listes déroulantes pour sélectionner la ligne voulu et afficher le détail en dessous.
    J'ai environ 10 000 données qui doivent être filtrées suivant des critères pour arrivée à environ 3000 données qui alimentent ces listes déroulantes.
    Le problème c,est que la sélection et l'excecution met beaucoup trop de temps au point de faire planter le logiciel parfois.
    J'ai même testé les "views" de SQL serveur pour excécuter les requêtes depuis le serveur en vain....

    Avez-vous une idée pour remédier à ca ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    As-tu beaucoup de jointures ?

    Si les enregistrements de tes sources sont toujours les mêmes ou varient peu, tu pourrais peut-être considérer d'en faire des tables soit dans Access soit dans MS-SQL Server.

    Regarde aussi les requêtes 'SQL Direct' qui te permettent de faire exécuter du SQL natif MS-SQL Server par MS-SQL Server à partir de Access.

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 13
    Points
    13
    Par défaut lenteur listes déroulantes
    Merci pour ta réponse si rapide.

    J'ai effectué des "views" dans SQL serveur avec tous les filtres, de la linker à access (ODBC) et d'alimenter la liste déroulante mais sans succès.
    En gros la view te sert comme de table dans access.


    Est-ce que ce dont tu parles est le même principe ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Non, je parle d'objet non dynamique pour qu'il n'y a pas de recalcule à chaque fois. Si je ne me trompe pas une vue MS-SQL c'est comme une requête Access sauf que c'est MS-SQL qui fait le travail.

    En Oracle, il existe des vues matérialisées. Ce sont des requêtes spéciales qui générent une table et c'est cette table qui utilisée comme source de données et comme c'est une table la réponse est presque instantannée.

    Autre piste, travailler avec un sous-ensemble de tes données (par exemple, si ce sont des noms : tous les noms qui commence par "M") ce qui réduit le nombre d'élément dans ta liste déroulante.

    A+

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous,

    Je me permets de m'immiscer sur un point particulier :
    Citation Envoyé par Marot_r
    Si je ne me trompe pas une vue MS-SQL c'est comme une requête Access sauf que c'est MS-SQL qui fait le travail.
    ==> eh non !... si je ne m'abuse. Une vue SQL est sous forme de requête mais tenue à jour en temps réel. Une vue fonctionne comme une table : elle est, d'ailleurs, présentée comme telle dans les tables liées Access. En clair, elle ne lance pas toute l'artillerie d'une requête quand tu veux accéder à ses données : c'est cela, la "puissance" d'une vue.

    En aparté, je trouve que le terme "vue" est très bien choisi : il induit qu'il n'y a pas, réellement, de traitement lors de l'accès, juste une "vue" de l'état actuel.

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Citation Envoyé par Richard_35 Voir le message
    elle est, d'ailleurs, présentée comme telle dans les tables liées Access.
    Si vous passez par les tables liées vous perdez le bénéfice, en effet, dans ce cas il me semble que vous demandez au serveur un traitement en SELECT * (De toutes les tables de votre FROM) au lieu de traiter uniquement les données qui vous intéressent.


  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Chtulus,

    Citation Envoyé par Chtulus
    .../... dans ce cas il me semble que vous demandez au serveur un traitement en SELECT * .../...
    ==> ce serait bien que nous ayons une certitude. Il me semble, en effet, qu'il s'agit d'une question fondamentale, pour ceux qui utilisent les tables SQL Server en tables liées dans Access.

    Ce serait dommage que SQL Server déclenche la requête à chaque appel de la vue... toute la puissance du concept tomberait à l'eau...

    Un test sur une vue complexe serait nécessaire... mais peu de temps, en ce moment.

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Je n'ai pas remis en cause l'utilisation de vues, au contraire.

    Mais si vous utilisez ces vues comme les tables liées, cela ne servira à rien (Enfin si mais pas dans ce cas présent).

    Attaquez directement le Serveur...

    Pour faire simple, une requête/vue avec une jointure simple sur 2 tables:

    - Liées :

    Envois 2 SELECT * au serveur. Il mouline, vous renvoit le tout (SELECT * FROM table1 et SELECT * FROM table 2) et Access finit le boulot (Jointures + Condition WHERE).

    - Non liées :

    Envois le texte de la requête. Mouline, et renvois à Access la partie des données qui vous intéressent (Colonne(s) du SELECT + Lignes correspondantes au(x) filtre(s) du WHERE).


  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Chtulus,

    Alors l'intérêt des vues est largement amoindri... dommage.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Points : 13
    Points
    13
    Par défaut lenteur listes déroulantes
    Hello !

    Je pense avoir trouvé une solution :

    Mettre dans la source du formulaire les tables au complet ("*") sans condition (sans WHERE)
    Dans chaque liste déroulante mettre la requête que l'on veut.

    Ca va apparemment beaucoup plus vite et mon formulaire ne plante plus.

Discussions similaires

  1. Lenteur de formulaires avec listes déroulantes
    Par olese dans le forum InfoPath
    Réponses: 1
    Dernier message: 27/08/2007, 08h25
  2. Liste déroulante et code postal (Lenteur)
    Par x0249 dans le forum IHM
    Réponses: 11
    Dernier message: 15/05/2007, 18h06
  3. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01
  4. liste déroulante en ASP vbscript
    Par leeloo076 dans le forum ASP
    Réponses: 9
    Dernier message: 17/03/2004, 16h42
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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