// здесь нужно вписать имя и путь к реальному справочнику вместо того, что сейчас написано const XLSFile = 'c:\temp\2\Фрагмент справочника товаров.xls'; var CDS :TClientDataset; str :string; i :integer; Table,TableGR :TTable; Query :Tquery; begin CDS := TClientDataset.Create(nil); Table := TTable.create(nil); TableGr := TTable.create(nil); Query := TQuery.create(nil); with TMyWait.create('Идет чтение файла xls') do try if not readxls(CDS,XLSFILE) then exit else begin table.databasename := 'dbkassa'; table.tablename := 'tovar.db'; query.databasename := 'dbkassa'; Query.sql.text := 'delete from tovar'; Query.execsql; Query.sql.text := 'delete from nn_group'; Query.execsql; tablegr.databasename := 'dbkassa'; tablegr.tablename := 'nn_group'; tablegr.open; table.open; Text := 'Перенос данных в базу'; progressbarmax := cds.recordcount; cds.first; while not cds.eof do begin // Группы if not tablegr.findkey([cds.fields[1].asstring]) or (tablegr.fieldbyname('name').asstring <> cds.fields[2].asstring) then begin if tablegr.fieldbyname('nn').asstring <> cds.fields[1].asstring then begin tablegr.append; tablegr.fieldbyname('nn').asstring := cds.fields[1].asstring; end else tablegr.edit; tablegr.fieldbyname('name').asstring := cds.fields[2].asstring; tablegr.post; end; // Собственно, товары table.append; table.fieldbyname('nn').asstring := cds.fields[1].asstring+ cds.fields[0].asstring; table.fieldbyname('maxprocent').asstring := cds.fields[3].asstring; table.fieldbyname('name').asstring := cds.fields[4].asstring; table.fieldbyname('ed').asstring := cds.fields[5].asstring; table.fieldbyname('smallname').asstring := cds.fields[6].asstring; table.post; incprogress; cds.next; end; end finally free; Query.free; TableGR.free; table.free; CDS.FREE end; end.