Tomando la respuesta de eduarcol, la cual me parece correcta el codigo quedaria asi
Código Delphi
[-]
while not DataSetGrid.EoF do
begin
Table3.Append;
Table3.FieldByName('Código').Asinteger:= Dbgrid1.Columns[0].Field.Asinteger;
Table3.FieldByName('Producto').AsString:= Dbgrid1.Columns[2].Field.AsString;
Table3.FieldByName('Cantidad').Asinteger:= Dbgrid1.Columns[1].Field.AsInteger;
Table3.FieldByName('Valor').AsFloat:= Dbgrid1.Columns[3].Field.AsFloat;
Table3.FieldByName('SubTotal').AsFloat:= Dbgrid1.Columns[4].Field.AsFloat;
Table3.Post;
DataSetGrid.Next;
end;