Problem with macro in first subform record

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problem with macro in first subform record

Yessica Brinkmann
Hello.
I have a form that has a subform Sales sales detail. I have two macros, a
call ponerCampos to paste the value of the price of the goods by the id in
the subform detail, and another macro call calcularTotalVentas associated
with a   Calculate Total button on the same form, which calculates the
total amount the sale. It's very strange but everything works fine when I
modify the amount of all records except the first. But when I change the
amount of the first record, for example if I put number 2 instead of 1 say
in the amount, and then I press the Calculate Total button, It change the
amount to the previous value. The scheme does not work when the detail has
a single record, it is the same. Much appreciate a response. Regards,
Yessica
My macros are:

Sub PonerCampos( Evento )
Dim sSel As String
Dim oFrm As Object
Dim oConcepto As Object
Dim oPrecio As Object
Dim oCon As Object
Dim oStat As Object
Dim sSQL As String
Dim oRes As Object

oFrm = Evento.Source.Model.Parent
Dim oCtrl As Object
oCtrl = oFrm.Parent.Parent.GetByName("datfecha")
oCtrl = oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oCtrl)
oCtrl.SetFocus
Wait(0)

sSel = Evento.Source.Model.BoundField.Value
oConcepto = oFrm.getByName("id_producto")
oPrecio = oFrm.getByName ("precio")
oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
oStat = oCon.CreateStatement


sSQL = "SELECT precio_final FROM mercaderia WHERE id_producto='" & sSel &"'"

oRes = oStat.ExecuteQuery(sSQL)
If oRes.next Then


oPrecio.BoundField.Value=oRes.getDouble(1)
Else

oPrecio.BoundField.Value=0
End If


oCtrl=oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oFrm)
oCtrl.SetFocus
End Sub


Sub CalcularTotalVentas( Evento )
Dim oFormulario As Object
Dim oSubFormulario As Object
Dim oGridComposicion As Object
Dim oTotal As Object
Dim oCantidad As Object
Dim oPrecio As Object
Dim fParcial As Double
Dim fTotal As Double
Dim co1 As Byte
Dim co2 As Byte


oFormulario = Evento.Source.getModel.getParent()

oTotal = oFormulario.getByName("fmttotal")

oSubFormulario = oFormulario.getByName("SubForm")

oGridComposicion = oSubFormulario.getByName("SubForm_Grid")

oCantidad = oGridComposicion.getByName("cantidad")

oPrecio = oGridComposicion.getByName("precio")


oSubFormulario.first()
Do
 fParcial = oCantidad.getCurrentValue()*oPrecio.getCurrentValue()

fTotal = fTotal + fParcial

oSubFormulario.next()
 Loop Until oSubFormulario.isAfterLast()
 oTotal=oFormulario.getByName("fmttotal")
oTotal.BoundField.UpdateFloat(fTotal)
oSubFormulario.Reload
End Sub
Reply | Threaded
Open this post in threaded view
|

Re: Problem with macro in first subform record

Yessica Brinkmann
Hello,
I would ask please if anyone can answer this question because I really need
to implement this functionality.
regards,
Yessica

2013/2/6 Yessica Brinkmann <[hidden email]>

> Hello.
> I have a form that has a subform Sales sales detail. I have two macros, a
> call ponerCampos to paste the value of the price of the goods by the id in
> the subform detail, and another macro call calcularTotalVentas associated
> with a   Calculate Total button on the same form, which calculates the
> total amount the sale. It's very strange but everything works fine when I
> modify the amount of all records except the first. But when I change the
> amount of the first record, for example if I put number 2 instead of 1 say
> in the amount, and then I press the Calculate Total button, It change the
> amount to the previous value. The scheme does not work when the detail has
> a single record, it is the same. Much appreciate a response. Regards,
> Yessica
> My macros are:
>
> Sub PonerCampos( Evento )
> Dim sSel As String
> Dim oFrm As Object
> Dim oConcepto As Object
> Dim oPrecio As Object
> Dim oCon As Object
> Dim oStat As Object
> Dim sSQL As String
> Dim oRes As Object
>
> oFrm = Evento.Source.Model.Parent
> Dim oCtrl As Object
> oCtrl = oFrm.Parent.Parent.GetByName("datfecha")
> oCtrl =
> oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oCtrl)
> oCtrl.SetFocus
> Wait(0)
>
> sSel = Evento.Source.Model.BoundField.Value
> oConcepto = oFrm.getByName("id_producto")
> oPrecio = oFrm.getByName ("precio")
> oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
> oStat = oCon.CreateStatement
>
>
> sSQL = "SELECT precio_final FROM mercaderia WHERE id_producto='" & sSel
> &"'"
>
> oRes = oStat.ExecuteQuery(sSQL)
> If oRes.next Then
>
>
> oPrecio.BoundField.Value=oRes.getDouble(1)
> Else
>
> oPrecio.BoundField.Value=0
> End If
>
>
> oCtrl=oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oFrm)
> oCtrl.SetFocus
> End Sub
>
>
> Sub CalcularTotalVentas( Evento )
> Dim oFormulario As Object
> Dim oSubFormulario As Object
> Dim oGridComposicion As Object
> Dim oTotal As Object
> Dim oCantidad As Object
> Dim oPrecio As Object
> Dim fParcial As Double
> Dim fTotal As Double
> Dim co1 As Byte
> Dim co2 As Byte
>
>
> oFormulario = Evento.Source.getModel.getParent()
>
> oTotal = oFormulario.getByName("fmttotal")
>
> oSubFormulario = oFormulario.getByName("SubForm")
>
> oGridComposicion = oSubFormulario.getByName("SubForm_Grid")
>
> oCantidad = oGridComposicion.getByName("cantidad")
>
> oPrecio = oGridComposicion.getByName("precio")
>
>
> oSubFormulario.first()
> Do
>  fParcial = oCantidad.getCurrentValue()*oPrecio.getCurrentValue()
>
> fTotal = fTotal + fParcial
>
> oSubFormulario.next()
>  Loop Until oSubFormulario.isAfterLast()
>  oTotal=oFormulario.getByName("fmttotal")
> oTotal.BoundField.UpdateFloat(fTotal)
> oSubFormulario.Reload
> End Sub
>