Ver Mensaje Individual
  #1  
Antiguo 26-03-2008
caifan_0883 caifan_0883 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Los Mochis, Mexico
Posts: 42
Reputación: 0
caifan_0883 Va por buen camino
Se pierden datos en Insercion Masiva

Hola compañeros foreros.
Me surgio un problemilla, estoy insertando unos 2500 registros de excel a un BD en Firebird 2.0. Todo funciona "bien". No salta error alguno.
Pero al momento de checar los datos hay algunos de ellos que no aparecen cierto dato que necesito.
Estoy insertando en una Tabla llamada ARTICULOS y en otra CODIGOS.
Me aparece el articulo pero el codigo, el cual hace referencia.

Aqui les dejo la parte de mi codigo para ver si me podrian ayudar donde esta mi error. Gracias y Saludos.

Código:
procedure TForm1.BtnArticulosClick(Sender: TObject);
Var
   Excel:Variant;
   DescCorta,DescNormal,CodigoB1,CodigoB2,CodigCateg,Categ:String;
   I,J,Aux,IdCateg,IdArt:Integer;
begin
   Aux:=0;
   IBQuery1.Active:=False;
 
   Excel:=CreateOleObject('Excel.Application');
   Excel.WorkBooks.Open(Ruta+'\NARTE.xls');
   For I:=1 to 2552 Do
     Begin
        IBQuery1.SQL.Clear;
        IBQuery2.SQL.Clear;
        CodigCateg:=Copy(Excel.Cells[I,1].Value,0,3);
        CodigoB2:=Excel.Cells[I,1].Value;
        DescNormal:=Trim(Copy(Excel.Cells[I,2].Value,0,44));
        DescCorta:=Trim(Copy(Excel.Cells[I,2].Value,0,19));
        CodigoB1:=Copy(Excel.Cells[I,3].value,0,13);
        For J:=0 to LBCategorias.Items.Count-1 Do
           Begin
              If CodigCateg = Copy(LbCategorias.Items[J],0,3) then
                Begin
                 Aux:=J;
                 Break;
                End;
           End;
 
        Categ:=Trim(Copy(LbCategorias.Items[Aux],4,15));
        IBQueryAux.SQL.Clear;
        IBQueryAux.SQL.Text:='Select CLAVE From CATEGORIAS Where Nombre=:IdNombre';
        IBQueryAux.ParamByName('IdNombre').AsString:=Categ;
        IBqueryAux.Open;
        IdCateg:=IBQueryAux.FieldByname('Clave').AsInteger;
 
         With IBQuery1 Do
            Begin
               SQL.Text:='Insert into ARTICULOS (DESC_CORTA,DESC_LARGA,PRECIO1,PRECIO2,';
               SQL.Add('PRECIO3,PRECIO4,ULT_COSTO,COSTOPROM,DESC_AUTO,');
               SQL.Add('EXISTENCIA,MINIMO,MAXIMO,CATEGORIA,DEPARTAMENTO,TIPO,');
               SQL.Add('UNIDADE,CANTIDAD_CNT,PROVEEDOR1,PROVEEDOR2,IVA,');
               SQL.Add('FECHA_CAP,FECHA_UMOV,ESTATUS,ULTVENTA,ULTCOMPRA,UTILIDAD)');
               SQL.Add(' Values (:Vari2,:Vari3,:Vari4,:Vari5,:Vari6,:Vari7,');
               SQL.Add(':Vari8,:Vari9,:Vari10,:Vari11,:Vari12,:Vari13,');
               SQL.Add(':Vari14,:Vari15,:Vari16,:Vari17,:Vari18,:Vari19,');
               SQL.Add(':Vari20,:Vari21,:Vari22,:Vari23,:Vari24,:Vari25,');
               SQL.Add(':Vari26,:Vari27)');
               //ParamByName('Vari1').AsInteger:=I;
               ParamByName('Vari2').AsString:=DescCorta;
               ParamByName('Vari3').AsString:=DescNormal;
               ParamByName('Vari4').AsFloat:=1.00;
               ParamByName('Vari5').AsFloat:=0.00;
               ParamByName('Vari6').AsFloat:=0.00;
               ParamByName('Vari7').AsFloat:=0.00;
               ParamByName('Vari8').AsFloat:=1.00;
               ParamByName('Vari9').AsFloat:=1.00;
               ParamByName('Vari10').AsString:='N';
               ParamByName('Vari11').AsFloat:=0.00;
               ParamByName('Vari12').AsFloat:=0.00;
               ParamByName('Vari13').AsFloat:=0.00;
               ParamByName('Vari14').AsInteger:=IdCateg;
               ParamByName('Vari15').AsString:='';
               ParamByName('Vari16').AsInteger:=3;
               ParamByName('Vari17').AsInteger:=1;
               ParamByName('Vari18').AsString:='N';
               ParamByName('Vari19').AsString:='';
               ParamByName('Vari20').AsString:='';
               ParamByName('Vari21').AsFloat:=0.00;
               ParamByName('Vari22').AsDateTime:=Date;
               ParamByName('Vari23').AsDateTime:=Date;
               ParamByName('Vari24').AsString:='A';
               ParamByName('Vari25').AsString:='';
               ParamByName('Vari26').AsString:='';
               ParamByName('Vari27').AsString:='';
               ExecSQL;
               Transaction.Commit;
            End;
         IBQuery1.SQL.Clear;
         IBQuery1.SQL.Text:='Select CLAVE From ARTICULOS Where Desc_Corta=:Descrip';
         IBQuery1.ParamByName('Descrip').AsString:=DescCorta;
         IBQuery1.Open;
         IdArt:=IBQuery1.FieldByName('Clave').AsInteger;
 
With IBQuery1 Do
             Begin
                 SQL.Text:='Insert into CODIGOS (ARTICULO,CODIGO,TIPO) Values (:IdArt,:IdCod,:IdTip)';
                 ParamByName('IdArt').AsInteger:=IdArt;
                 ParamByName('IdCod').AsString:=CodigoB1;
                 ParamByName('IdTip').AsString:='P';
                 ExecSQL;
                 Transaction.Commit;
             End;
End;
Como datos, manejo los componentes de la Pestaña Interbase, Delphi 7 y FireBird 2.0 Saludos.

Los datos de articulos se insertan correctamente y los de codigos de barra algunos no. Cuando habla de algunos son unos 400 registros que no pone el codigo, y el los demas estan correctamente los datos.

Saludos y Gracias de Nuevo
__________________
Da conocimiento a los que no saben.

Última edición por caifan_0883 fecha: 26-03-2008 a las 16:12:04. Razón: Falta de datos.
Responder Con Cita