I have been trying to follow what you are doing and I am not sure that I
really understand.
Usually, I have a base document that contains forms. The base document
references a datasource (database) of some sort. I then have my forms
reference that same database. For example:
sub subDisplayForm(sDatabaseName as string, sFormName as string)
dim mArgs(1) as new com.sun.star.beans.PropertyValue
oDatabase = fnGetOpenDatabase(sdatabaseName)
oConnection = oDatabase.getConnection("","")
mArgs(0).name = "OpenMode"
mArgs(0).value = "open" '"openDesign"
mArgs(1).name = "ActiveConnection"
mArgs(1).value = oConnection
oForm = oDatabase.getFormDocuments.getByName(sFormName)
'oForm.visibilityChanged(true)
oForm = oDatabase.getFormDocuments.loadComponentFromURL(sFormName, "_blank",
0, mArgs())
end sub
In this example, the connection is obtained from the database document
so everything points to the database associated with the ODB document. I
use those specific terms in case the real database is an external
database such as MySQL.
Are you attempting to use a connection that points to a different database?
Now, I will take a look at what you have:
Fernand Vanrie wrote:
lets starts with geting a connection (here I make a connection to a
odbc driver whos gives me acces to a MS SQL database)
sURL = "sdbc:odbc:debiteuren"
oManager = CreateUnoService("com.sun.star.sdbc.DriverManager")
oCon = oManager.getConnection(sURL)
OK, so here, you clearly reference an external DB, one that is not even
referenced by a Base document. No problem so far.
I have one native OO-basedocument with 2 Formdocs who uses the same
internal HSQL databse engine
the goal is to use Switchboard to give users acces to all my forms and
keep them away from the databsestuff
You have a Base document that contains data. I assume that the schema in
the Base document is the same as the external database.
in Formdoc1 I have oForm who is the mainform for some Subforms who
must/can use my "oCon"
in FormDoc2 I have oFom2 as a mainform who also must use my "oCon"
We can not uses "oCon" to set a ActiveConnection in a already opened
form.
oForm.ActiveConnection = oCon >>>>>gives a error (propertyVeto....)
First we have to open a form with "loadComponentFromURL" who accept
oCon as argument.
Now I have a "open" oform with right "ActiveConnection" but the
subforms are not knowing about this connection. The good news is
that we can pass the "ActiveConnection" to the subforms
oSubForm.ActiveConnection = oForm.ActiveConnection
be carfull to check that the form is not opened in "designMode" the
trick is only working when opened in "open" mode !!!
Let me repeat what you wrote to verify that I understand.
(1) You can use your external connection to load a form and the
connection works as desired.
(2) The subforms do not use the external connection as desired, but you
are able to directly set the sub forms to use the same connection as
their parent.
BUT !!!!!it is tnot possible to passing my "oCon" to the other oform2
who is located in a other fromdocument
oform2.activeConnection = oform.activeConnection >>>>>gives a error
(propertyVeto....)
Now, you state that you can not change the connection on a main form if
the form is already open.
Do you know who vetos the exception? Is it the DocumentDefinition?
Does the form have a "reload" method?
What happens if you call unload before setting the active connection and
then calling load? How about calling reload then setting the active
connection? Have you tried closing the connection that is used and then
setting a new active connection?
These are all guesses, and you might have better luck asking on the dba
forums (unless Frank hangs out here).
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
My Book: http://www.hentzenwerke.com/catalog/oome.htm
Info: http://www.pitonyak.org/oo.php
See Also: http://documentation.openoffice.org/HOW_TO/index.html
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@api.openoffice.org
For additional commands, e-mail: dev-h...@api.openoffice.org