Access - Duda

   
Vista:

Duda

Publicado por ALFONSO (2 intervenciones) el 17/04/2014 08:21:28
Buenas
Tengo una duda y no se que estoy haciendo mal:

Tengo un formulario en el que quiero filrar la información por trimestre dependiendo de los valores que introduzco en un cuadro combinado51 (indico el trimestre) y en un campo texto53 (indicar el año).

El problema es que cuando selecciono el trimestre 1 o 2, el filtro lo hace perfectamente, pero cuando selecciono el trimestre 3, no se porque me filtra registros con la fecha 01/04/XXXX hasta 30/09/xxxx, cuando en teoría me debería filtrar solo los registros desde 01/07/xxxx hasta 30/09/xxxx y al seleccionar trimestrel 4 me filtra registros con fecha desde 01/04/xxxx hasta 31/12/xxxx.

No se que estoy haciendo mal, necesito ayuda.

Adjunto el código que tengo puesto despues de actualizar el año

Gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub Texto53_AfterUpdate()
Dim sFiltro1 As String
Dim DiaIni As Integer
Dim MesIni As Integer
Dim sFecha1 As Date
Dim DiaFin As Integer
Dim MesFin As Integer
Dim sFecha2 As Date
 
Me.Form.FilterOn = False
If Me.Cuadro_combinado51 = 1 Then
    DiaIni = 1
    MesIni = 1
    DiaFin = 31
    MesFin = 3
End If
If Me.Cuadro_combinado51 = 2 Then
    DiaIni = 1
    MesIni = 4
    DiaFin = 30
    MesFin = 6
End If
If Me.Cuadro_combinado51 = 3 Then
    DiaIni = 1
    MesIni = 7
    DiaFin = 30
    MesFin = 9
End If
If Me.Cuadro_combinado51 = 4 Then
    DiaIni = 1
    MesIni = 10
    DiaFin = 31
    MesFin = 12
End If
 
If IsNull(Me.Texto53) Then
Else
sFecha1 = DiaIni & "/" & MesIni & "/" & Me.Texto53
sFecha2 = DiaFin & "/" & MesFin & "/" & Me.Texto53
sFiltro = "Fecha BETWEEN  #" & sFecha1 & "# AND  #" & sFecha2 & "#"
Me.Form.Filter = sFiltro
Me.Form.FilterOn = True
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Duda

Publicado por jose (741 intervenciones) el 20/04/2014 17:24:00
SALUDOS ALFONSO

como a mi no me gusta trabajar con filtros sino con sentencias sql te voy a propopner u a solución a lo que tu pretendes
Se trata de modifcar el origen de datos del formulario
solamente tienes que cambiar el nombe de la tabla

-----------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Sub Etiqueta0_Click()
Private Sub Texto53_AfterUpdate()
 Dim sFiltro1 As String
 Dim DiaIni As Integer
 Dim MesIni As Integer
 Dim sFecha1 As Date
Dim DiaFin As Integer
Dim MesFin As Integer
Dim sFecha2 As Date
 
 
Select Case Me.Cuadro_combinado51
 
 
 
Case Is = 1
        DiaIni = 1
        MesIni = 1
        DiaFin = 31
         MesFin = 3
 
Case Is = 2
        DiaIni = 1
        MesIni = 4
        DiaFin = 30
         MesFin = 6
 
Case Is = 3
        DiaIni = 1
        MesIni = 7
        DiaFin = 30
         MesFin = 9
 
Case Is = 4
        DiaIni = 1
        MesIni = 10
        DiaFin = 31
         MesFin = 12
 
End Select
sFecha1 = DiaIni & "/" & MesIni & "/" & Me.Texto53
sFecha2 = DiaFin & "/" & MesFin & "/" & Me.Texto53
 
Rem cambia  el nombre de la tabla  NOMBREtabla  por el qur tengas
 
sqla = "SELECT NOMBREtabla.* FROM NOMBREtabla WHERE (((NOMBREtabla.Fecha) Between #" & Format$(sFecha1, "mm/dd/yyyy") & "#  And  #" & Format$(sFecha2, "mm/dd/yyyy") & "#  ));"
Me.RecordSource = sqla
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar