Que tal colegas.
Estoy intentando optimizar una rutina que guarda detalles del contenido de una compra.
La idea era hacerlo mediante un insert de multiple row.
En otras oportunidades he hecho algo similar pero insertando de una valores prefijados con anterioridad.
Pero en este caso lo que quiero es que mediante la ejecucion de un solo FDSqlQuery pueda agregar varios registros con el detalle de una compra. Y me está dando un error luego de la linea 4.
Código Delphi
[-]
QryGuardaDet.SQL.Clear;
QryGuardaDet.SQL.Append('insert into detalle');
QryGuardaDet.SQL.Append('(articulo,cantidad,comprobante)');
QryGuardaDet.SQL.Append('values');
datos.CDSDetalle.DisableControls;
if datos.CDSDetalle.State = dsinsert then datos.CDSDetalle.cancel;
datos.CDSDetalle.First;
for i := 1 to datos.CDSDetalle.RecordCount-1
do
begin
QryGuardaDet.SQL.Append('(:art, :cant, :com),');
QryGuardaDet.ParamByName('art').AsString := datos.CDSDetalleFarticulos.Value;
QryGuardaDet.ParamByName('cant').Value := datos.CDSDetalleFcant.AsFloat;
QryGuardaDet.ParamByName('com').AsInteger := codfact;
datos.CDSDetalle.Next;
end;
QryGuardaDet.SQL.Append('(:art, :cant, :com);'); QryGuardaDet.ParamByName('art').AsString := datos.CDSDetalleFarticulos.Value;
QryGuardaDet.ParamByName('cant').Value := datos.CDSDetalleFcant.AsFloat;
QryGuardaDet.ParamByName('com').AsInteger := codfact;
Los datos que cargo en los parametros que pretendo reusar una y otra vez estan en un clientdataset, dentro de un datamodule.
Me da error en la linea 4, se esperaba PUNTOYCOMA, cuando deberia aceptarme la COMA ya que luego del bucle le agrego el puntoycoma.
Quizá pueda ser algun error con las comillas o algo similar.
O no se si se pueden usar los mismos parametros.
Toda luz será bienvenida.