Filtro desde un formulario

Trabajo con access 2003 y tengo un formulario con un rango de fechas que me devuelve un informe con un titulo "desde el día: xxxx" "hasta el día: xxx", lo que necesito ahora es adicionar el asesor a este informe y que en el formulario de rango pueda seleccionar este asesor.
En el formulario quedaría así: un cuadro combinado para seleccionar el asesor.
Uno independiente de fecha inicial para escribir la fecha inicial
otro independiente para la fecha final
botón aceptar y cancelar.

1 respuesta

Respuesta
1
¿Lo de adicionar el asesor al informe te refieres a filtrar el informe por el campo asesor o mandarlo como texto para que salga en el titulo?
Me cuentas.
Haber; son las dos situaciones:
Los datos salen de una consulta en donde hay varios campos dentro de ellos:
"asesor" "fecha"
Como te indicaba ya tengo un formulario que trae la fecha inicial y fecha final y la pone en el informe.
Ahora el usuario del informe debe poder elegir el asesor y de acuerdo al rango de fechas sacar un reporte que muestre el nombre del asesor y el rango de fechas.
Gracias de nuevo.
A ver si me entero. Tenemos una tabla Tabla1 con los campos Asesor y Fecha, un formulario con los cuadros de texto FechaIni y FechaFin para introducir el rango que fechas que quiero seleccionar de Tabla1, si queremos seleccionar el asesor insertaremos un cuadro combinado que llamamos selAse, en origen de la fila pondremos Select Asesor from Tabla1 order by Asesor. En la acción Al hacer clic ---> Procedimiento de Evento ---> Me. Refresh
Un botón, y en el código de ese botón:
' Declaramos las variables
Public vAsesor as string
Public vFxIni as string
Public vFxFin as string
' Damos valor a las variables
vAsesor=Form!selAse.Value
vFxIni=Form!FechaIni.Value
vFxFin=Form!FechaFin.Value
' Después abriremos el informe
DoCmd. OpenReport "NombreDelInforme", acViewPreview
Como este informe lo tendremos basado en una consulta en los criterios de esa consulta utilizamos las variables públicas (las declaramos públicas para que nos valgan en cualquier sitio de la BD)
Para basar un informe en una consulta lo mejor es hacer la consulta DENTRO del informe. en origen del registro picas en el cuadrado de la derecha, el de los ... y ahí construyes la consulta. La sql sería algo así: Select Asesor, Fecha from Tabla1 where Asesor='" & vAsesor & "' and Fecha>=cDate('" & vFxIni & "') and Fecha<=cDate('" & vFxFin " ')
Me cuentas.
Gracias
Voy a intentarlo como me lo planteas y luego te cuento.
De acuerdo,
Una cosa, las variables públicas es mejor que las declares en un módulo. Vas a la pestaña de módulos abres uno nuevo y las declaras, después guardas el módulo con el nombre que quieras.
Te envío el código que tengo en el informe
Private Sub Report_Open(Cancel As Integer)
       DoCmd.Maximize
    Dim FechaInicial As String, FechaFinal As String, DocuAsesor As String
    Forms.Item("RangoFechaAsesor").FechaInicial.SetFocus
    FechaInicial = Format(Forms.Item("RangoFechaAsesor").FechaInicial.Text, "mm/dd/yyyy")
    Forms.Item("RangoFechaAsesor").FechaFinal.SetFocus
    FechaFinal = Format(Forms.Item("RangoFechaAsesor").FechaFinal.Text, "mm/dd/yyyy")
    Me.RecordSource = "Select * From Contratos Where FechaAfiliacion Between #" & FechaInicial & "# And #" & FechaFinal & "#"
    Forms.Item("RangoFechaAsesor").FechaInicial.SetFocus
    Me.titulo.Caption = "Desde el día: " & Forms.Item("RangoFechaAsesor").FechaInicial.Text & " Hasta el día: "
    Forms.Item("RangoFechaAsesor").FechaFinal.SetFocus
    Me.titulo.Caption = Me.titulo.Caption & Forms.Item("RangoFechaAsesor").FechaFinal.Text
