Maybe it's possible that
Me!sbfrmOrderItems.Form!SalePriceTotal
has no time to be updated based on your application's processing work.
Just put a
DoEvents()
instruction before the
Me.ProductsCostTotal = Me!sbfrmOrderItems.Form!SalePriceTotal
line and I think it will work well.
Hope that helps.