Hola
Aparte de lo dicho por Lepe en lo que coincido plenamente, hay que tener en cuenta que estas usando ADD, eso quiere decir que si hay alguna sentencia en el query se añadira ocasionando errores (por eso me gusta mas text)
que tal asi:
Código Delphi
[-]
Remision.Clear;
Remision.Close;
Remision.SQL.Add('INSERT INTO remision (clave,Producto,PrecioU,cantidad,Precio,descuento,subtotal) VALUES(:Clave, :Producto, :PrecioU, :Cantidad, :Precio, :descuento, :Subtotal)');
Remision.ParamByName('Clave').AsString := DProductos.Fields[0].AsString;
Remision.ParamByName('Producto').AsString := DProductos.Fields[1].AsString;
Remision.ParamByName('PrecioU').AsInteger := DProductos.Fields[4].AsInteger;
Remision.ParamByName('Precio').AsInteger:= DProductos.Fields[3].AsInteger;
Remision.ParamByName('Cantidad').AsInteger:= 100;
Remision.ParamByName('descuento').AsInteger:= 200;
Remision.ParamByName('Subtotal').AsInteger := 300;
Remision.ExecSQL;
Otra seria tambien quitar el AsString o AsInteger y cambiarlo por Value, aunque no creo que tenga que ver con el error.
Saludos