

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
5 messages in org.openoffice.fr.progRe: [prog] Comment se déconnecter com...| From | Sent On | Attachments |
|---|---|---|
| Philippe Allart | Mar 26, 2007 5:46 am | |
| Bernard Marcelly | Mar 26, 2007 8:18 am | |
| Philippe Allart | Mar 27, 2007 12:28 am | |
| Philippe Allart | Mar 27, 2007 1:38 am | |
| Philippe Allart | Mar 27, 2007 2:36 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] Comment se déconnecter complètement d'un .odb temporaire | Actions... |
|---|---|---|
| From: | Philippe Allart (pall...@cudl-lille.fr) | |
| Date: | Mar 27, 2007 12:28:10 am | |
| List: | org.openoffice.fr.prog | |
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.
--







