Sumar celdas en un formulario

Hola a todos alguien me ayuda quiero solucionar esto pero no se como hacer que funcione sumar un registro anterior con el nuevo y así sucesivamente.

Respuesta
1

Una consideración previa. Para poder usar el código que te adjunto y guardar en el campo Total la suma de todos los subtotales de los registros previos (y el activo), los campos Subtotal y Total del formulario deben de estar basados en campos del mismo nombre en la tabla. Puedes modificar el código para que simplemente se muestre en un campo independiente del formulario el total que se calcule (sin guardarlo en tablas el dato), pero en ese caso debes de añadir código similar al que te adjunto asociado al evento abrir del formulario (al no estar guardado para presentarlo tienes que recalcularlo al abrir el formulario, al insertar un nuevo registro, al editar un registro previo ya existente...)

Private Sub Form_AfterInsert()
On Error GoTo Err_Form_AfterInsert
    Dim misRegistros As Recordset, miTotal As Currency
    Set misRegistros = Me.RecordsetClone
    With misRegistros
        If .EOF And .BOF Then
            Exit Sub
        Else
            .MoveLast
            .MoveFirst
            Do Until .EOF
                miValor = miValor + Nz(!Subtotal, 0)
                .MoveNext
            Loop
         End If
         .Close
    End With
    Me.Total = miValor
Exit_Form_AfterInsert:
    Exit Sub
Err_Form_AfterInsert:
    MsgBox Err.Description
    Resume Exit_Form_AfterInsert
End Sub

Como te decía este código lo anexas al evento Después de insertar del subformulario Registros. Cada vez que insertes un registro nuevo calcula la suma de Subtotal de todos los registros (previos más actual) que están en el subformulario,  y pone ese valor en el campo Total.

Cordiales saludos.

2 respuestas más de otros expertos

Respuesta

Aclarar que Access NO es Excel. Access no tiene Celdas, tiene Registros.

Ahora respecto a tu interrogante: De poderse se puede, la pregunta sería: ¿No sería mejor obtener la suma total al pie?

Respuesta

Si en la tabla secundaria tienes un ID con un autonumérico podrías poner una función del estilo:

=Dsum("Subtotal";"Registros";"ID<IDdado AND CampoEnlace = " & ValorEnlace & "")

Yo usé algo similar en algo similar a un libro de caja y funcionó, pero hace que el proceso sea más lento y no te guarda los resultados. En ese caso era indiferente que los guardara.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas