Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2017
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
Problema Firedac Sql Advantagedatabase 12 Multiple Row Insert

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);');//linea final con puntoycoma
              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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FireDAC - Problema con relación Maestro/detalle y columna AutoInc jarlos Conexión con bases de datos 4 01-06-2016 05:32:27
Problema con RecNo en tabalas FireDac MARX C++ Builder 3 14-04-2016 16:40:48
Problema con FireDAC y DB2 probles2 DB2 13 21-11-2014 08:54:27
Problema con FireDac darkamerico Conexión con bases de datos 2 04-11-2014 14:05:16
Insert múltiple (o masivo) santiago14 SQL 24 12-03-2011 13:19:31


La franja horaria es GMT +2. Ahora son las 18:15:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi