2009-04-07 5 views
2

J'ai un xls avec un tableau croisé dynamique en utilisant un proc pour le peupler.La table de requête Excel fonctionne toujours après la suppression du fichier DSN, comment cela est-il possible?

J'ai supprimé la connexion de données dans 'admin tools - odbc - file DSN' et cela fonctionne toujours, comment est-ce possible? Cela signifie-t-il que le bénéficiaire ne doit pas avoir le fichier DSN présent pour voir les données dans le tableau croisé dynamique?

Répondre

2

Cela est possible parce que lorsque vous utilisez le DSN fichier, Excel lit le contenu du fichier, qui a essentiellement toutes les entrées pour construire la chaîne de connexion au fournisseur de données à l'extérieur. Ensuite, Excel construira la chaîne de connexion et l'utilisera pour remplir le QueryTable. Ainsi, une fois que vous avez actualisé avec succès le QueryTable pour la première fois, vous n'avez plus besoin de ce fichier DSN. Cela fonctionnera donc après que vous l'ayez supprimé ou dans la machine de quelqu'un d'autre sans ce DSN. Sur une note de côté lorsque vous utilisez le fichier DSN dans un QueryTable et plus tard si vous mettez à jour le FileDSN (disons à une nouvelle base de données ou quelque chose comme ça) votre rafraîchissement QueryTable ne reflète pas ce changement, vous devez reconstruire le QueryTable .

+0

Cela est bon à savoir car nous cherchons à paramétrer la chaîne de connexion à des fins de construction. Est la seule solution à cela pour rendre la connexion sans DSN? C'est-à-dire que la connexion est faite dynamiquement dans VBA, disons un événement Open Workbook? –

+0

Vous pouvez, et c'est juste une question de manipulation de chaîne. Mais avoir une chaîne de connexion dynamique a aussi ses inconvénients. Si, à l'avenir, vos propriétés de fournisseur de données (serveur, port ou pilote, etc.) changent, vous devez également mettre à jour notre code. – Adarsha

+0

Nous avons couvert ce problème: nous utilisons des scripts nAnt pour toutes nos générations, dont l'une utilisera la bibliothèque DSOleFile pour mettre à jour les propriétés de fichier personnalisées. Le code VBA récupèrera le nom du serveur, etc. à partir des propriétés du fichier personnalisé. Donc, si nous voulons 2 créer une build pour dev/test, nous pouvons simplement modifier le fichier 1 cfg –

0

lorsque vous créez une table pivotante une fois, par la suite ce fichier .xls fonctionnera indépendamment dans votre disque dur. Donc, il ne nécessite pas de DSN en outre.

+0

mais comment est-il possible que si j'envoie le xls à quelqu'un d'autre (qui n'a pas le DSN) ou supprime mon propre DSN cela fonctionne toujours. Cela n'a pas de sens. Soit il utilise le DSN ou pas, sinon, comment est-il stocker la connexion, si c'est le cas, comment ça marche quand la connexion est supprimée? –

0

La table de tableau croisé dynamique conserve derrière elle un cache de données de tableau croisé dynamique. Vous pouvez manipuler ces données comme vous le souhaitez, mais elles ne seront pas rafraîchies, évidemment, jusqu'à ce que vous vous reconnectiez.

Stan Scott

+0

Je l'ai envoyé à quelqu'un qui n'a pas le fichier DSN et ils ont actualisé avec succès le tableau croisé dynamique sans erreurs. Que se passe-t-il? Comment ça marche? –

+0

Adarsha a la réponse. La première fois que la requête est exécutée, le DSN est lu et les informations sont utilisées pour établir une connexion et lire les données. Toutefois, la deuxième fois que la requête est exécutée, la requête a DÉJÀ les informations dont elle a besoin pour établir la connexion - cela fait partie des informations qu'elle conserve. –

Questions connexes