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]