[RESUELTO]al dar cancelar multiples errores

Discute sobre las herramientas de la base de datos
Responder
Oscar461
Mensajes: 14
Registrado: Jue Feb 27, 2020 2:04 pm

[RESUELTO]al dar cancelar multiples errores

Mensaje por Oscar461 »

Tengo una macro en un botón para imprimir un informe desde un formulario, funciona todo bien pero cuando pulso el botón de cancelar sin poner el valor requerido, o la x de cerrar el cuadro de dialogo me sale una ventana con múltiples errores, se que faltan líneas de código pero estoy empezando con esto y estoy perdido, os copio la macro a ver si me podéis ayudar.
REM ***** IMPRIMIR INFORME DESDE BOTON *****

Sub Informe

Dim oreportdoc As Object, ocontroller
'------------------------------------------------------------------
'1º Abrimos el informe

ocontroller = Thisdatabasedocument.currentController ' Controlador actual
if not ocontroller.isconnected then ocontroller.connect ' Mantenemos la conexión
oreportdoc = Thisdatabasedocument.reportdocuments.getbyname("Informe Guia de Entrega").open ' Abrimos el informe
NTexttable = oreportdoc.Texttables().GetCount() ' Número de tablas

For z=0 to NTexttable-1 ' Revisamos todas las tablas
oTexttable = oreportdoc.Texttables(z) ' La tabla que toca en cada paso del ciclo
Fila = oTexttable.rows ' Objeto fila
Filas = Fila.Count-1 ' Número de filas que tiene la tabla
For i=0 To Filas ' Ciclo que recorre todas las filas
Next ' Va a la siguiente fila
Next ' Va a la siguiente tabla
End Sub
Última edición por Oscar461 el Mié Mar 18, 2020 1:55 pm, editado 2 veces en total.
openoffice 6.2 en w10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: al dar cancelar multiples errores

Mensaje por Longi »

Buenas!

Por los comentarios que hay en la macro parece que es de algún ejemplo que colgué yo, así que parece que estoy obligado a intentarlo.
Como dices faltan líneas, ya que si lo que quieres es imprimir, esto solo lo saca por pantalla, y estaría bien tener todo el código.
Los errores son porque la macro sigue rodando y necesita referencias que se tendrían con anterioridad y al intentar parar el proceso no se tienen, no es que esté mal el programa, simplemente que no le dejas trabajar a gusto.
El capítulo del libro de Mauricio de control de errores nunca lo estudié (soy un tanto vago...) por lo que normalmente no lo aplicaba y dejaba que la macro terminase, así que la solución que te propongo para informes cógela con pinzas (ya digo, no la apliqué para este tipo de macros):
Al inicio de la macro (justo antes o justo después de declarar las variables) pon esta línea de código:

Código: Seleccionar todo

On Error GoTo oBad                                                                      ' Control de errores
Justo antes del End Sub colocas lo siguiente:

Código: Seleccionar todo

    Exit sub                                                                                          ' Nos echa de la macro
    oBad:                                                                                             ' Etiqueta referenciada en caso de error
    Exit sub                                                                                          ' Acción en caso de llamar a la etiqueta (en caso de error)
Se supone que si hay un error te cierra la macro y no deja seguir más allá, con lo que te evitarías esos mensajes de error.
Si quieres aplicarlo de otra manera, con lo que te pongo en las siguientes líneas te da en un msgbox la línea del error y puedes ir allí a comprobar qué pasó.

Código: Seleccionar todo

    Exit sub                                                                                          ' Nos echa de la macro
        oBad:		
	Dim oErLine As Integer
	Dim oErNum As Integer
	Dim oErMsg As String
		oErLine = Erl
		oErNum = Err
		oErMsg = Error
		Msgbox("Error en la línea número" & Chr$(9) & " : " & oErLine & Chr$(10) _
			& "Número de error " & Chr$(9) & " : " & oErNum &Chr$(10 ) _
			& "Mensaje de error" & Chr$(9) & " : " & oErMsg , 0, "Modulo Formularios, Macro FormularioUsuarios")
El texto 'Modulo Formularios, Macro FormularioUsuarios' es la localización de la macro (módulo y nombre), con lo que es más fácil saber dónde está el fallo. Si tienes varios módulos la línea de código puede ser en cualquiera de los módulos, así que si usas esta rutina (altamente recomendable), tendrás que cambiar esto en cada una de las macros a las que se lo pongas.

Espero que te funcione o que consigas usarlo para la solución que necesitas.

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: al dar cancelar multiples errores

Mensaje por RMG »

Hola,

Además de la solución de Longi, tienes la posibilidad de crear una macro con lo que quieres que haga si le das a cancelar y se lo asignas a ese botón.

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)
Oscar461
Mensajes: 14
Registrado: Jue Feb 27, 2020 2:04 pm

