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 = 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

Reply via email to