[Base] Créer une source Calc et le fichier ODB qui va avec

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

[Base] Créer une source Calc et le fichier ODB qui va avec

Message par Dude »

Le problème principal du publipostage, des formulaires à l'extérieur de la base (ODT) ou d'avoir comme base de données un classeur (ODS), c'est l'obligation d'avoir une source de données dans les options.

Voici une macro qui crée cette source et le fichier ODB.

Code : Tout sélectionner

Sub EnregistreSourceODB
	Dim NomSource as string
	Dim Chemin as string
	Dim NomBase as string
	Dim Classeur as string
	NomSource = "Dude Source"
	Chemin = "u:\temp"
	NomBase = "maBase.odb"
	Classeur = "maBase.ods"
	
	oContexte = createUnoService("com.sun.star.sdb.DatabaseContext")
	If oContexte.hasByName(NomSource) Then
	   msgBox NomSource & " existe déjà !"
	Else
	   oSrcODB = createUnoService("com.sun.star.sdb.DataSource")
	   sUrl = ConvertToURL(Chemin)
	   oSrcODB.DatabaseDocument.storeAsURL(sUrl & "/" & NomBase, Array())
	   sUrl = "sdbc:calc:" & sUrl & "/" & Classeur
	   oContexte.registerObject(NomSource, oSrcODB)
	   oSrcODB.setPropertyValue("URL", sUrl)
	   oSrcODB.DatabaseDocument.store()
	End If
End Sub
Si vous voulez supprimer la source existante au moment du test, sélectionnez la ligne :

Code : Tout sélectionner

      msgBox NomSource & " existe déjà !"
et remplacez la par :

Code : Tout sélectionner

      oContexte.revokeObject(NomSource)
8)