Interccion entre formularios

Discute sobre las herramientas de la base de datos
Responder
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Interccion entre formularios

Mensaje por alfon_ts »

Buenas, llevo varios dias mirando por internet la forma de interactuar varios formularios entre botones con openoffice, pero no lo consigo, me salen errores por todos lados (acostumbrado en Access que lo hacia solo), como digo lo que me gustaria seria crear una simple macro que abra otro formulario.Gracias

Saludos.
OpenOffice 2.0
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Interccion entre formularios

Mensaje por Cascabel »

¿Probaste con código como éste? En mi caso, funciona:

Código: Seleccionar todo

Sub AbrirFormulario(NombreF As String)
	Dim Control as Object
	Control=ThisDatabaseDocument.CurrentController
	If Not Control.IsConnected Then Control.Connect
	Control.LoadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, NombreF,FALSE )
End Sub
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

Muchas gracias por tu ayuda. pero no tengo algo claro, En la linea Sub AbrirFormulario(NombreF As String) NombreF es el nombre del formulario?? o es una variable. y despues en la linea .......DatabaseObject.FORM, NombreF ,FALSE ) NombreF se que es el nombre del formulario al que quiero llamar, pero va asi o con " ". Muchas Gracias.

Saludos
OpenOffice 2.0
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Interccion entre formularios

Mensaje por Cascabel »

Perdón, no me expliqué del todo.

La rutina la escribí para que la guardes en la biblioteca "Standard", de modo que sea accesible desde todas las bibliotecas y módulos de tu aplicación.
"NombreF" es una variable que se pasa como parámetro a esa rutina.
Cuando, desde un botón, quieras abrir un formulario, usa esto asociado a la ejecución del botón:

Código: Seleccionar todo

Sub PushButton(Event As Object)		'Crea una macro distinta para cada formulario
	AbrirFormulario("Nombre del formulario")	'Pon el nombre que sea entre comillas
End Sub
Si no, tendrías que escribir en la macro de cada botón todo el código del mensaje anterior.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

Perdona que sea tan pesado,he ejecutado la macro PushBoton para que haga la llamada a la otra macro y me sale el siguiente error: Error de ejecucion BASIC. La variable del objeto no se ha establecido. El error sale en la siguiente linea: Control=ThisDatabaseDocument.CurrentController. Gracias.
OpenOffice 2.0
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Interccion entre formularios

Mensaje por Cascabel »

No es molestia.

Voy a descargar la versión 2.0 que estás usando. Cuando lo pruebe te comento.
¿No te es posible actualizar OOo a 3.0 o superior?

Entretanto, a ver si alguien que use tu versión puede aportar algo. Siento no haberme fijado antes en el detalle.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

Gracias por las molestias que te estas tomando. no puedo actualizar ya que eso lo lleva la central de Madrid y esta gente mientras algo no de problemas no lo tocan, ejeje.
Saludos.
OpenOffice 2.0
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Interccion entre formularios

Mensaje por Cascabel »

Bueno, no hay problema. Encontré la solución. Código para OOo 2.0 (probado con éxito en mi PC):

Código: Seleccionar todo

REM  *****  BASIC  *****

Option Explicit

Sub AbreFormulario(Form As Object,NombreF As String)
	Dim Doc As Object
	Dim Forms As Object
	Dim DataBase As Object
	Dim Args(1) As New com.sun.star.beans.PropertyValue
	
	Forms=Form.Parent
	Doc=Forms.Parent
	Database=Doc.Parent
	
	Args(0).Name="ActiveConnection"
	Args(0).Value=Form.ActiveConnection
	Args(1).Name="OpenMode"
	Args(1).Value="open"
	
	Database.FormDocuments.LoadComponentFromURL(NombreF,"_blank",0,Args())
End Sub

Sub PushButton(Event As Object)
	AbreFormulario(Event.Source.Model.Parent,"Nombre del formulario")
End Sub
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

He probado el codido y no da ningun error. Creo que el problema lo tengo yo al crear los formularios o algo. He probado y al ejecutar el boton con la macro me abre el mismo formulario en el que estoy. En la macro he cambiado "Nombre del formulario" por "Formulario" que es el que yo quiero abrir. No hay que cambiar nada mas no??.

Gracias.
OpenOffice 2.0
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

Sigo probando y me he dado cuenta que el codigo esta bien porque abre el Formulario que quiero pero es como si no lo dejase activo y vuelve al que estaba. Digamos que lo abre pero se cierra solo (lo hace tan rapido que practicamente no se aprecia)

Saludos.
OpenOffice 2.0
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Interccion entre formularios

Mensaje por Cascabel »

Perplejo me dejas. Yo no tengo problemas. Quizá sea cosa del JRE o del SO.
Lo cierto es que no debería suceder y no me explico por qué se cierra.
Lamentándolo mucho, no me veo capaz de ayudar más con este problema en concreto. Espero que otro aforado sepa qué hacer.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
alfon_ts
Mensajes: 29
Registrado: Lun Nov 09, 2009 10:27 am

Re: Interccion entre formularios

Mensaje por alfon_ts »

Muchas gracias por todo. Sigo probando lo que me enviaste y para que funcione bien tengo que tener los formularios abiertos. Mi intencion era abrir el principal y a traves de los botones que abriera el que hiciera falta. Si los abro todo manualmente si funcionan.
Otra cosa que no se si esta bien es que yo he creado los formularios digamos que independientes. No he creado subformularios ni nada.

Saludos.
OpenOffice 2.0
Responder