Página 1 de 1
Interccion entre formularios
Publicado: Mar Nov 17, 2009 7:55 am
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 10:09 am
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
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 10:51 am
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
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 11:39 am
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 12:21 pm
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 4:22 pm
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 5:22 pm
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 5:27 pm
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
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 5:51 pm
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 6:10 pm
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.
Re: Interccion entre formularios
Publicado: Mar Nov 17, 2009 8:57 pm
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.
Re: Interccion entre formularios
Publicado: Mié Nov 18, 2009 7:46 am
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.