[Résolu][Base] Créer source de données externe

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Denis_21
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 04 août 2017 08:08

[Résolu][Base] Créer source de données externe

Message par Denis_21 »

Bonjour,

J'ai pu créer et me connecter sans problème avec l'assistant à une source de données externe du type sdbc:postgresql:host=...
Pour que l'utilisateur n'ai pas à le faire, j'ai utilisé le code de Bernard Marcelly (ci-dessous) en prenant soin de prendre l'Url de l'exemple créé par l'assistant.
Impossible d'enregistrer en local le fichier odb de métadonnées de la base, à la ligne monDocBase.storeAsURL(cheminDocBase, Array()) il est répondu invariablement, quel que soit le chemin local proposé :
"Type: com.sun.star.io.IOException
Message: Impossible d'enregistrer le document à file:///d:/temp :
Accès à d:\temp refusé.."

Je me dis que l'erreur est en amont, l'url pas bonne..., j'ai essayé aussi avec "sdbc:postgresql://serveur/nomBase"
Où pourrait se situer le pb ?
Merci
Cordialement à tous

Code : Tout sélectionner

Sub CreerSourceExterne()
Dim dbContexte As Object, maSource As Object, monDocBase As Object
Dim nomSource As String, cheminBdd As String, cheminDocBase As String

nomSource = "favoris"
cheminBdd = ConvertToURL("sdbc:postgresql:host=lamantinb.mazone.fr dbname=favoris") 
cheminDocBase = convertToURL("d:\temp")
dbContexte = CreateUnoService("com.sun.star.sdb.DatabaseContext")
if not dbContexte.hasByName(nomSource) then
maSource = dbContexte.createInstance()
monDocBase = maSource.DatabaseDocument

monDocBase.storeAsURL(cheminDocBase, Array())
dbContexte.registerObject(nomSource, maSource)
' cette ligne qui va définir le type de base de données sous-jacent
maSource.URL =  cheminBdd
masource.IsPasswordRequired=true

' remplir éventuellement les autres propriétés de la base
monDocBase.store' mémoriser les caractéristiques dans le fichier Base
else
MsgBox("Ce nom de source existe déjà." & chr(13) & _
"Impossible de créer la nouvelle source.", 16)
endif
End Sub
Dernière modification par micmac le 19 mars 2018 16:39, modifié 1 fois.
Raison : Balisage premier message SVP
LibreOffice Version: 6.0.7.3 (x64)
Win 7 Professionnel
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25164
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Créer source de données externe

Message par Dude »

Commence déjà par voir si le suprême de code fonctionne :
https://forum.openoffice.org/fr/forum/v ... =15&t=6872
Denis_21
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 04 août 2017 08:08

[Résolu] [Base] Créer source de données externe

Message par Denis_21 »

Le suprême est bien suprême et fonctionne avec différents types de base - Grand merci
Il semble y avoir une différence entre (code Bernard Marcelly) qui pose problème à l'enregistrement en local de l'accès à la base distante

Code : Tout sélectionner

maSource = dbContexte.createInstance()
monDocBase = maSource.DatabaseDocument
monDocBase.storeAsURL(cheminDocBase, Array())
et le suprême de code qui fonctionne

Code : Tout sélectionner

 oSrcODB = createUnoService("com.sun.star.sdb.DataSource")
      sUrl = ConvertToURL(Chemin)
      oSrcODB.DatabaseDocument.storeAsURL(sUrl & "/" & NomBase, Array())
Comme cela fonctionne avec ce dernier, je n'investigue pas plus
LibreOffice Version: 6.0.7.3 (x64)
Win 7 Professionnel
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9248
Inscription : 28 août 2010 08:45

Re: [Base] Créer source de données externe

Message par micmac »

Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac