totalizar un campo en un formulario en el que hay filtros
Publicado por vicente (23 intervenciones) el 01/09/2018 14:33:55
Hola. Empezaré desde el principio.
Por veces anteriores sabréis que estoy con una BD Biblioteca que creo muy avanzada para lo que pretendía sin tener ningún conocimiento de Access y menos en Visual Basic.
Ahora mismo estoy finalizándola –La BD-, pero me van surgiendo ideas, igual descabelladas, pero que creo conveniente intentar resolverlas porque dan un empaque a toda la BD.
Como es una biblioteca de una empresa –como ya dije en algún otro momento- y que la compra de nuevos libros se genera por el alquiler del libro a los empleados o las donaciones que estos hacen, he pensado que se podría tener una atención con aquellos que su contribución haya sido generosa a lo largo del tiempo, bien sea porque es un asiduo lector/a o a su generosidad en el “día del libro”, para lo que he generado una consulta que tiene los campos :”NIF, Usuario” de la tabla usuarios y de la tabla Donaciones los campos UsuarioD, DNI_NIF, Fecha, DonaciónD, IdSituaciones y un campo Tot_donaciones: DSuma("DonaciónD";"[Consulta donaciones]";"usuari"). La consulta está vinculada a un formulario CONSULTA DE DONACIONES el cual tiene dos filtros, uno por el empleado, y otro para fechas (nicial y final).
El formulario funciona “PARCIALMENTE” correctamente con la siguiente formulación:
SIGUIENDO PARA QUITAR FILTROS CON LA SIGUIENTE INSTRUCCIÓN:
Me gustaría saber de qué manera puedo hacer para que dependiendo del filtro que utilice, uno, dos o ninguno, el campo Tot_donaciones apareciera con las cantidades donadas por el empleado, por el empleado en el tiempo acotado o si no hay acotamiento el importe total recaudado por el concepto “DONACIÓN”.
Anteriormente y antes de encontrar la solución indicada arriba utilizaba la consulta “Consulta de_donaciones” con un filtro Como "*" & [Forms]![Donaciones]![Usuari] & "*" y la instrucción al comando consultar era la que sigue:
Con esta instrucción conseguía el número de apuntes y el importe donado por el empleado pero ahora no sé de que manera conjugar ambas formulaciones para que el resultado sea el esperado.
Por veces anteriores sabréis que estoy con una BD Biblioteca que creo muy avanzada para lo que pretendía sin tener ningún conocimiento de Access y menos en Visual Basic.
Ahora mismo estoy finalizándola –La BD-, pero me van surgiendo ideas, igual descabelladas, pero que creo conveniente intentar resolverlas porque dan un empaque a toda la BD.
Como es una biblioteca de una empresa –como ya dije en algún otro momento- y que la compra de nuevos libros se genera por el alquiler del libro a los empleados o las donaciones que estos hacen, he pensado que se podría tener una atención con aquellos que su contribución haya sido generosa a lo largo del tiempo, bien sea porque es un asiduo lector/a o a su generosidad en el “día del libro”, para lo que he generado una consulta que tiene los campos :”NIF, Usuario” de la tabla usuarios y de la tabla Donaciones los campos UsuarioD, DNI_NIF, Fecha, DonaciónD, IdSituaciones y un campo Tot_donaciones: DSuma("DonaciónD";"[Consulta donaciones]";"usuari"). La consulta está vinculada a un formulario CONSULTA DE DONACIONES el cual tiene dos filtros, uno por el empleado, y otro para fechas (nicial y final).
El formulario funciona “PARCIALMENTE” correctamente con la siguiente formulación:
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
Private Sub cmdFiltrar_Click()
Dim Filtro As String
Dim Usuari As String
If Not IsNull(Me.Usuari) And Me.Usuari <> "" Then
Usuari = "Usuari LIKE '*" & Me.Usuari & "*'"
Me.Section(0).Visible = True
Else
Usuari = ""
End If
If IsNull(Me.txtFechaInicio) And IsNull(Me.txtFechaFin) Then
Fecha = ""
Else
Fecha = "Fecha BETWEEN #" & Format(Nz(Me.txtFechaInicio, #1/1/1900#), "mm-dd-yyyy") & _
"# AND #" & Format(Nz(Me.txtFechaFin, #12/31/9999#), "mm-dd-yyyy") & "#"
End If
If Usuari <> "" Then
Filtro = Usuari
End If
If Fecha <> "" Then
If Filtro <> "" Then
Filtro = Filtro & " AND " & Fecha
Else
Filtro = Fecha
End If
End If
If Filtro <> "" Then
Me.[Subformulario búsqueda del donante].Form.Filter = Filtro
Me.[Subformulario búsqueda del donante].Form.FilterOn = True
Else
Me.[Subformulario búsqueda del donante].Form.FilterOn = False
End If
End Sub
SIGUIENDO PARA QUITAR FILTROS CON LA SIGUIENTE INSTRUCCIÓN:
1
2
3
4
5
6
7
8
Private Sub cmdQuitarFiltro_Click()
Me.Section(0).Visible = True
Me.[Subformulario búsqueda del donante].Form.Filter = ""
Me.[Subformulario búsqueda del donante].Form.FilterOn = False
Me.Usuari = Null
Me.txtFechaInicio = Null
Me.txtFechaFin = Null
Me gustaría saber de qué manera puedo hacer para que dependiendo del filtro que utilice, uno, dos o ninguno, el campo Tot_donaciones apareciera con las cantidades donadas por el empleado, por el empleado en el tiempo acotado o si no hay acotamiento el importe total recaudado por el concepto “DONACIÓN”.
Anteriormente y antes de encontrar la solución indicada arriba utilizaba la consulta “Consulta de_donaciones” con un filtro Como "*" & [Forms]![Donaciones]![Usuari] & "*" y la instrucción al comando consultar era la que sigue:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim CuentaRegistro As Integer
Me.Section(0).Visible = False
DoCmd.Requery
Me.Refresh
If IsNull(Me![Usuari]) Then
MsgBox "Debe de introducir un dato, repita la consulta.", vbExclamation, "CONSULTA FALLIDA"
Me!Usuari.SetFocus
Else
CuentaRegistro = DCount("*", "Consulta donaciones")
Me!encontrados = CuentaRegistro
If CuentaRegistro >= 1 Then
Me.Section(0).Visible = True
[Subformulario búsqueda del donante].SetFocus
Else
MsgBox "REGISTRO NO ENCONTRADO, VUELVA A INTENTARLO.", vbExclamation, "Búsqueda Fallida"
Me!Usuari.SetFocus
Me!Usuari = Null
Me.Section(0).Visible = False
End If
End If
Con esta instrucción conseguía el número de apuntes y el importe donado por el empleado pero ahora no sé de que manera conjugar ambas formulaciones para que el resultado sea el esperado.
Valora esta pregunta


0