¿Cómo Agregar filtro a Contador Tipo Saldo?

He estado utilizando los ejemplos que tiene neckkito en su página y los he ido adaptando a access, actualmente tengo tres tablas(vacaciones, funcionarios y periodos) que están relacionadas por el id_funcionario(identificación), ahora gracias a los ejemplos ContadorTipoSaldo y GestionAlmacen de neckkito creí que ya lo tenia solucionado el contador del saldo de vacaciones, ala ejemplo ContadorTipoSaldo le agregue un botón para que me filtrara los saldos del funcionario que estoy consultado con el sigiuiente código:

    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "frm_Detalle_Funcionario"
    
    stLinkCriteria = "[identificacion]=" & "'" & Me![txt_identificacion_vacaciones] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

Me lo filtra sin problemas, ahora cuando oprimo el botón de calcular saldo lo hace bien, el problema que tengo es cuando cambio de funcionario ya que el código de calcular saldo toma el ultimo saldo que es de otro funcionario y se lo descuanta . Lo que necesito es que cuando cambio de funcionario y trate calcular el saldo, este tome el saldo que tiene cada funcionario que he registrado en la tabla periodos.

Tablas:

Campos tabla vacaciones: identificacion, fec_ini, fec_fin, dias_disfruta y saldo

Campos tabla funcionarios: identificacion, nombre, etc

Campos tabla periodo: identificacion, dias_a_disfrutar

identificacion= identificacion del funcionario

dias_disfruta= son los dias que va a disfrutar

dias_a_disfrutar= son los dias que tiene derecho a disfrutar

Codigo de neckkito para el calculo de saldo:

Private Sub Calcular_Saldo()
'---Requiere tener registrada la referencia "Microsoft DAO 3.6 Object Library"
'---o biblioteca equivalente---------------------------------------------------------------------------------------------------------------------
        'Declaramos las variables
    Dim rst As DAO.Recordset
    Dim vIng As Currency, vGto As Currency
    Dim vSaldo As Currency
    Dim miSql As String
        'Creamos la consulta para ordenar los movimientos por fecha
    miSql = "SELECT * FROM tbl_vacaciones ORDER BY tbl_vacaciones.Id"
        'Inicializamos vSaldo
    vSaldo = 0
        'Creamos el recordset sobre la SQL
    Set rst = CurrentDb.OpenRecordset(miSql)
        'Si no hubiera registros saltamos a Salida
    If rst.RecordCount = 0 Then GoTo Salida
        'Iniciamos el proceso de actualización de [Saldo]
    With rst
        .MoveFirst
        Do Until .EOF
                'Cogemos el valor del ingreso. Si no hay valor hacemos que el valor por defecto sea cero
            vIng = Nz(.Fields("dias_a_disfrutar").Value, 0)
                'Cogemos el valor del gasto. Si no hay valor hacemos que el valor por defecto sea cero
            vGto = Nz(.Fields("dias_disfruta").Value, 0)
                'Calculamos el saldo del movimiento
            vSaldo = vSaldo + vIng - vGto
                'Escribimos dicho valor en la tabla
            .Edit
            .Fields("Saldo").Value = vSaldo
            .Update
                'Nos movemos al siguiente registro
            .MoveNext
        Loop
    End With
Salida:
        'Cerramos conexiones y liberamos memoria
    rst.Close
    Set rst = Nothing
End Sub

Añade tu respuesta

Haz clic para o