Open nito1972 opened 1 year ago
Debes aprovechar el sql para llenar el cuadro de lista y usarlo para obtener la sume de importes:
Sub buscar1()
On Error Resume Next
Dim mySql As String
Dim fInicio As String
Dim fFin As String
Dim strCuenta As String
Dim strDoc As String
Dim strNombre As String
If IsNull(Me.txtFDesde) Then
fInicio = "1/1/1900"
Else
fInicio = Format(Me.txtFDesde, "MM/dd/yyyy")
End If
If IsNull(Me.txtFHasta) Then
fFin = "12/31/2900"
Else
fFin = Format(Me.txtFHasta, "MM/dd/yyyy")
End If
strCuenta = Me.txtCuenta
If IsNull(Me.txtDocumento) Or Me.txtDocumento = "" Then
strDoc = "**"
Else
strDoc = Me.txtDocumento
End If
strNombre = Me.txtNombre
mySql = "SELECT csResumen.*"
mySql = mySql & " FROM csResumen"
mySql = mySql & " where (((csResumen.Cuenta) Like '*" & strCuenta & "*')"
mySql = mySql & " And ((csResumen.nombre) Like '*" & strNombre & "*')"
mySql = mySql & " And ((csResumen.fecha) Between #" & fInicio & "# And #" & fFin & "#)"
mySql = mySql & " And ((csResumen.documento) Like '" & strDoc & "'))"
mySql = mySql & " ORDER BY csResumen.fecha;"
Me.Lista192.RowSource = mySql
Me.txtImportetotal = calculaImporteLista(mySql)
End Sub
Function calculaImporteLista(mySqlOrigen As String) As Variant
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim mySql As String
'Definimos las variables
mySql = "SELECT Sum(XLista.importe) AS SumaDeimporte FROM (" & Left(mySqlOrigen, Len(mySqlOrigen) - 1) & ") As XLista" 'usamos left para quitar el ; final
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(mySql, dbOpenSnapshot)
calculaImporteLista = rst(0).Value
'Limpiamos memoria
If Not rst Is Nothing Then
rst.Close
Set rst = Nothing
End If
If Not dbs Is Nothing Then
dbs.Close
Set dbs = Nothing
End If
End Function
Hola y gracias Juanjo por el desarrollo de la función que has creado. Está genial eres un monstruo 👍 👍 👍 Aprovechando la idea y con tú permiso he creado otra función para contar los registros filtrados, tal que así:
'Me.txtTotalFiltrado = contarRegistros(mySql) <---Esto en el botón filtrar.
`Function contarRegistros(mySqlOrigen As String) As Variant
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim mySql As String
'Definimos las variables
mySql = "SELECT Count(XLista.Reg) AS SumaDeimporte FROM (" & Left(mySqlOrigen, Len(mySqlOrigen) - 1) & ") As XLista" 'usamos left para quitar el ; final
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(mySql, dbOpenSnapshot)
contarRegistros = rst(0).Value
'Limpiamos memoria
If Not rst Is Nothing Then
rst.Close
Set rst = Nothing
End If
If Not dbs Is Nothing Then
dbs.Close
Set dbs = Nothing
End If
End Function
No sé si es correcto del todo pero funciona. Un abrazo Juanjo y muchas gracias por tú tiempo.
Descripción del problema: Hola a todos; Me gustaría saber cómo puedo obtener la suma de un campo de un cuadro de lista una vez he hecho el filtrado. Si me podéis recomendar algún ejemplo para ir viendo también se agradece.
Código:
Captura de pantalla: Aquí puedes colocar las capturas de pantalla que ayuden a entender el problema
Archivos: Si lo deseas, puedes subir tu archivo Saludos y buen día Benito.