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.
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.
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.
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