[API] Exécution de requête SQL sous Base

Quoi ? Vous ne connaissez pas cette suite bureautique libre et gratuite. Elle vous permet de faire ce que vous faîtes avec MS-Office sans avoir à pirater.
Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

[API] Exécution de requête SQL sous Base

Messagepar Bidouille » 14 mars 2016 15:59

Question récurrente sur le forum. :roll:

Mais bon, avant de vous précipiter dans une macro, assurez-vous quand même que vous ne pouvez pas faire sans.
Les formulaires sous Base permettent de faire toutes les opérations SQL.
Vous pouvez aussi utiliser une requête ou une vue si vous avez quelque chose de plus complexe.

Bref, l'utilisation d'une macro ne doit être qu'un dernier recours.

Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

Connexion à la base

Messagepar Bidouille » 14 mars 2016 16:02

Rappel : contrairement aux autres modules, Base est représenté par l'objet ThisDatabaseDocument

Code : Tout sélectionner

sUrl = ThisDatabaseDocument.URL
oDC = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oSrc = oDC.getByName(sUrl)
oDB = oSrc.getConnection("","")
oCnx = oDB.createStatement()

A partir de là, on peut facilement envoyer du SQL

Attention car ce code est fourni uniquement pour le format natif HSQL.
L'utilisation de Base avec un autre SGBD (MySQL, Oracle, etc) imposera une autre syntaxe.

Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

Avant de partir tête baissée

Messagepar Bidouille » 14 mars 2016 16:40

Assurez-vous que votre requête SQL est correcte et qu'elle renvoie bien des informations.
Pour cela, exécutez là d'abord dans l'interface :
_no_problemo.png
_no_problemo.png (92.99 Kio) Vu 5167 fois

Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

Règles de typographie

Messagepar Bidouille » 14 mars 2016 16:50

Votre requête fonctionne, il faut alors ajouter quelques caractères afin de pouvoir la passer.
Exemple :

Code : Tout sélectionner

SELECT test FROM toto WHERE truc = 'x'

Trois règles simples :
  1. vous devez encadrer la requête par des guillemets
  2. vous devez encadrer chaque champ ou nom de table par des guillemets doubles
  3. vous devez ajouter des apostrophes simples pour les variables
Ce qui devient :

Code : Tout sélectionner

sReq = "SELECT ""test"" FROM ""toto"" WHERE ""truc"" = 'x'  "

Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

Exécution d'un SELECT

Messagepar Bidouille » 14 mars 2016 16:57

N'oubliez pas le code de connexion à la base sans quoi le script ne fonctionnera pas.

Code : Tout sélectionner

sReq = "SELECT ""test"" FROM ""toto"" WHERE ""truc"" = 'x'  "
sRet = oCnx.executeQuery(sReq)
sRet.next
msgbox sRet.getColumns().getByName("test").getString()

Bidouille
Webmestre
Messages : 391
Enregistré le : 21 mai 2007 16:08

Fermez la !

Messagepar Bidouille » 14 mars 2016 17:00

Code : Tout sélectionner

oCnx.dispose

N'oubliez pas de fermer la connexion :)


Retourner vers « OpenOffice »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité