Ver Mensaje Individual
  #1  
Antiguo 14-02-2014
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Reputación: 14
novato_erick Va por buen camino
conjunto de datos no insertan en la BD

hola chicos he tenido ultimamente unos comportamientos extraños en el sistema el cual por medio del componente DBExpress realizo insersiones actualizaciones en firebird.

ultimamente e visto que en las multiples tablas que realizo una insersion de producto enviando el id del producto a varias tablas 10 mas o menos por lo general en dos de ellas falla la insersion.

este es mas o menos como lo manejo:

Código Delphi [-]
 trnIngresaArticulos := dmConecta.FBLINUXCONECTION.BeginTransaction;
try // inicia proceso
    funciones.CapIdArt;// funcion que captura un id de un generador reservando dicho id
    with dmLogicaArticulos.qIngresaArt do
      try
        ///ago insersiones
      finally
        ExecSql;
      end;
    //asi me la paso insertando en cada tabla
   with dmlogicaarticulo.qinsertaotracosa etc
     try
     ......
     finally
     ....
     end; 
     with dmLogicaArticulos.qArt_Marca do //pero a k es que tengo problemas en donde no se inserta los datos en ocasiones...
        try
          Close;
          sql.clear;
          sql.Add('insert into ARTXMARCA(ID_ARTICULO, ID_MARCA) ');
          sql.Add('values(:pId_Articulo, :pId_Marca)');
          parambyname('pId_Articulo').AsInteger := idArticulo;
          parambyname('pId_Marca').AsInteger := id_Marca;
        finally
          ExecSql;
        end;
    end;
 dmConecta.FBLINUXCONECTION.CommitFreeAndNil(trnIngresaArticulos);
    ShowMessage('Articulo Agregado Satisfactoriamente');
  except
    on e: exception do
    begin
      // ShowMessage('Articulo no Fue ingresado Correctamente');
      ShowMessage('Articulo no Fue ingresado Correctamente' + e.Message);
      dmConecta.FBLINUXCONECTION.RollbackFreeAndNil(trnIngresaArticulos);
      Raise;
    end;
  end;
  if Application.MessageBox('¿Desea Agregar Otro Articulo?', 'Confirmación',
    MB_ICONQUESTION OR MB_YESNO) = ID_NO then
  // Aqui confirmamos si seguimos mas registros o cerramos el form
  begin
    frmPrincipal.CerrarPestana;
  end
  else // si no cerramos limpiamos nuestros componentes y variables del form
  begin
    // componentes dentro del tab sheet1
    // cbxDeptosArt.clear;
    DtpFechaIngreso.DateTime := Now;
    eCodBarra.clear;
    mNombre.clear;
    cbxTallas.clear;
  end;

ah por supuesto la aplicacion la tienen 15 usuarios ingresando... repito no es todo momento...


Saludos

Última edición por novato_erick fecha: 14-02-2014 a las 22:13:07. Razón: quitar caritas de código SQL
Responder Con Cita