amigos e resuelto el problema con solo agregar DM.tbl_ventas.first antes del bucle while do pero acepto cualquier otra sugerencia
Código Delphi
[-]
DM.tbl_Venta.First
while not DM.tbl_Ventas.Eof do
begin
DM.Pro_Existencia.Active:=False; DM.Pro_Existencia.Parameters.ParamByName('@ARTI').Value:=DM.tbl_Ventas.FieldValues['ARTICULO'];
DM.Pro_Existencia.Active:=True;
DM.Pro_Existencia.ExecProc;
DM.tbl_Compras.Locate('ARTICULO',DM.tbl_Ventas.FieldValues['ARTICULO'],[]); DM.tbl_Compras.Edit;
DM.tbl_Compras.FieldByName('CantAlmacen').Value:=IntToStr(StrToInt(DM.Pro_Existencia.FieldValues['EXISTENCIA'])+ StrToInt(DM.tbl_Ventas.FieldValues['CANTIDAD']));
DM.tbl_Compras.Post;
DM.tbl_Ventas.Next;
end;