Hola, yo pondría algo así:
Código:
var Consulta : String;
begin
Consulta:'INSERT INTO remision (clave, producto, preciov, preciou) VALUES (:clave, :producto, :preciov, :preciou)';
Remision.SQL.Clear;
Remision.SQL.Add(Consulta);
Remision.Parameters.Parambyname('Clave').Value := DProductos.Fields[0].AsString;
Remision.Parameters.Parambyname('Producto').Value := DProductos.Fields[1].AsString;
Remision.Parameters.Parambyname('PrecioV').Value := DProductos.Fields[4].AsString;
Remision.Parameters.Parambyname('PrecioU').Value := DProductos.Fields[5].AsString;
Remision.ExecSql; // Remision.Open; es para hacer una consulta, tienes que poner EXECSQL para hacer un Insert/update/delete
end;
Ahora mismo no recuerdo la sintaxis correcta para pasar los parámetros, creo que con ADO es como te lo he puesto Remision.Parameters.ParamByName, pero con BDE es Remision.Params.... De todas formas la ayuda de Delphi te lo va dando.
Y otra cosa, suponiendo que DProductos sea una query, yo me referiría a los datos de esta forma:
Código:
Remision.Parameters.Parambyname('PrecioU').Value := DProductos.FieldByName('PrecioU').AsString;
De esta forma no dependes del orden de los campos en la consulta, sino del nombre del campo, que normalmente será el mismo en la consulta que en la tabla.
Espero haberte ayudado algo,
un saludo