5 messages in org.openoffice.fr.progRe: [prog] Comment se déconnecter com...
FromSent OnAttachments
Philippe AllartMar 26, 2007 5:46 am 
Bernard MarcellyMar 26, 2007 8:18 am 
Philippe AllartMar 27, 2007 12:28 am 
Philippe AllartMar 27, 2007 1:38 am 
Philippe AllartMar 27, 2007 2:36 am 
Actions with this message:
Paste this link in email or IM:
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 temporaireActions...
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.