10
votes

Comment accéder à SQLite de VBA?

J'ai un classeur Excel qui possède un code Adodb qui interroge une base de données d'accès locale. Je veux faire la même chose pour SQLite car je pense que cela donnera une meilleure performance. Comment je fais ça? Puis-je vous connecter à un fichier sqlite à l'aide de AdoDB ou ODBC?

J'ai besoin de quelque chose de simple que je puisse le déployer afin que si je puisse minimiser la configuration et l'installation inutiles, peut-être peoazle qui utilisera l'Excel n'aura pas de droits d'administration sur le PC afin qu'ils ne puissent pas installer de logiciels.


0 commentaires

5 Réponses :


2
votes

Il y a quelques dlls que vous pouvez utiliser pour accéder à une base de données SQLITE à partir de Visual Basic à l'aide de Adodb. Je pense que ici est l'info que vous recherchez. Je n'ai jamais essayé, mais le lien peut être utile pour vous.

bonne chance.


0 commentaires

2
votes

J'ai utilisé Datenhaus ' DHSQLite et ça fonctionne bien.


0 commentaires

8
votes

Face à la même question, j'ai fait une bibliothèque légère pour donner un accès direct à SQLite3 de Excel VBA. Le résultat final est une solution beaucoup plus simple, sans couche ODBC ou OLEDB / ADO intervenant, et les performances reflètent la performance de la base de données SQLITE et non celle de l'emballage opaque. C'est aussi agréable car vous n'avez besoin d'aucune inscription d'un composant COM dans le registre, vous ne copiez simplement que deux .dlls avec votre classeur et ajoutez un module .bas dans votre projet.

Un inconvénient de cette approche est que l'API n'est pas l'interface DAO ou ADO standard, vous devrez peut-être créer des emballages ou convertir une partie de votre code pour le faire fonctionner. Cela signifie également que vous avez besoin d'une certaine familiarité avec l'API SQLite pour l'utiliser, mais la documentation SQLITE est très claire.

J'ai mis une version précoce du projet sur CodePlex: SQLite pour Excel Fournit une trajectoire hautes performances aux fonctions de l'API SQLITE3, préservant la sémantique de l'appel de la bibliothèque SQLITE3 et permettant d'accéder au SQLite3.dll distribué sans recompilation.

Tous les commentaires seraient très appréciés.

mise à jour: le SQLite for Excel projet vit maintenant sur Github .


0 commentaires

3
votes

Comment accéder à SQLite de VBA Macro de ici (article original en chinois) :

environnement logiciel:

1) Win7 (32 bits) 2) Excel2007 (avec fonction VBA)

Étapes:

1) premier, http: //www.zsplat.pwp .blueyonder.co.uk / Programmation / SQLite-3.5.7-OtBC-0.65.zip Téléchargez et installez le pilote SQLite ODBC.

REMARQUE: Si vous utilisez Win7, vous devez alors les autorisations d'administrateur, Sinon, l'installation échoue. L'étape la plus simple consiste à utiliser le Connexion administrateur, puis installez le pilote SQLite ODBC.

2) Ouvrez la fenêtre Editeur de code Excel VBA, la barre de menus [Outil] -> [Référence], ajout d'objets de données Microsoft ActiveX 2.7, le but est utiliser VBA et la connectivité de la base de données.

3) Utilisez le code suivant pour connecter la base de données SQLITE: xxx


1 commentaires

Assez bien, sauf si vous avez une base d'utilisateurs qui ne peut pas installer de conducteurs aléatoires sans privilège. Il est également moins flexible que d'utiliser un .dll qui peut lire / écrire des données directement à partir de SQLite comment vous voulez. Plus de choses peuvent aller mal. Je préférerais être capable d'écrire mon propre .dll comme G ouTrt, à l'exception des ensembles de résultats, faites simplement que cela renvoie toujours un tableau VBA comme s'il s'agit d'un enregistrement. Vous pouvez le faire de toute façon, mais il y a des problèmes de codage et que la tuyauterie de VBA doit être définie de taille ou de refaire préservée / transposée.



0
votes

Google SQLiteForexcel et téléchargez-le de GITUB

Guatrot a répondu à cela déjà (le créateur), la solution facile à moi, à moins que vous ne puissiez pas .. N'utilisez pas d'accès. Transférez les données sur les fichiers DB SQLite. Vous pouvez même utiliser ADO sur un serveur ou DAO et lire les RS directement dans une table SQLite

Cela ne nécessite aucun pilote ou installation. Vous pouvez télécharger votre classeur télécharger le 2 .dll d'un emplacement partagé dans le fichier Ouvrir (Vérifiez s'ils n'existent pas déjà sur leur système de fichiers, sur Say C: \ Temp), l'utilisateur exécute SQLite. Je suppose que si vous êtes tellement enclin à poser cela, vous voudrez écrire une fonction pour bouffer les appels aux fonctions SQLITE appropriées (expliquées dans l'exemple de DOCS) et lire des données retournées dans une matrice VBA. Ensuite, vous pouvez faire ce que vous voulez avec elle.


0 commentaires