[RESUELTO] Abrir un pdf en funcion del valor de una lista

Discute sobre las herramientas de la base de datos
Responder
jaes
Mensajes: 8
Registrado: Lun Nov 13, 2017 11:37 am

[RESUELTO] Abrir un pdf en funcion del valor de una lista

Mensaje por jaes »

Hola,

a ver si alguien pudiera echarme una mano. Estoy intentando hacer que desde un formulario, en el que tengo una lista desplegable en la cual puedes seleccionar diferentes valores (IdProcedimiento), pues dependiendo del valor seleccionado, al pulsar el botón que hay al lado de dicha lista, se abra un pdf en cuestión. Dichos procedimientos están en una tabla en la cual, cada uno de ellos tienen el path donde se encuentra el documento en pdf que contiene cada procedimiento.
He intentado adaptar una macro que he copiado de un ejemplo de por aquí, con la cual puedes abrir documentos, pero no me funciona. Agradecería que alguien me dijera donde falla. Muchas gracias por adelantado.

Este es el código que he modificado:

Código: Seleccionar todo

Sub sAbreProc(Event As Object)
	Dim oFormD As Object
	Dim sURL As String
	Dim sSQL As String
	Dim iTipo As Object
	On Error Goto Err_sAbreDoc
	oFormD=Event.Source.Model.Parent
	iTipo = oFormD.GetByName("fmtIdProcedimiento")
	sSQL="SELECT ""LinkProcedimiento"" FROM ""tabProcedimiento"" WHERE ""Denominacion"" ='" & iTipo & "' AND ""EnVigor"" = 1"
	oRes=oStat.ExecuteQuery(sSQL)
	sURL=ConvertToURL(oFormD.Columns.GetByName(sSQL).GetString)
	If Dir(sURL)="" Then
		MsgBox "No se encuentra el archivo: " & sURL
		Exit Sub
	End If
	CreateUnoService("com.sun.star.system.SystemShellExecute").Execute( sURL, "", 0)
	Exit Sub
Err_sAbreDoc:
	MsgBox "Error al abrir el archivo: " & sURL
	On Error Goto 0
End Sub
Adjuntos
Ejemplo.rar
(13.01 KiB) Descargado 116 veces
Última edición por mauricio el Lun Nov 20, 2017 2:55 am, editado 3 veces en total.
Razón: Marcar icono de resuelto
LibreOffice Versi??n: 5.3.6.1 en Windows 7 x32
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir un pdf en funcion del valor de un cuadro de lista

Mensaje por RMG »

Hola,

Tienes varios errores en la macro. Cámbiala por esta.

Código: Seleccionar todo

Sub sAbreProc(Event As Object)
	Dim oFormD As Object
	Dim sURL As String
	Dim sSQL As String
	Dim iTipo As String
	Dim oRes As Object
	Dim oStat As Object
	On Error Goto Err_sAbreDoc
	oFormD=Event.Source.Model.Parent
	iTipo = oFormD.GetByName("fmtIdProcedimiento").CurrentValue
	oStat=ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement
	sSQL="SELECT ""LinkProcedimiento"" FROM ""tabProcedimiento"" WHERE ""Denominacion"" ='" & iTipo & "' AND EnVigor = 1"
	oRes = oStat.ExecuteQuery(sSQL)
	oRes.Next
	sURL = oRes.getString(1)
	If Dir(sURL)="" Then
		MsgBox "No se encuentra el archivo: " & sURL
		Exit Sub
	End If
	CreateUnoService("com.sun.star.system.SystemShellExecute").Execute( sURL, "", 0)
	Exit Sub
Err_sAbreDoc:
	MsgBox "Error al abrir el archivo: " & sURL
	On Error Goto 0
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)
jaes
Mensajes: 8
Registrado: Lun Nov 13, 2017 11:37 am

Re: Abrir un pdf en funcion del valor de un cuadro de lista

Mensaje por jaes »

Hola Ramón, muchas gracias por tu corrección.

Al realizar la modificación que me has indicado me seguía dando un fallo, pero ya me habías iluminado. El problema estaba en que aunque en ese desplegable de selección te muestra el 'nombre' del procedimiento, realmente lo que se está almacenando no es una cadena de texto sino el un valor numérico de ese registro, por eso, en la consulta sql no encontraba ningún valor.

He hecho una mínima corrección y ya va. Muchas gracias de nuevo. Dejo la bd aquí ya corregida por si sirve para alguien más.

Saludos
Adjuntos
Ejemplo corregido.rar
(13.15 KiB) Descargado 132 veces
LibreOffice Versi??n: 5.3.6.1 en Windows 7 x32
Responder