¿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