Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 22h20   #1
Invité régulier
 
Inscription : février 2009
Messages : 13
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2009
Messages : 13
Points : 6
Points : 6
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
sindy7484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 22h34   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 466
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 466
Points : 7 544
Points : 7 544
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 22h47   #3
Invité régulier
 
Inscription : février 2009
Messages : 13
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2009
Messages : 13
Points : 6
Points : 6
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 ?
sindy7484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 20h47   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 466
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 466
Points : 7 544
Points : 7 544
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 23h24   #5
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
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.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 09h20   #6
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
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.

__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 11h43   #7
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
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.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 12h09   #8
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
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).

__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 13h03   #9
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Chtulus,

Alors l'intérêt des vues est largement amoindri... dommage.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 17h51   #10
Invité régulier
 
Inscription : février 2009
Messages : 13
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2009
Messages : 13
Points : 6
Points : 6
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.
sindy7484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h51.


 
 
 
 
Partenaires

Hébergement Web