[RESUELTO] Formulario con varias macros en 1 mismo evento
[RESUELTO] Formulario con varias macros en 1 mismo evento
Buenos días, tengo un par de dudas;
1) Hace poco me ayudasteis en mi base de datos para poder asociar a cada registro una imagen , para ello RMG me facilitó una macro que disparaba el evento "tras el cambio de registro" en los "Acontecimientos" del formulario:
https://forum.openoffice.org/es/forum/v ... 397#p64050
Y me funciona genial.. :
Ahora necesito crear dos o más botones que habrán documentos (Web o PDF) , asociados a un nuevo campo de la tabla, buscando por el foro, he encontrado una macro de este tema que llevó Mauricio y que me ha venido genial en "otra base de datos que NO tenía imágenes"..:
https://forum.openoffice.org/es/forum/v ... 500#p55195
El problema viene cuando quiero hacer las dos cosas : dos eventos ( uno que me cargué las imágenes y otro que me cargué las direcciones que quiero abrir al pulsar los botones) porque los situan en la misma ubicación de "Acontecimientos"del formulario ( tras cambio de registro) ..
Debe de ser una tontería pero he probado a situar los eventos en otras opciones de activación y no me funciona.
2)Otra cosa , como crear más de un botón para cargar varios documentos..la macro debe cambiar y no me hace caso ... En el ejemplo de Mauricio carga las direcciones web y también las de correo electrónico... Entiendo que debe de hacerse de forma parecida pero tampoco me sale..
Gracias por vuestra muy apreciada ayuda.
1) Hace poco me ayudasteis en mi base de datos para poder asociar a cada registro una imagen , para ello RMG me facilitó una macro que disparaba el evento "tras el cambio de registro" en los "Acontecimientos" del formulario:
https://forum.openoffice.org/es/forum/v ... 397#p64050
Y me funciona genial.. :
Ahora necesito crear dos o más botones que habrán documentos (Web o PDF) , asociados a un nuevo campo de la tabla, buscando por el foro, he encontrado una macro de este tema que llevó Mauricio y que me ha venido genial en "otra base de datos que NO tenía imágenes"..:
https://forum.openoffice.org/es/forum/v ... 500#p55195
El problema viene cuando quiero hacer las dos cosas : dos eventos ( uno que me cargué las imágenes y otro que me cargué las direcciones que quiero abrir al pulsar los botones) porque los situan en la misma ubicación de "Acontecimientos"del formulario ( tras cambio de registro) ..
Debe de ser una tontería pero he probado a situar los eventos en otras opciones de activación y no me funciona.
2)Otra cosa , como crear más de un botón para cargar varios documentos..la macro debe cambiar y no me hace caso ... En el ejemplo de Mauricio carga las direcciones web y también las de correo electrónico... Entiendo que debe de hacerse de forma parecida pero tampoco me sale..
Gracias por vuestra muy apreciada ayuda.
Última edición por Sheridan el Mié Jun 12, 2019 4:15 pm, editado 2 veces en total.
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e imágenes;Macro cambio de regist
Hola,
A lo que entiendo, en el mismo evento puedes hacer las dos cosas, solo utiliza distintas variables para recoger los valores. Respecto a lo último, no lo acabo de entender, mejor adjuntar un pequeño ejemplo.
Saludos
A lo que entiendo, en el mismo evento puedes hacer las dos cosas, solo utiliza distintas variables para recoger los valores. Respecto a lo último, no lo acabo de entender, mejor adjuntar un pequeño ejemplo.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Formulario con Botones e imágenes;Macro cambio de regist
1) Hola crack , claro, aquí el enlace :
https://we.tl/t-bLlycHFCHJ
Como verás, hay un formulario de creación de artículos "Frm_Lentilla" donde introduzco los campos oportunos ; entre ellos uno nuevo que he llamado web , con la dirección de la ubicación del archivo que quiero abrir , por ej : www.marca.com ...y otro formulario de busqueda (Frm_BusqPVP) que me filtra por las selecciones que hago y me ofrece los resultados en el cuadro de tabla...Pues bien , ahora en ese mismo formulario he insertado un botón para que pueda cargar la pagina web correspondiente al registro que seleccione en la tabla..
PROBLEMA ...Pues que no sé como debo introducir 2 macros en un mismo evento de formulario ("tras el cambio de registro" )..por el momento están las 2 macros separadas (en el mismo modulo 3 y el formulario solo escoge en ese evento la macro "CambiaImagen (document, Basic)" ( que es el de la carga de imágenes)...
2)Necesito que el formulario de busqueda (Frm_busqPVP) tenga mas de un botón (he creado el boton "web",pero la idea es tener mas ; email,web2, pdf1,pdf2...) para que abriera las direcciones donde ubico los archivos y que asocio a cada registro en su campo correspondiente,claro , algunos están en mi ordenador y otros son webs...(los archivos son casi todos en pdf..)..
Se me entiende algo? ..porque estoy empezando a ver unicornios..
https://we.tl/t-bLlycHFCHJ
Como verás, hay un formulario de creación de artículos "Frm_Lentilla" donde introduzco los campos oportunos ; entre ellos uno nuevo que he llamado web , con la dirección de la ubicación del archivo que quiero abrir , por ej : www.marca.com ...y otro formulario de busqueda (Frm_BusqPVP) que me filtra por las selecciones que hago y me ofrece los resultados en el cuadro de tabla...Pues bien , ahora en ese mismo formulario he insertado un botón para que pueda cargar la pagina web correspondiente al registro que seleccione en la tabla..
PROBLEMA ...Pues que no sé como debo introducir 2 macros en un mismo evento de formulario ("tras el cambio de registro" )..por el momento están las 2 macros separadas (en el mismo modulo 3 y el formulario solo escoge en ese evento la macro "CambiaImagen (document, Basic)" ( que es el de la carga de imágenes)...
2)Necesito que el formulario de busqueda (Frm_busqPVP) tenga mas de un botón (he creado el boton "web",pero la idea es tener mas ; email,web2, pdf1,pdf2...) para que abriera las direcciones donde ubico los archivos y que asocio a cada registro en su campo correspondiente,claro , algunos están en mi ordenador y otros son webs...(los archivos son casi todos en pdf..)..
Se me entiende algo? ..porque estoy empezando a ver unicornios..
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Buenas!
Mis conocimientos sonlimitados, muy limitados, así que quizá no debiera responder.....
Yo no uso el tag en los botones, directamente en el evento de botón de ratón pulsado o en el de botón de ratón soltado pongo la referencia a la macro.
Esto tiene el inconveniente con respecto a lo que pides que solo sirve para una función, pero lo arreglo con macros, de tal manera que una macro, en función de lo que haya en el formulario puede llamar a una macro u otra. Es lo que yo llamo macro de distribución, y ésta misma puede llamar seriadamente a varias, lo cual sería tu caso....
¿Más unicornios?, no me extraña, con lo bueno que soy con mis explicaciones!
Un saludo!
Mis conocimientos son
Yo no uso el tag en los botones, directamente en el evento de botón de ratón pulsado o en el de botón de ratón soltado pongo la referencia a la macro.
Esto tiene el inconveniente con respecto a lo que pides que solo sirve para una función, pero lo arreglo con macros, de tal manera que una macro, en función de lo que haya en el formulario puede llamar a una macro u otra. Es lo que yo llamo macro de distribución, y ésta misma puede llamar seriadamente a varias, lo cual sería tu caso....
¿Más unicornios?, no me extraña, con lo bueno que soy con mis explicaciones!
Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Hola Longi, ante todo muchas gracias por el consejo.Caray !, me parece muy interesante tu método para desarrollarlo, pero desconozco cómo hacer funcionar una macro de distribución, si pudieras subir algún ejemplo podría intentar llevarlo a cabo.. porque hasta ahora lo he hecho de otro modo...siempre se puede aprender un poco más..
La verdad es que RMG me comentaba otra opción, también válida para resolverlo, el comentaba que se podían utilizar dos variables dentro de la misma macro.. pero tampoco sé cómo llevar esto a cabo..
La verdad es que RMG me comentaba otra opción, también válida para resolverlo, el comentaba que se podían utilizar dos variables dentro de la misma macro.. pero tampoco sé cómo llevar esto a cabo..
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Buenas!
Al ser solo un ejemplo me he tomado la libertad de anular las dos macros que tenías en el módulo 3 y he puesto las mías.
En el formulario he puesto un botón nuevo que llama a las macros que pongo.
Supongo que esto es lo que quieres, pero el modo de trabajar varía un poco (no se entra en el evento directamente, y he tenido que usar una variable externa a la macro), pero parece que funciona.
Un saludo!
Ah!, y lo de macro distribuidor no es ningún tecnicismo....es un 'palabro' que uso yo en mi jerga particular. No creas que lo vas a leer en ningún libro conciezudo!
Al ser solo un ejemplo me he tomado la libertad de anular las dos macros que tenías en el módulo 3 y he puesto las mías.
En el formulario he puesto un botón nuevo que llama a las macros que pongo.
Supongo que esto es lo que quieres, pero el modo de trabajar varía un poco (no se entra en el evento directamente, y he tenido que usar una variable externa a la macro), pero parece que funciona.
Un saludo!
Ah!, y lo de macro distribuidor no es ningún tecnicismo....es un 'palabro' que uso yo en mi jerga particular. No creas que lo vas a leer en ningún libro conciezudo!
- Adjuntos
-
- Lentillas Prueba1.7z
- (92.16 KiB) Descargado 207 veces
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Bienas Longi , Gracias por responder tan rápido!!.
Efectivamente la macro funciona pero ahora las imagenes no cambian!!! solo me sale 1 para todos los registros!!!
¿Porque puede ser?
Efectivamente la macro funciona pero ahora las imagenes no cambian!!! solo me sale 1 para todos los registros!!!
¿Porque puede ser?
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Hola,
Además de la solución de Longi, esta es la que te he comentado de poner más variables a la misma. Recuerda que debes poner la propiedad "Acción" del botón a Abrir documento/página web.
Para abrir archivos .pdf u otra extensión, esto no sirve.
Saludos
Además de la solución de Longi, esta es la que te he comentado de poner más variables a la misma. Recuerda que debes poner la propiedad "Acción" del botón a Abrir documento/página web.
Código: Seleccionar todo
Sub CambiaImagen( Evento )
Dim sDirectorioActual As String
Dim sDirectorioImagenes As String
Dim mTmp()
Dim sRuta As String
Dim sImagen As String
Dim txtImagen As Object
Dim icImagen As Object
Dim oForm As Object
Dim oBot As Object
Dim oTxt As Object
oForm = Evento.Source
sDirectorioImagenes = "ImagenesLentillas"
sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
sDirectorioActual = sDirectorioActual & sDirectorioImagenes & "/"
'El control donde esta el nombre de la imagen
txtImagen = oForm.getByName("IdLentilla")
'El control para mostrar la imagen
icImagen = oForm.getByName("icImagen")
'Obtenemos el nombre de la imagen
sImagen = txtImagen.Value & ".jpg"
'Contruimos la ruta completa de la imagen
sRuta = sDirectorioActual & sImagen
'Mostramos la imagen
icImagen.ImageURL = sRuta
oBot = oForm.getByName("Abrir_web")
oTxt = oForm.getByName("web")
If Trim(oTxt.Text) <> "" Then
oBot.TargetURL = Trim(oTxt.Text)
Else
oBot.TargetURL = ""
End If
End Sub
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Como te dije, es otra manera de trabajar, y el cambio lo provoco al clickar el botón.
La macro recoge el ID de la imagen que está indicada en el formulario en el momento de clickar el botón. Entonces, y solo entonces cambia la imagen (o eso creo).
La misma filosofía podría seguirse desde una macro (distribuidor) que se dispare en el evento del formulario 'antes de efectuar cambios' (como lo que tenías hasta ahora), pero en vez de asignarle funciones al botón, directamente que te coja el ID de la imagen y el texto del campo 'web' y trabaje con ellos.
Date cuenta que te 'inutilicé' las dos macros que tenías, por lo que no están trabajando. De ahí que encuentres diferencias con respecto a lo anterior (diferencias, no mejoras).
Un saludo!
La macro recoge el ID de la imagen que está indicada en el formulario en el momento de clickar el botón. Entonces, y solo entonces cambia la imagen (o eso creo).
La misma filosofía podría seguirse desde una macro (distribuidor) que se dispare en el evento del formulario 'antes de efectuar cambios' (como lo que tenías hasta ahora), pero en vez de asignarle funciones al botón, directamente que te coja el ID de la imagen y el texto del campo 'web' y trabaje con ellos.
Date cuenta que te 'inutilicé' las dos macros que tenías, por lo que no están trabajando. De ahí que encuentres diferencias con respecto a lo anterior (diferencias, no mejoras).
Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Bueno ante todo muchas gracias a los dos , veo que desde dos puntos de vista distintos se puede llegar a la solución de un mismo problema.
RMG he probado tú solución y me funciona ,ah!! Y he podido comprobar qué esa misma macro permite abrir archivos en PDF !! (si se escribe la ubicación del mismo y su nombre...)..
Solamente me faltaría que me aclaraseis el punto 2, cómo introducir varios botones que habrán diferentes páginas webs en el mismo formulario.. quizás la solución vaya por crear distintas variables..?
RMG he probado tú solución y me funciona ,ah!! Y he podido comprobar qué esa misma macro permite abrir archivos en PDF !! (si se escribe la ubicación del mismo y su nombre...)..
Solamente me faltaría que me aclaraseis el punto 2, cómo introducir varios botones que habrán diferentes páginas webs en el mismo formulario.. quizás la solución vaya por crear distintas variables..?
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Hola,
Posible solución, poner tantos campos web como botones necesites y ampliar las variables a esos campos y esos botones. Efectivamente, puede abrir pdf y archivos de AOO, no así de otras aplicaciones, que es necesario ejecutar el shell.
Saludos
Posible solución, poner tantos campos web como botones necesites y ampliar las variables a esos campos y esos botones. Efectivamente, puede abrir pdf y archivos de AOO, no así de otras aplicaciones, que es necesario ejecutar el shell.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Buenas tardes RMG he intentado, sin éxito, modificar la macro introduciendo unas líneas en las que se llame al campo "web3"que es donde quiero introducir la segunda dirección de otra página web.. y he creado también un botón con el nombre "Abrir_web3'...
te dejo la macro para que me digas dónde está el error porque únicamente se me abre de esta forma la página del campo "web3" la primera "web"aunque apriete el botón no me hace nada...
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
Sub TeclaPulsadaStandar(Evento AS object)
Dim oTxt As String
Dim oFilter As Object
Dim oFormCtl As Object
Dim oCtrl As Object
Dim valor As String
Dim campo As String
oTxt = Evento.Source.getText()
valor = Evento.Source.Model.Tag
campo = Evento.Source.Model.Name
oCtrl = Evento.Source
oFormCtl = oCtrl.Model.Parent
oFormCtl.ApplyFilter = False
If oTxt <> "" then
If campo = "Contiene" Then
oFormCtl.Filter = " UPPER(" & valor & ") LIKE " + "UPPER('%" & oTxt & "%')" 'ENCUENTRA SI CONTIENE ALGO DE LA TECLA PULSADA
oFormCtl.ApplyFilter = True
End If
If campo = "Empieza" Then
oFormCtl.Filter = " UPPER(" & valor & ") LIKE " + "UPPER('" & oTxt & "%')" 'ENCUENTRA SI EMPIEZA POR LA TECLA PULSADA
oFormCtl.ApplyFilter = True
End If
Else
oFormCtl.ApplyFilter = False
End if
oFormCtl.Reload
oCtrl.SetFocus()
oFormCtl.ApplyFilter = False
End Sub
REM ***** BASIC *****
Sub BotonAbreURL1( Evento )' Poner en el evento del formulario Tras el cambio de registro
Dim oForm As object
Dim oBot As Object
Dim oTxt As Object
oForm = Evento.Source
oBot = oForm.getByName("Abrir_web")
oTxt = oForm.getByName("web")
If Trim(oTxt.Text) <> "" Then
oBot.TargetURL = Trim(oTxt.Text)
Else
End If
oBot.TargetURL = ""
oForm = Evento.Source
oBot = oForm.getByName("Abrir_web3")
oTxt = oForm.getByName("web3")
If Trim(oTxt.Text) <> "" Then
oBot.TargetURL = Trim(oTxt.Text)
Else
oBot.TargetURL = ""
End If
End Sub
Sub sBotonAbreFormulario(Evento)
Dim Control as Object
Control = ThisDatabaseDocument.CurrentController
If Not Control.IsConnected Then Control.Connect
ThisDatabaseDocument.FormDocuments.GetByName(Evento.Source.Model.Tag).Open
End Sub
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Hola,
Estas utilizando una macro que no es, yo te puse otra, mira arriba. Y así es como quedaría para otro botón.
Para más botones debes ir poniendo más variables.
Saludos
Estas utilizando una macro que no es, yo te puse otra, mira arriba. Y así es como quedaría para otro botón.
Código: Seleccionar todo
Sub CambiaImagen( Evento )
Dim sDirectorioActual As String
Dim sDirectorioImagenes As String
Dim mTmp()
Dim sRuta As String
Dim sImagen As String
Dim txtImagen As Object
Dim icImagen As Object
Dim oForm As Object
Dim oBot As Object
Dim oTxt As Object
Dim oBot3 As Object
Dim oTxt3 As Object
oForm = Evento.Source
sDirectorioImagenes = "ImagenesLentillas"
sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
sDirectorioActual = sDirectorioActual & sDirectorioImagenes & "/"
'El control donde esta el nombre de la imagen
txtImagen = oForm.getByName("IdLentilla")
'El control para mostrar la imagen
icImagen = oForm.getByName("icImagen")
'Obtenemos el nombre de la imagen
sImagen = txtImagen.Value & ".jpg"
'Contruimos la ruta completa de la imagen
sRuta = sDirectorioActual & sImagen
'Mostramos la imagen
icImagen.ImageURL = sRuta
oBot = oForm.getByName("Abrir_web")
oTxt = oForm.getByName("web")
If Trim(oTxt.Text) <> "" Then
oBot.TargetURL = Trim(oTxt.Text)
Else
oBot.TargetURL = ""
End If
oBot3 = oForm.getByName("Abrir_web3")
oTxt3 = oForm.getByName("web3")
If Trim(oTxt3.Text) <> "" Then
oBot.TargetURL = Trim(oTxt3.Text)
Else
oBot3.TargetURL = ""
End If
End Sub
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Formulario con Botones e Imágenes - 2 macros en 1 evento
Madre mía!! Me has salvado!!
al principio no me cargaba la macro pero me he dado cuenta que se te ha olvidado escribir un "3" en la penúltima entrada que empieza por ." Obot...", Ha sido cambiarlo dejarlo así y ya me ha funcionado..
Muchísimas gracias chicos me están quedando unas bases de datos geniales!!! no sabría hacer nada sin vosotros!!!
Post data: en ocasiones me parece ver unicornios ... pero en este foro me enseñais a ver caballos...
al principio no me cargaba la macro pero me he dado cuenta que se te ha olvidado escribir un "3" en la penúltima entrada que empieza por ." Obot...", Ha sido cambiarlo dejarlo así y ya me ha funcionado..
Código: Seleccionar todo
CambiaImagen( Evento )
Dim sDirectorioActual As String
Dim sDirectorioImagenes As String
Dim mTmp()
Dim sRuta As String
Dim sImagen As String
Dim txtImagen As Object
Dim icImagen As Object
Dim oForm As Object
Dim oBot As Object
Dim oTxt As Object
Dim oBot3 As Object
Dim oTxt3 As Object
oForm = Evento.Source
sDirectorioImagenes = "ImagenesLentillas"
sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
sDirectorioActual = sDirectorioActual & sDirectorioImagenes & "/"
'El control donde esta el nombre de la imagen
txtImagen = oForm.getByName("IdLentilla")
'El control para mostrar la imagen
icImagen = oForm.getByName("icImagen")
'Obtenemos el nombre de la imagen
sImagen = txtImagen.Value & ".jpg"
'Contruimos la ruta completa de la imagen
sRuta = sDirectorioActual & sImagen
'Mostramos la imagen
icImagen.ImageURL = sRuta
oBot = oForm.getByName("Abrir_web")
oTxt = oForm.getByName("web")
If Trim(oTxt.Text) <> "" Then
oBot.TargetURL = Trim(oTxt.Text)
Else
oBot.TargetURL = ""
End If
oBot3 = oForm.getByName("Abrir_web3")
oTxt3 = oForm.getByName("web3")
If Trim(oTxt3.Text) <> "" Then
oBot3.TargetURL = Trim(oTxt3.Text)
Else
oBot3.TargetURL = ""
End If
End Sub
Post data: en ocasiones me parece ver unicornios ... pero en este foro me enseñais a ver caballos...
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office