Access - trabajar con valores de diferentes registros

 
Vista:

trabajar con valores de diferentes registros

Publicado por alejandro (49 intervenciones) el 18/10/2005 13:38:31
ya he puesto mas notas pero no me ha contestado nadie aun. os pido ayuda para realizar lo siguiente:

tengo un formulario en el que se va formando a modo de tabla la estructura

realizadas a compensar compensadas sobrante

5 5 0 5
7 7,68 0 12.68
0 0 2.68 10


el proceso es el que he indicado pero cada vez que se haya el sobrante en el registro anterior quiero que salga cero.
como puedo hacerlo para trabajar con cajas de texto y sus respectivos valores si pertenecen a varios registros?

ayudadme por favor. 1 saludo y gracias de antemano
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
Imágen de perfil de Alejandro

Calcular Sobrante y restablecer en cero según registro anterior

Publicado por Alejandro (4142 intervenciones) el 12/06/2023 22:08:02
Hola, tocayo.

Para lograr lo que deseas en tu formulario, puedes utilizar una combinación de eventos y variables en VBA (Visual Basic for Applications). Aquí tienes los pasos a seguir:

1. Abre el formulario en vista de diseño y asegúrate de que las cajas de texto tengan nombres descriptivos para facilitar el manejo en VBA. Por ejemplo, puedes llamar a las cajas de texto: txtRealizadas, txtCompensar, txtCompensadas y txtSobrante.

2. Abre el editor de VBA presionando Alt + F11. Busca el formulario en el Explorador de proyectos y haz doble clic en su nombre para abrir el código del formulario.

3. En el evento "Después de actualizar" de la caja de texto txtRealizadas, agrega el siguiente código:

1
2
3
Private Sub txtRealizadas_AfterUpdate()
    CalcularSobrante
End Sub

4. En el evento "Después de actualizar" de la caja de texto txtCompensar, agrega el siguiente código:

1
2
3
Private Sub txtCompensar_AfterUpdate()
    CalcularSobrante
End Sub

5. En el evento "Después de actualizar" de la caja de texto txtCompensadas, agrega el siguiente código:

1
2
3
Private Sub txtCompensadas_AfterUpdate()
    CalcularSobrante
End Sub

6. En el editor de VBA, debajo de los eventos recién agregados, crea una nueva función llamada "CalcularSobrante" con el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub CalcularSobrante()
    Dim realizadas As Double
    Dim compensar As Double
    Dim compensadas As Double
 
    realizadas = Nz(Me.txtRealizadas.Value, 0)
    compensar = Nz(Me.txtCompensar.Value, 0)
    compensadas = Nz(Me.txtCompensadas.Value, 0)
 
    Me.txtSobrante.Value = realizadas - compensar - compensadas
 
    If Me.CurrentRecord > 1 Then
        Dim registroAnterior As Integer
        registroAnterior = Me.CurrentRecord - 1
 
        Dim sobranteAnterior As Double
        sobranteAnterior = Nz(Me("txtSobrante" & registroAnterior).Value, 0)
 
        If sobranteAnterior > 0 Then
            Me.txtSobrante.Value = 0
        End If
    End If
End Sub

En esta función, se obtienen los valores de las cajas de texto y se realiza el cálculo del campo Sobrante. Luego, se verifica si el registro actual es mayor que 1 y, si es así, se obtiene el valor del Sobrante del registro anterior. Si el Sobrante anterior es mayor que 0, se establece el valor del Sobrante actual en 0.

Guarda los cambios en el editor de VBA y ciérralo.

Ahora, cuando ingreses los valores en las cajas de texto, el campo Sobrante se calculará automáticamente y, si hay un Sobrante en el registro anterior, se establecerá en 0.

Espero que esto te ayude a lograr lo que buscas en tu formulario.
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