Re: al dar cancelar multiples errores

Mensaje por Oscar461 »

Ante todo gracias a los dos por las respuestas. He intentado lo que me has dicho Longi pero no me funciona y lo de RMG no lo puedo hacer porque no es un cuadro de dialogo que yo haya creado. Además error mío no me explique del todo bien y falta información.
Cuando se abre el informe lo hace con respecto a una consulta que tiene el criterio de Guia en :Guia para que genere el informe del numero de guía que elija, entonces el cuadro que sale es el del criterio por eso no puedo hacer lo que me recomendó RMG y al darle hay a cancelar o a la x es donde se generan todos los errores.
De hecho he quitado las líneas de la macro que sobraban dejándola asi:


Sub Informe

Dim oreportdoc As Object, ocontroller


ocontroller = Thisdatabasedocument.currentController ' Controlador actual
if not ocontroller.isconnected then ocontroller.connect ' Mantenemos la conexión
oreportdoc = Thisdatabasedocument.reportdocuments.getbyname("Informe Guia de Entrega").open ' Abrimos el informe


End Sub

Puede ser que lo que este mal sea el concepto y esta macro no sea la idónea para abrir el informe a través de la consulta con ese criterio.
openoffice 6.2 en w10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: al dar cancelar multiples errores

Mensaje por RMG »

Hola

Efectivamente, entendí que te referias a un dialogo. Para lo que comentas, entiendo que usas un criterio con parámetros en la consulta del informe.
Si es así, lo aconsejable es crear esa consulta en la misma macro y seleccionar el criterio con un InputBox, si valor devuelto de este es 0 (sin valor o botón cancelar pulsado) que salga de la macro y no lance el informe.
Si la consulta es muy compleja, puedes crear solo una, con el campo necesarios del criterio y vincular las dos consultas a través de ese campo.

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)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: al dar cancelar multiples errores

Mensaje por Longi »

Coincido con RMG, con un inputbox pidiendo el parámetro para hacer un Command de la consulta con lo que ya te preguntó el InputBox estaríamos abriendo un informe basado en una consulta como cualquier otra.

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Oscar461
Mensajes: 14
Registrado: Jue Feb 27, 2020 2:04 pm

Re: al dar cancelar multiples errores

Mensaje por Oscar461 »

Como ya os comente mis conocimientos de momento son muy limitados con las macros voy por la pag 36 del libreo de RMG, lo que estoy haciendo es coger macros y adaptarlas a mis necesidades, si no es abusar os adjunto un ejemplo de la BD de como lo tengo a ver si me podéis guiar con la macro-
Por cierto otra pregunta, tengo una macro de pantalla completa (he probado con otras) que no he conseguido que me funcione siempre me da error de parent no se si es que no la coloco en su sitio.
Ante todo gracias por vuestra ayuda.
Adjuntos
Material prestado.rar
(56.72 KiB) Descargado 181 veces
openoffice 6.2 en w10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: al dar cancelar multiples errores

Mensaje por RMG »

Hola,

Primero decirte que el libro es de mauricio, yo solo he puesto en el foro proyectos de ejemplo, para aprender Base.

https://forum.openoffice.org/es/forum/v ... m.php?f=70

Te adjunto tu ejemplo con algunas correcciones, más que correcciones algo nuevo sobre lo que tienes.

Saludos
Adjuntos
Material prestado1.zip
(177.58 KiB) Descargado 183 veces
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)
Oscar461
Mensajes: 14
Registrado: Jue Feb 27, 2020 2:04 pm

Re: al dar cancelar multiples errores

Mensaje por Oscar461 »

Perdona por lo del libro aunque con tus conocimientos seguro que podrías escribir uno. Con respecto a la macro es justo lo que quería es perfecta, eres un maquina. Solo una ultima cosa he visto que también has puesto lo de pantalla completa pero ¿donde? por mas que he mirado no lo veo, en otros ejemplos que me he bajado tuyos tampoco logro ver donde lo pones.
openoffice 6.2 en w10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: al dar cancelar multiples errores

Mensaje por RMG »

Hola,

En las propiedades del formulario en el evento al cargar. Recuerda poner como resuelto, eso nos ayuda a mantener un foro más organizado.

https://forum.openoffice.org/es/forum/v ... f=3&t=2668

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)
Oscar461
Mensajes: 14
Registrado: Jue Feb 27, 2020 2:04 pm

Re: [RESUELTO]al dar cancelar multiples errores

Mensaje por Oscar461 »

Muchas gracias por todo ya lo encontré.
Saludos.
openoffice 6.2 en w10
Responder