Suma Campos Continuos Condicionados en Formulario
Tengo un gran problema con el cual ya no puedo más y ojala tu me puedas apoyar.
Deseo sumar los campos continuos de un formulario dependiendo del concepto capturado. Ejemplo del subformulario "REPORTE DE VIAJE":
Folio de Orden de Viaje = 0001 (ID)
Concepto = Comida
Monto = 10
Concepto = Comida
Monto = 20
Concepto = Comida
Monto = 30
Como veras el usuario esta capturando en el registro 0001 varios conceptos de Comida pero con diferentes montos, y eso es lo que deseo calcular; he utilizado la función DSUM, pero ha sid muy complicado para mi el comprenderla.
Al mismo tiempo, esto fue solo por concepto de comida, pero igual hay otros 8 diferentes conceptos que de igual modo deseo irlos sumando al momento de la captura en el formulario.
Una vez logrado esto, viene la segunda parte.
Al mismo tiempo, dentro de este mismo formulario, tengo otro subformulario llamado "ORDEN DE VIAJE", la cual ya capturado por ejemplo:
Folio de Orden de Viaje = 0001
Concepto = Comida
Monto = 100
Concepto = Hotel
Monto = 200
Estos montos ya son fijos, entonces, deseo que cuando el usuario inicie la carga del detalle del REPORTE DE VIAJE, vaya sumando los conceptos de comida pero al mismo tiempo comparando que la suma de dichos montos no sean mayores al de la ORDEN DE VIAJE por concepto de comida. Es decir:
Reporte de Viaje=Monto_Comida no sea mayor que Orden de Viaje=Monto_Comida
Aquí te dejo parte del código que he diseñado, pero al momento no me esta funcionando como quisiera, y me urge, ya que es parte de mi trabajo diario.
Private Sub Monto_Validado_AfterUpdate()
Dim var0 As Currency
Dim var2 As Currency
Dim subt As Currency
var0 = DSum("[Monto_Validado]", "Catalogo_Viaticos_OV_RV_Detalle", "ID_Catalogo_Viaticos_OV_RV =" & Me.ID_Catalogo_Viaticos_OV_RV)
var2 = IIf(Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Concepto.Value = "Comida", Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Monto.Value, 0)
subt = var2 - var0
Monto_Validado = subt
If subt < 0 Then
MsgBox "El monto del RV excede al monto de la OV"
Else
End If
If Concepto.Value = "Comida" Then
If Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Concepto.Value = "Comida" And Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Monto.Value < Monto_Validado.Value Then
MsgBox "El Monto Validado NO puede ser mayor al monto de la Orden de Viaje"
Monto_Validado = 0
Else
End If
End If
End Sub
Deseo sumar los campos continuos de un formulario dependiendo del concepto capturado. Ejemplo del subformulario "REPORTE DE VIAJE":
Folio de Orden de Viaje = 0001 (ID)
Concepto = Comida
Monto = 10
Concepto = Comida
Monto = 20
Concepto = Comida
Monto = 30
Como veras el usuario esta capturando en el registro 0001 varios conceptos de Comida pero con diferentes montos, y eso es lo que deseo calcular; he utilizado la función DSUM, pero ha sid muy complicado para mi el comprenderla.
Al mismo tiempo, esto fue solo por concepto de comida, pero igual hay otros 8 diferentes conceptos que de igual modo deseo irlos sumando al momento de la captura en el formulario.
Una vez logrado esto, viene la segunda parte.
Al mismo tiempo, dentro de este mismo formulario, tengo otro subformulario llamado "ORDEN DE VIAJE", la cual ya capturado por ejemplo:
Folio de Orden de Viaje = 0001
Concepto = Comida
Monto = 100
Concepto = Hotel
Monto = 200
Estos montos ya son fijos, entonces, deseo que cuando el usuario inicie la carga del detalle del REPORTE DE VIAJE, vaya sumando los conceptos de comida pero al mismo tiempo comparando que la suma de dichos montos no sean mayores al de la ORDEN DE VIAJE por concepto de comida. Es decir:
Reporte de Viaje=Monto_Comida no sea mayor que Orden de Viaje=Monto_Comida
Aquí te dejo parte del código que he diseñado, pero al momento no me esta funcionando como quisiera, y me urge, ya que es parte de mi trabajo diario.
Private Sub Monto_Validado_AfterUpdate()
Dim var0 As Currency
Dim var2 As Currency
Dim subt As Currency
var0 = DSum("[Monto_Validado]", "Catalogo_Viaticos_OV_RV_Detalle", "ID_Catalogo_Viaticos_OV_RV =" & Me.ID_Catalogo_Viaticos_OV_RV)
var2 = IIf(Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Concepto.Value = "Comida", Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Monto.Value, 0)
subt = var2 - var0
Monto_Validado = subt
If subt < 0 Then
MsgBox "El monto del RV excede al monto de la OV"
Else
End If
If Concepto.Value = "Comida" Then
If Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Concepto.Value = "Comida" And Forms!Catalogo_Viaticos_RV_Principal.Form!Catalogo_Viaticos_RV_OV_Detalle!Monto.Value < Monto_Validado.Value Then
MsgBox "El Monto Validado NO puede ser mayor al monto de la Orden de Viaje"
Monto_Validado = 0
Else
End If
End If
End Sub
1 respuesta
Respuesta de qweke