End Sub
RangoFechaAsesor es el formulario
y en el procedimiento de evento del botón aceptar tengo
Private Sub Aceptar_Click()
 DoCmd.OpenReport "InCobrosporAsesor", acViewPreview
End Sub
Hasta aquí me funciona bien y me trae todo lo de la consulta con el rango de fechas que le indico en el formulario "RangoFechaAsesor"
A este formulario es al que quiero agregarle el Asesor y que me salga su nombre en el informe.
Gracias de nuevo.
Esto de crear módulos aun no lo he implementado porque no lo entiendo muy bien. Pero ya investigare a fondo.
Si como creo, el asesor no entra en los criterios de la consulta, sino que unicamente lo necesitas para ponerlo en el titulo, entonces unicamente tendrías que declarar la variable vAsesor y darle el valor del cuadro combinado como te dije, el la acción al hacer clic del cuadro combinado.
Al tener el valor de la variable lo puedes utilizar en el código que tienes en la acción Al abrir el informe, crearías un cuadro de texto en el informe (que se llame por ejemplo txtAsesor) y pondrías en el código que tienes:
Report!txtAsesor.Value=vAsesor
En cuanto a los módulos, es exactamente igual que cuando escribes el código en la acción al abrir el informe. En un módulo se pueden crear funciones o procedimientos que puedes ejecutar desde el propio módulo o llamar a la función desde una macro por ejemplo. Si te dije que declarases las variables en un módulo es porque al declararlas como públicas las puedes utilizar en cualquier parte y momento de la aplicación.
Me cuentas.
Ok revisare y te cuento. Gracias
El modulo lo bautice ModuloAsesor
E incluí esto:
option Compare Database
Public vAsesor As String
Public FechaInicial As String
Public FechaFinal As String
vAsesor = Form!SelAse.Value
FechaInicial = Form!FechaInicial.Value
FechaFinal = Form!FechaFinal.Value
¿Esta Bien?
En el INFORME quedaría así:
Option Compare Database
Private Sub Report_Open(Cancel As Integer)
       DoCmd.Maximize
        Dim FechaInicial As String, FechaFinal As String, Asesor As String
        Forms.Item("RangoFechaAsesor").FechaInicial.SetFocus
        FechaInicial = Format(Forms.Item("RangoFechaAsesor").FechaInicial.Text,   "mm/dd/yyyy")
        Forms.Item("RangoFechaAsesor").FechaFinal.SetFocus
        FechaFinal = Format(Forms.Item("RangoFechaAsesor").FechaFinal.Text, "mm/dd/yyyy")
        Me.RecordSource = "Select * From Contratos Where FechaAfiliacion Between #" &    FechaInicial & "# And #" & FechaFinal & "#"
        Forms.Item("RangoFechaAsesor").FechaInicial.SetFocus
        Me.titulo.Caption = "Desde el día: " & Forms.Item  ("RangoFechaAsesor").FechaInicial.Text & " Hasta el día: "
        Forms.Item("RangoFechaAsesor").FechaFinal.SetFocus
       Me.titulo.Caption = Me.titulo.Caption & Forms.Item("RangoFechaAsesor").FechaFinal.Text
Report!txtAsesor.Value = Asesor
End Sub
LE AÑADI Report!txtAsesor.Value = Asesor
Y al ejecutarlo me sale en amarillo este renglón...
El nombre de la variable es vAsesor
Report!txtAsesor.Value = vAsesor
Lo he cambiado a vasesor
Y me sigue saliendo amarillo al ejecutarlo
¿Qué hago?
No se que puede estar mal, si te parece me mandas la BD (en access 2003 y comprimida en zip o rar si puede ser) y la echo un vistazo.
[email protected]
Listo
Ya Tela envíe.
La he recibido, el lunes lo miro... ahora me voy de fin de semana.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas