L'importation de vs en les reliant à des feuilles de calcul Excel
J'ai actuellement un lien à une demi-douzaine de feuilles de calcul Excel, principalement parce que c'est plus facile/mieux pour les utilisateurs de modifier les données dans Excel (ils n'ont jamais utilisé d'Accès), et aussi toutes les modifications sont répercutées immédiatement, y compris si une nouvelle colonne est ajoutée, qui est alors prêt pour l'utilisation par des questions tout de suite.
Mais est-il des performances de la liaison au lieu de l'importation de ces données? Certaines de mes questions sont lents, 1-2 minutes, et parfois, il peut prendre de 2 à 3 minutes seulement pour ENREGISTRER une requête. Comment puis-je configurer l'Accès à importer une nouvelle version de ces feuilles à chaque fois que la base de données est ouverte, et ça vaut le coup?
- Ce n'est pas vraiment une bonne multi-utilisateur le programme d'installation, vous ne voulez pas que les utilisateurs soient capables de modifier les structures de l'e.g ajout/suppression de colonnes. Je ne suis pas sûr de votre arrière-plan/niveau de connaissances au sein d'accès mais je favoriserais le stockage de toutes les tables dans l'accès et le développement du front-end écrans pour vos utilisateurs à l'interface avec les données, est-ce une option pour vous?
- Pour la taille du système et comment il sera utilisé c'est pas la peine d'en développement front-end des écrans. Je pense que si je peux mettre en place une macro pour importer les feuilles de calcul à chaque fois que la base de données est ouverte, et de verrouiller les feuilles de calcul, de sorte que seulement je pouvais ajouter des colonnes supplémentaires, ce serait un bon équilibre.
- Mais suis-je redudcing performance bien par un lien vers une feuille de calcul, plutôt que d'avoir des données s'asseoir dans une table Access?
- Avez-vous testé les performances d'importation de feuilles de calcul? Ma réaction instinctive est qu'il sera beaucoup plus rapide en fonction de la taille des feuilles de calcul. Ce serait intéressant de regarder.
- L'importation de feuilles de calcul pour l'Accès n'est pas certain pour améliorer les performances, tant que les feuilles de calcul sont bien structurée, comme une table de base de données, ne contiennent pas trop de données, et ne sont pas sur un espace partagé avec la lenteur des temps d'accès. Alors ils devraient fournir une performance adéquate. Toutefois, si l'une des requêtes bénéficier de Indexation certaines colonnes, alors vous serait en effet d'avoir à l'importation, comme je ne pense pas que vous pouvez définir des indices liés feuilles de calcul.
- Copier/coller les tables liées comme les tables locales, et il n'y a pas de ralentissement à tout - le plus lent de la requête est d'environ 10 secondes, même à l'aide de 3 niveaux de sous-requêtes et de l'épargne prend 5 secondes maximum. Donc, les tables locales sont le chemin à parcourir. Je vais avoir besoin d'une importation de macro qui s'exécute chaque fois que la base de données est ouverte - soit à l'aide de l'importation de spécifications (qui, malheureusement, ne peuvent pas être modifiés) ou une macro Transférerfeuillecalcul action. Merci pour les conseils, la chance, et n'oubliez pas que vous pouvez regarder les étoiles sans être dans le caniveau.
Vous devez vous connecter pour publier un commentaire.
Il y a 4 facteurs qui viennent immédiatement à l'esprit au sujet de la performance de ces feuilles de calcul:
Étant donné que l'enregistrement des requêtes est souvent lent, ma conjecture est n ° 1 est votre principal goulot d'étranglement. Oui il y a un petit gain de performance pour l'utilisation des liens plutôt que de les importer, mais votre cas d'utilisation (petit jeu de données, pas trop de liens) serait de rendre cette peine très petit. Un réseau lent, d'autre part, de ralentir toutes les opérations, y compris l'enregistrement des modifications de la base de données Access lui-même.
Je vais mettre la solution que j'ai fini avec, comme il est à peu près résolu le problème, j'ai eu ci-dessus, y compris automatiquement mise à jour des données:
L'Accès effectif des tables pour une utilisation avec des requêtes, par exemple tblStoreDetails, tblPromotions
Toujours utiliser des feuilles de calcul à conserver les données, car c'est le moyen le plus souple de la mise à jour de l'affichage de ces choses sans les formes de bâtiments/frontal dans l'Accès, ce qui ne serait pas vraiment la peine le temps que personne ne va utiliser la base de données directement.
Lien vers ces tables dans Access, par exemple excelStoreDetails, excelPromotions
Configurer une macro Autoexec qui s'exécute au démarrage (en supposant que le bouton activer les macros est cliqué) avec une requête Suppression pour vider les tables d'Accès, et une requête ajout pour ajouter les lignes de la liés tableaux Excel pour les tables d'Accès.
Cela permet de contourner les problèmes causés par la suppression/réimportation des tables, surtout qu'ils finissent dans le non attribuées groupe d'Objets, ou essayer d'utiliser l'importation de spécifications et de se retrouver avec des différences de type.
Vous pouvez vous connecter à un fichier excel via une connexion ADODB et de l'ouvrir dans un ADODB.jeu d'enregistrements. C'est très très rapide. En fait, il peut être aussi rapide qu'une connexion à un "réel" de la base de données.
La possibilité de mettre en œuvre une telle solution dépendra de votre capacité à "traduire" vos requêtes dans les jeux d'enregistrements. Vous aurez besoin d'une bonne connaissance de VBA et de la ADODB objets, comme myou devront écrire le code pour générer le jeu d'enregistrements, puis l'affichage de leur contenu sur l'écran (ou dans un rapport).