Bonjour Bruno

Ceci fonctionne très bien mais le fichier odb créer étant toujours utilisé par OOo il m'est impossible de le supprimer et/ou de recréer la source, ce qui m'oblige à fermer OOo pour effectuer un nouveau traitement.

Existe-t-il une technique permettant de remplacer un fichier source de données sans être obligé d'arrêter OOo?

je ne comprends pas pas ta remarque sur "le fichier odb créer étant toujours utilisé par OOo" En faisant un revoke, changeant l'urlm de l'instance et recreant, mon fichier odb pointe bien sur la nouvelle base

ci joint un exemple issu du livre ed2 cp17 page 569

- CreerSourceV2()
verifie en ouvrant ton document
- SupprimerSource()

change la variable chemin pointant sur le nouveau fichier
(meme si le meme d'ailleurs, en tout cas un dbf est mis à jour)


- CreerSourceV2()
N'oublie pas le .store

verifie en ouvrant ton document

Normallement, le fichier base qui sert de lien est mis à jour

Laurent
'---------------------------------
Option Explicit

Sub CreerSourceV2()
dim monDBContext As Object, uneInstance As Object
Dim Nomsource As String, Chemin As String
Dim monDocBase As Object

NomSource="BaseExempleV2_1"
monDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")

if not monDBContext.hasByName(NomSource) then
  Chemin  =convertToURL("/home/lgodard/sdd")
  uneInstance = monDBContext.createInstance()
  monDocBase = uneInstance.DatabaseDocument
monDocBase.storeAsURL(convertToURL("/home/lgodard/maPetiteBase.odb"), Array())
  monDBContext.registerObject(NomSource, uneInstance)
  uneInstance.URL =  "sdbc:dbase:" & chemin
  ' remplir éventuellement autre propriétés : IsPasswordRequired, User, etc
  monDocBase.store ' mémoriser les caractéristiques
else
  MsgBox("Ce nom de source existe déjà." & chr(13) & _
         "Impossible de créer la nouvelle source.", 16)
endif
End Sub


Sub SupprimerSource()
dim monDBContext As Object, Nomsource As String

NomSource = "BaseExempleV2_1"
monDBContext = CreateUnoService( _
                     "com.sun.star.sdb.DatabaseContext")

if monDBContext.hasByName(NomSource) then
  monDBContext.revokeObject(NomSource)
else
  MsgBox("Cette source de données n'existe pas", 16)
endif
End Sub


--
Laurent Godard <[EMAIL PROTECTED]> - Ingénierie OpenOffice.org
Indesko >> http://www.indesko.com
Nuxeo CPS >> http://www.nuxeo.com - http://www.cps-project.org
Livre "Programmation OpenOffice.org", Eyrolles 2004

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à