(RESUELTO) Macro no reconoce texto

Discute sobre las herramientas de la base de datos
Responder
alumno07
Mensajes: 2
Registrado: Mar Dic 24, 2024 1:00 pm

(RESUELTO) Macro no reconoce texto

Mensaje por alumno07 »

Hola, hice una pequeña base de datos, y saque algunas ideas de este foro, pero ahora el problemaa que tengo es que he puesto un boton para imprimir un informe en base al formulario actual, y funciona correctamente excepto porque si pongo el DNI con letra esa letra no hace filtro y si solo pongo una letra tampoco funciona. En resumen solo funciona si solo pongo numeros en el campo DNI. Aunque la tabla en donde guardo los datos lo hace correctamente con letras y numeros, ya que es un campo de texto.

Código: Seleccionar todo

Sub Imprimiru( Evento )
Dim oReporte As Object	
Dim oConsulta As Object
Dim oCampoID As Object
Dim oForm As Object
	'El formulario activo
	oForm = Evento.Source.Model.Parent	
	'El campo con el Id
	oCampoID = oForm.GetByName("txtIDDNI")	
	'Debe ser mayor a cero
	If oCampoID.BoundField.Int < 0 Then Exit Sub 
		'La consulta en la que se basa el reporte
		oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("FILTRO_DNI")	
		'Modificamos la consulta de modo que tome el registro actual				
		oConsulta.Command =  "SELECT ""IDDNI"" FROM ""PERSONAL"" WHERE ""IDDNI"" = " & oCampoID.BoundField.Int
		'El informe a mostrar
		oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("INFORME_ACTUAL" )	
		'Mostramos el reporte
		oReporte.Open
End Sub
Última edición por alumno07 el Jue Dic 26, 2024 1:11 pm, editado 1 vez en total.
Openoffice 4.1 windows 11
RMG
Mensajes: 3883
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Macro no reconoce texto

Mensaje por RMG »

Estas definiendo el campo como númerico "int", debes definirlo como texto.
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)
alumno07
Mensajes: 2
Registrado: Mar Dic 24, 2024 1:00 pm

Re: Macro no reconoce texto

Mensaje por alumno07 »

Hola, no era capaz de hacerlo, yo simplemente sustituia el "int" por "Text" y no conseguia que funcionara, pedi ayuda a un compañero y me hizo lo siguiente, no se si era la forma correcta pero a mi me funciona.

Código: Seleccionar todo

Sub imprimir_campo_texto(Evento)
    Dim oReporte As Object	
    Dim oConsulta As Object
    Dim oCampoID As Object
    Dim oForm As Object
    Dim sValorID As String
   	'El formulario activo
    oForm = Evento.Source.Model.Parent	
      'El campo con el Id
    oCampoID = oForm.GetByName("txtIDDNI")	
    'Obtenemos el valor del campo como texto
    sValorID = Trim(oCampoID.Text)  
    'Validamos que no esté vacío
    If sValorID = "" Then 
        MsgBox "El campo IDDNI no puede estar vacío.", 64, "Advertencia"
        Exit Sub
    End If
    'La consulta en la que se basa el reporte
    oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName("FILTRO_DNI")	
    'Modificamos la consulta para que tome el registro actual
    oConsulta.Command = "SELECT ""IDDNI"" FROM ""PERSONAL"" WHERE ""IDDNI"" = '" & sValorID & "'" 
    'El informe a mostrar
    oReporte = ThisDatabaseDocument.ReportDocuments.getByName("INFORME_ACTUAL")	
    
    'Mostramos el reporte
    oReporte.Open
End Sub
Muchas gracias por la ayuda.
Openoffice 4.1 windows 11
Responder