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