Bernard Marcelly a écrit :
Bonjour,
Je ne comprends pas bien, mais je vois des bizarreries.
Message de Philippe Allart date 2007-03-26 14:46 :
Re,
Je pensais avoir résolu le problème, mais décidemment, non.
Après avoir créé dynamiquement un .odb défini sur une source calc, et
l'avoir interrogé avec succès, j'essaie de supprimer complètement la
connection:
A quoi correspond ce code ? Basic et API savent gérer les références
devenues inutiles.
resultat.close ' le resultset
uneCommande.close ' le statement
Comme ça ne marchait pas, j'ai chiné dans les API, et j'ai essayé ça.
Si j'ai bien compris , "monDoc.close(True)" veut dire "En ce qui me
concerne, je n'ai plus besoin de ce doc, mais s'il y a encore quelqu'un
qui s'en sert, les clés sont chez le concierge".
Comme je ne savais pas écraser le .odb, j'en ai conclu qu'il est
toujours utilisé par quelque chose (spécifique à l'environnement
Windows), et c'est pour ça que j'ai essayé de fermer tous les trucs
possibles.
[ .. ]
Ceci me semble étrange: utiliser une source qui a été révoquée, et
disposer d'un document déjà fermé.
maSource.databaseDocument.close(True)
maSource.databaseDocument.dispose
J'aurai plutôt fait
maSource = monDbContext.GetByName(nomSource)
monDoc = maSource.databaseDocument
monDoc.close(True)
monDBContext.revokeObject(nomSource)
C'est plus logique en effet.
Mais ça ne marche toujours pas.
Voici en simplifié la séquence que j'essaie de réitérer. Les séquences
entre deux lignes de tirets sont isolées dans des fonctions.
L'application s'exécute bien au premier appel.
Si on réexécute l'application sans sortir d'OOo, ça se plante sur
le StoreAsURL marqué d'une flèche, avec une
"InteractiveAugmentedIOException"
----------------
monDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = monDBContext.CreateInstance()
monDoc = maSource.DatabaseDocument
monDoc.storeAsURL(convertToURL(nomODB), Array()) <===
monDBContext.registerObject(nomSource, maSource)
maSource.URL = "sdbc:flat:" & chemin
maSource.info() = info
monDoc.store
---------------
monDbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = monDbContext.GetByName(nomSource)
maConnexion = maSource.getConnection(login, password)
---------------
<travail sur la connexion>
---------------
maConnexion.close
maConnexion.dispose
----------------
monDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = monDbContext.GetByName(nomSource)
monDoc = maSource.databaseDocument
monDoc.close(True)
monDBContext.revokeObject(nomSource)
-----------------
Ca ne suffit apparemment ps pour revenir à l'état initial. Ou est le
problème?
Amicalement,
Ph.
--
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]