Suma con un ticket en un subformulario

Necesito sumar un en un sub formulario con un ticket (SI/NO)

Ejemplo Fini-Maestranza $214.583, lo anoto en Nombre porque suma al total, la idea es tikear lo marcado para que sume y lo no tikeado hacer una suma para saber cuanto me falta por pagar

Respuesta
1

Valentín: Dado que no facilitas Nombres de tus Objetos, elegiré unos y tú los Cambias por los que tengas.
También voy a suponer que el SubFormulario está “Conectado” al Formulario por un Identificador, como Clave primaria en el Formulario y Secundaria en SubFormulario.
Para el ejemplo voy a imaginar la situación de que en un momento determinado, tú quieres saber, que cantidad tienes pendiente de pago a un Proveedor.
Contemplo todo el historial y si quieres una parte desde una Fecha o entre Fechas se deberían de poner en los Criterios

En el Form_Curren(Al actualizar registro) del “Formulario” principal pones éste código
Verás que sale un Nombre que es FuenteAlfa. Es el origen de Datos del SubFormulario (Tabla o Consulta)

Private Sub Form_Current()
Call CalculaNuevosValores
End Sub
Public Sub CalculaNuevosValores()
Dim CriterioUno As String, CriterioDos As String, Criterios As String, StrSQL As String
Dim Rst As DAO.Recordset
CriterioUno = “Pagado = False”
‘Puedes poner si quieres
‘CriterioUno = “Pagado = 0”
CriterioDos  = “IdProveedor = “ & Me.IdProveedor
Criterios = CriterioUno & “ AND “ & CriterioDos
'Calculo la suma de los Montos en base a los criterios
StrSQL = "SELECT Sum([Monto]) AS Deuda"
StrSQL = StrSQL & " FROM [FuenteAlfa] WHERE " & Criterios
Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
If Not (Rst.BOF And Rst.EOF) Then
     Me.TxtDeuda = Rst!Deuda 'TxtDeuda es el cuadro de Texto en Formulario Principal
End If
If Not Rst Is Nothing Then
     Rst.Close
     Set Rst = Nothing
End If  
End Sub    'CalculaNuevosValores

Voy a suponer que el CheckBox de pagado o no en el Subformulario se llama ChkPagado.
En el evento de ese Check box Despues de actualizar. Lógicamente el código debe estar en el SubFormulario

Private Sub ChkPagado_AfterUpdate()
Me.Parent.CalculaNuevosValores
End Sub

Como puedes apreciar éste último procedimiento puede ser Private, pero "CalculaNuevosValores" ha de ser Public

Creo no haberme olvidado nada, pero si tienes dificultades me comentas.

Mis saludos >> Jacinto

Gracias por tu respuesta

Lo hice pero me resulta

https://www.dropbox.com/s/whmtg72q7rc94ga/Costos.accdb?dl=0 

Ayudaaaaa

Valentín: este es el enlace de tu BD Modificada.

Ya verás la metodología y los comentarios en el propio código

http://www.mediafire.com/download/qog8272thk3qklx/CostosValVe.rar 

Mis saludos >> Jacinto

¡Gracias! 

Super gracias, me cuesta un poco, pero sigo aprendiendo,.

Hola Jacinto mira replique lo mismo para Costos Fijos lo hice técnicamente igual y copie el código pero la ultima parte no la entendí y es lo que me arroja error, supongo que debo cambiarlo, pero no se donde, gracias

Sub CierraRstDAO(Rst As DAO.Recordset)

On Error Resume Next

If Not Rst Is Nothing Then
Rst.Close
Set Rst = Nothing
End If

End Sub

Valentin: En mi opinión y de momento, si no estás muy acostumbrado a usar código, y mientras te familiarizas un poco más, te sugeriría la solución de Sveinbjorn.

En la BD que pusiste en DopBox, he visto que el código saltaba entre otras cosas, porque no habías sustituido el Nombre de la Tabla.

Repasa la BD que te puse en Mediafire, y si sigues teniendo dificultades, me vuelves a comentar o generas otra pregunta y te podrás beneficiar de otras respuestas, como en ha sido en éste caso. Mis saludos >> Jacinto

1 respuesta más de otro experto

Respuesta
1

Si no dominas el código VBA, puedes probar con la función DSuma() como origen de control de tus cuadros de texto. Tendrás que usar dos funciones en dos cuadros de texto, a una poniéndole como criterio que te sume los que tengan el check "Verdadero" y a la otra los que sean "Falso"

Para que tengas otra forma, te resubo tu archivo con mi propuesta: http://www.filebig.net/files/S24deUDZhm

Verás que en el subformulario "Variables" hago los cálculos con DSuma(), poniendo como criterios el IDCosto y Si el campo Pagado es verdadero o falso.

Saludos!


Una nueva web de Access, visítanos: http://nksvaccessolutions.com/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas