Access informe filtrado por criterios

Saludos tengo el siguiente formulario en el que pretendo generar un informe con dos Dtpicker un código de cobrador y la cedula de un cliente, presentándose los casos en los que se escoge cobrador y no cliente y se debe generar un informe solo con el filtro cobrador, igualmente si se escoge solo idcliente solo el informe de ese cliente y si no se escoge nada debería generarse el informe con todos los cambos, igualmente este informe se filtra por un rango de fechas ..

Eh intentado con

Dim vFechaIni As Date, vFechaFin As Date
    Dim vComboCobrador As Integer
    Dim vComboCedula As Integer
    Dim miFiltro As String
    Dim vlargo As Integer
   ' Tomamos los datos de los Valores que se tomaron como Filtro '
    vFechaIni = Nz(Me.DTPickerdesde.Value)
    vFechaFin = Nz(Me.DTPickerhasta.Value)
    vComboCobrador = Nz(Me.Combocobrador.Value, -1)
    vComboCedula = Nz(Me.ComboCedula.Value, -1)
    'Inicializamos el filtro'
    'miFiltro ""'

Solo con el filtro de las fechas y me sale un error 3125 no es un nombre válido, asegúrese de que no incluya caracteres o signos de puntuación no válidos y que el nombre no sea demasiado largo

Gracias

'Primera parte del Filtro'
    If vFechaIni <> -1 Then
       miFiltro = miFiltro & " AND [Me.DTPickerdesde.Value]>=#" & Format(vFechaIni, "mm/dd/yyyy") & "#"
    End If
'Creamos la segunda parte del filtro
   If vFechaFin <> -1 Then
        miFiltro = miFiltro & " AND [Me.DTPickerhasta.Value]<=#" & Format(vFechaFin, "mm/dd/yyyy") & "#"
    End If
' Longitud del Filtro '
    vlargo = Len(miFiltro)
    'Recomponemos el filtro eliminando el primer 'AND '
    If vlargo > 0 Then
         miFiltro = Right(miFiltro, vlargo - 5)
    End If
    DoCmd.OpenReport "rptabonosxcobrador", acViewPreview, , miFiltro
End Sub

2 Respuestas

Respuesta
2

Jeric: Ese código que citas lo he visto funcionando en un Ejemplo de Neckkito y Sveinbjorn

Mira en su Web >>http://siliconproject.com.ar/neckkito/   y bajo el título de FiltroMultiple2 lo encontrarás.

Dado que ellos responden en éste foro, en mi opinión lo adecuado sería que si tienes alguna duda les dirijas la pregunta de modo directo. Mis saludos >> Jacinto

Respuesta
1

Yo el error que veo es que en los filtros de fechas no usas el nombre del campo de la tabla/consulta sobre la que haces el informe, sino que usas el de los DataPickers. Si lo corriges, debiera funcionarte como esperas.

Otro "error" que veo es que no le das un valor con Nz() a las variables vFechaIni y vFechaFin en caso de que queden en balnco y sin embargo, a la hora de crear el filtro las comparas con un -1 que no se sabe de dónde sale.

Resumiendo:

Al darle valores a las variables, añade:

    vFechaIni = Nz(Me.DTPickerdesde.Value,-1)
    vFechaFin = Nz(Me.DTPickerhasta.Value,-1)

Y cuando crees los filtros de fecha:

'Primera parte del Filtro'
    If vFechaIni <> -1 Then
       miFiltro = miFiltro & " AND [Me.DTPickerdesde.Value]>=#" & Format(vFechaIni, "mm/dd/yyyy") & "#"
    End If

Lo que te pongo en negrita tendrás que cambiarlo por el nombre del campo de tu tabla que recoge la fecha, por poner un ejemplo:

'Primera parte del Filtro'
    If vFechaIni <> -1 Then
       miFiltro = miFiltro & " AND FechaCobro>=#" & Format(vFechaIni, "mm/dd/yyyy") & "#"
    End If

Te recuerdo que tienes otra pregunta pendiente sobre DataPickers.

Un saludo


¡Gracias!  lo ensayare..

Funciona perfecto  con el filtro en las fechas solo que ahora quisiera preguntarte como hacer para qe dependiendo del rango de fechas que se tome en el datapicker pudiera colocar un cuadro de texto que se me refleje en el informe desde  [dato del data picker]   hasta  [dato del datapicker]

y gracias por tu colaboracion

Si no cierras el formulario con los DT al abrir el informe tienes varias opciones:

1º/ Después del DoCmd. OpenReport añades esta línea:

Report("rptabonosxcobrador").NombreTxt="Resultados entre el " & Me.DTPickerdesde.Value & " y el " & DTPickerhasta.Value

2º/ En el cuadro de texto del informe escribes:

="Resultados entre el " & [Formularios]![NombreForm].[Formulario].[DTPickerdesde.Value] & " y el " & [Formularios]![NombreForm].[Formulario].[DTPickerhasta.Value]

3º/ En el evento "Al cargar", o "al abrir" del informe, le generas este código:

Me.NombreTxt="Resultados entre el " & [Forms]![NombreForm].[Formulario].[DTPickerdesde.Value] & " y el " & [Forms]![NombreForm].[Formulario].[DTPickerhasta.Value]

Obviamente tendrás que controlar que hayas escogido algún valor en los DTPickers.

Saludos  agradezco de antemano la gran colaboracion que me brindas en el desarrollo de mi proyecto ... he terminado de generar mi formulario con el filtro con varios criterios respecto a la fechas intente de las tres formas pero pareciera que el datapicker no pasara la informacion al informe , la unica opcion que encontre es generar unos cuadros de texto anexo a los campos data picker y pasar la informacion alli y luego al formulario agradezco de antemano tu colaboracion

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas