Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 02 March 2011 13:55

Nicoo
Participant occasionnel
Date d'inscription: 27 Jul 2010
Messages: 10

VBA Excel et fonctions SQLite/Spatialite

Bonjour,

Je souhaite lier un classeur Excel avec une BDD SQLite/Spatialite. La connexion fonctionne très bien ainsi que les commandes SQL standards… Cependant, dès que j’utilise une fonction propre à Spatialite (en l’occurrence : GeomFromText), j’obtiens le message d’erreur suivant (via la gestion d’erreur : Err.Description) : « No such function : GeomFromText (1)».

Pour plus de détails, mon fichier Excel contient les coordonnées d’un polygone que je cherche à insérer dans la BDD dans une colonne formatée en GeometryColumn afin de pouvoir le visualiser dans un SIG (QGis). La commande SQL en question : « INSERT INTO test (sceneid,geom) VALUES ("40442461009061053582I0",GeomFromText('POLYGON((5.9716 50.956299, 6.2766 51.4618, 5.2801 51.664101, 4.9849 51.156101))',4326)) ». A noter que cette commande fonctionne très bien si je la passe depuis l’outil Spatialite-gui.

Ma question est donc la suivante ; Existe-t-il une possibilité pour intégrer les fonctions Spatialites (et tout particulièrement GeomFromText) dans VBA Excel ?

Merci d’avance.
Nicolas.

Hors ligne

 

#2 Thu 03 March 2011 11:02

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: VBA Excel et fonctions SQLite/Spatialite

Bonjour,

Comment liez vous le classeur excel à la BDD SQLite ?


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#3 Thu 03 March 2011 11:57

Nicoo
Participant occasionnel
Date d'inscription: 27 Jul 2010
Messages: 10

Re: VBA Excel et fonctions SQLite/Spatialite

Bonjour,

Pour me connecter, j'ai repris l'exemple fourni sur cette page : http://www.excel-downloads.com/forum/10 … cel-2.html.

J'ai installé le pilote ODBC, ajouté la référence ADO (Microsoft ActiveX Data Objects 2.1 Library) puis instancié une ADODB.Connection.

La chaîne de connexion est la suivante : "DRIVER=SQLite3 ODBC Driver;Database=" & CheminBDD & BDD & ";LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;".

J'avoue l'avoir recopiée sans en comprendre les paramètres (en tout cas elle fonctionne).

Hors ligne

 

#4 Fri 04 March 2011 09:10

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: VBA Excel et fonctions SQLite/Spatialite

Bonjour,

Le provider que vous utilisez ADODB ne gère apparemment pas les fonctionnalités spatiales. J'ai essayé de regarder ça hier avec un provider  pour ADO.Net mais je l'avoue je n'ai pas eu le temps de finir .... Si je trouve qq chose je le posterai ici.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#5 Fri 04 March 2011 09:42

Nicoo
Participant occasionnel
Date d'inscription: 27 Jul 2010
Messages: 10

Re: VBA Excel et fonctions SQLite/Spatialite

Bonjour Christophe,

Merci d'avoir cherché, mais finalement le problème est résolu : je n'avais pas poussé assez loin mes recherches internet....

Un petit résumé, ça peut toujours servir:

1. Avoir une BDD bien configurée spatialite, voir ce site : http://www.gaia-gis.it/spatialite-2.4.0 … index.html

2. Télécharger la librairie spatialite libspatialite-2.dll ansi que les dépendances suivantes : libproj-0.dll, libgeos_c-1.dll, libgeos-3-1-1.dll, libiconv2.dll.
Elles sont disponibles ici : http://www.gaia-gis.it/spatialite/binaries.html
Les placer dans un même dossier (par défaut C:\WINDOWS\system32).

3. Dans le projet VBA, cocher la Référence "Microsoft ActiveX Data Objects 2.8 Library.

4. Connecter la BDD sqlite avec Excel (cf le lien donné dans mon message précédent).

5. Dans le code VBA, après la connection, passer la commande SQL suivante : "SELECT load_extension("CheminVersLesDLL\libspatialite-2.dll")"

6. La BDD est maintenant connectée avec les fonctions spatialites ; les commandes SQL incluant des fonctions comme GeomFromText peuvent être utilisées.


Bonne journée!

Hors ligne

 

#6 Fri 04 March 2011 12:08

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: VBA Excel et fonctions SQLite/Spatialite

Bonjour,

Merci pour la solution !

SELECT load_extension("CheminVersLesDLL\libspatialite-2.dll")


Cela permet au provider de trouver la définition des fonctions de la dll spatiale.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB