JMD Jean-Marc Delmas à écrit:

[EMAIL PROTECTED] a écrit :

Bonjour,

J'ai lu avec attention le fil de discussion concernant " fichier .lck aprés fermeture de Obase", car j'ai un soucis identique (que j'avais déjà exposé mais qui je crois nécéssite un nouveau fil de discusson pour une meilleure compréhension)

J'ai utilisé la macro suivante pour ouvrir un formulaire depuis un autre (merci à Christine Brou):

Sub OuvrirFormA()
dim optFichier(2) as new com.sun.star.beans.PropertyValue

monDoc = thisComponent
lesForm = monDoc.Parent.FormDocuments
monForm = lesForm.getByName("FORM_A") 'formulaire à ouvrir

optFichier(0).Name = "ActiveConnection"
optFichier(0).Value = monDoc.Parent.DataSource.getConnection("","")
optFichier(1).Name = "OpenMode"
optFichier(1).Value = "open"

lesForm.loadComponentFromURL(monForm.Name, "", 0, optFichier())
monDoc = lesForm.loadComponentFromURL(monForm.Name, "", 0, optFichier()

call FullOn(monDoc) 'macro qui met le formulaire "form_A" ouvert en mode plein écran

End Sub

donc la connexion est bien ouverte lorsque le formulaire "form_A" s'ouvre.
Mon probléme est que la connexion reste ouverte lorsque je ferme le formulaire "form_A". Comment puis-je donc fermer la connexion ? Cela doit-il intervenir dans la même macro qui ouvre le formulaire (si oui la connexion serat toujours active )ou lors de la fermeture de celui-ci ?

Merci d'avance

Arnaud POUSSIER
Windows Xp Pro - OpenOffice V2.0.2

et meilleurs voeux à toute la liste


Une indication qui n'est peut-être pas inutile. Il n'est pas nécessaire d'établir une nouvelle connexion à la base quand on ouvre un autre formulaire à partir d'un formulaire principal. Pour ma part j'utilise la même connexion et je laisse le soin à open office de la terminer quand je quitte le formulaire principal.
le code se présente ainsi :

oDocinit = ThisComponent 'Le document writer qui contient le formulaire principal
DB_URL = oDocInit.Parent.URL   'l'URL de la base, d'où "parent"
oDBForms = oDocInit.Parent.getFormDocuments 'Les documents writer internes où sont les formulaires oFormCont = oDBForms.getByName("Contacts") 'Celui du formulaire principal oPageInit = oDocInit.DrawPage 'La page où est le form principal oInitForm = oPageInit.Forms.getByName("MainForm") 'Le formulaire principal
oConnect = oInitForm.ActiveConnection                'Son objet connexion
Args(0).Name = "OpenMode"
Args(0).Value = "open"
Args(1).Name = "ActiveConnection"
Args(1).Value =oConnect 'Sa réutilisation

sFormTit = "Adresses" 'Autre document à charger pour accéder à un autre formulaire oDocTit = oDBForms.LoadComponentFromURL(sFormTit, "_blank", 0 , Args()) 'Le document est chargé avec partage de la connexion

Plus besoin de fermer une connexion en sortant du formulaire secondaire puisqu'on l'utilise toujours dans le formulaire >>principal. De plus c'est la connexion établie à l'ouverture du document base. Elle se ferme proprement dès que l'on quitte >>le document ouvert dans OO.

Espérant avoir aidé

Jean-Marc


Bonjour,
Merci tout d'abord de t'être penché sur mon probléme.
J'ai testé ton code et cela ne marche pas.
Il y a deux fois mentionnés "formulaire principal" et j'ai une erreur sur le second appel.

Pour être plus explicite mon fichier base est comme cela:
1 fichier base = test.odb, dans lequel on trouve 5 formulaires = FormA, puis 4 autres secondaires appellés depuis le premier. Chaque formulaire secondaire dépend d'un table. Tout mes formulaires sont dans mon document base.

Bonne soirée




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

Répondre à