Hola.
No entiendo por que no lo realizas como te sugirío Casimiro, de ese modo funciona correctamente.
Código Delphi
[-]
...
begin
qyVtasArea.SQL.Clear;
qyVtasArea.SQL.Add('SELECT * FROM VENTASAREAS');
qyVtasArea.Open;
qyVtasDet.SQL.Clear;
qyVtasDet.SQL.Add('INSERT INTO VENTASDET(VENTA,ORDEN,ARTICULO,CANTIDAD,PRECIO,IVA,DEVOLUCION,FECHA)');
qyVtasDet.SQL.Add('VALUES(:VENTA,:ORDEN,:ARTICULO,:CANTIDAD,:PRECIO,:IVA,:DEVOLUCION,:FECHA)');
while not qyVtasArea.Eof do
begin
qyVtasDet.ParamByName('VENTA').Value:= qyVtasArea.FieldByName('VENTA').Value;
qyVtasDet.ParamByName('ORDEN').Value:= qyVtasArea.FieldByName('ORDEN').Value;
qyVtasDet.ParamByName('ARTICULO').Value:= qyVtasArea.FieldByName('ARTICULO').Value;
qyVtasDet.ParamByName('PRECIO').Value:= qyVtasArea.FieldByName('PRECIO').Value;
qyVtasDet.ParamByName('IVA').Value:= qyVtasArea.FieldByName('IVA').Value;
qyVtasDet.ParamByName('DEVOLUCION').Value:= qyVtasArea.FieldByName('DEVOLUCION').Value;
qyVtasDet.ParamByName('FECHA').Value:= qyVtasArea.FieldByName('FECHA').Value;
qyVtasDet.ExecSQL;
qyVtasArea.Next;
end;
qyVtasDetqyVtasArea.Close;
end;
Saludos.