Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнивание 2-х *.xls фалов [D5, D6, MSSQL]


opoloxai ©   (2004-04-29 17:33:00) 

Добрый день.
У меня каждый месяц обновляются файлы прайсов на элементы. Файлы приходят в *.xls виде.
1) Можно ли какой-то стандартной процедурой Microsofft Exel сравнить 2 файла?
2) Может лучше импортировать данные в БД (Microsoft Access) и сравнивать 2 таблицы там?
Заранее спасибо.


Курдль   (2004-04-30 13:12:00) [1]

А в чем я ошибаюсь? Ведь правильно идентифицировать Monitor Sony Flat Trinitron 17", TCO'99, 6F910-43, как Монитор Сони, плоский экран, 1280х1024, стандарт тсо99, модель -43- это и есть задача импорта. Мы говорим об одном и том же.
Кроме того, в нашем случае таблица товаров имела сложную иерархическую структуру и надо было думать, в какую ветвь упихать "неопознанный товар".


Nikolay M.   (2004-04-30 12:16:00) [2]


> От Ёкселя с картинками, до PDF-а, из которого хрен чё вытянешь!
> Вот задача импорта - самая геморройная. А вовсе не сравнения!

Ты ошибаешься. У нас порядка 500 совершенно разных прайсов прекрасно обрабатываются на автомате. Задача эта чисто техническая + иногда немного ручного труда.
А вот сопоставить два таких наименования:
Monitor Sony Flat Trinitron 17", TCO'99, 6F910-43
и
Монитор Сони, плоский экран, 1280х1024, стандарт тсо99, модель -43
- задача, которая тянет если не на докторскую, то уж точно на дисер. У меня эта задача в упрощенном виде была в дипломе. В общем случае, имхо, нерешаемо вообще.


Курдль   (2004-04-30 10:33:00) [3]

А у нас все просто в одном проекте реализовано: приходит прайс - заливается в базу (распадается таблиц на 5 - товары, поставщики, документы и т.п.). А потом уж делай с ним, что хошь! Хошь - сравнивай, хошь - цену выбирай из последнего. Тока вот прайсы у всех поставщиков разные :( От Ёкселя с картинками, до PDF-а, из которого хрен чё вытянешь! Вот задача импорта - самая геморройная. А вовсе не сравнения!


YurikGl   (2004-04-30 10:25:00) [4]

Nikolay M. ©   (30.04.04 09:12) [11]

Согласен, так лучше будет.

З.Ы. Фактически это - нормализация [10]


Nikolay M.   (2004-04-30 09:12:00) [5]


> Я бы сделал примерно так.
>
> TableOld - старая таблица цен
> TableNew - новая таблица цен
> TableRazn - таблица разниц цен

А я бы так не делал. Даже без "бы". У нас было сделано 2 поля - старая и новая цена и статус товара - новый/был в прошлом прайсе/старый (пропал в новом прайсе).
В общем случае задача довольно нетривиальная и распадается на части: закачка файла из разных источников, приведение закачанных файлов к стандартному формату (у нас был текстовик, правильнее - XML, но руки не дошли), сравнение товарных позиций из файла с предыдущими позициями в базе. Задачи идут по мере возрастания сложности реализации. Еще добавлю, что без ручного труда тут, увы, не обойтись :(


YurikGl   (2004-04-30 00:12:00) [6]

Я бы сделал примерно так.

TableOld - старая таблица цен
TableNew - новая таблица цен
TableRazn - таблица разниц цен

Последовательно заполняешь TableRazn как TableNew[id]-TableOld[id], где id - идентефикатор товара. Если товара нет либо в TableNew либо в TableOld, то его цену берем=0 и в TableRazn делается соответсвтующая пометка - новый товар или товар исчез.


opoloxai   (2004-04-29 18:10:00) [7]

В принципе, люди спросят: а почему-бы просто не воспользоваться сразу "новым" файлом.
Ответ: очень нужно знать: 1) ЧТО именно появилось нового; 2) ЧТО именно подоражало?


Курдль   (2004-04-29 17:56:00) [8]

Это самопал: http://www.araxis.com


opoloxai   (2004-04-29 17:54:00) [9]

"Araxis Merge 2001" - это самописная вещь или чья-то (downLoad)?


Курдль   (2004-04-29 17:53:00) [10]

У меня в CVS-е есть какая-то хрень... Ага: "Araxis Merge 2001".
Он не только сравнивает, но и показывает, чем отличаются и даже может их как-то разумно слить в один! О, как!


Курдль   (2004-04-29 17:53:00) [11]


> цены на детали ростут

Долбаная инфляция :(


opoloxai   (2004-04-29 17:52:00) [12]

To Курдль: цены на детали ростут, а у меня в БД они остаются старые, иногда добабляются новые детали...


Sandman25+1   (2004-04-29 17:46:00) [13]

Если нужно еще и найти различия, а не только сам факт изменения, то действительно, лучше сравнивать, используя какую-нибудь БД. Хотя можно и закачать в память (через OLE, Range), отсортировать и сравнивать "вручную".


Курдль   (2004-04-29 17:42:00) [14]

А в чем промблема? Чтобы враги не подсунули старый файл под видом нового? :)


Sandman25+1   (2004-04-29 17:37:00) [15]

Можно еще просто сравнить файлы как файлы ОС. diff.


Наверх

Титульная страница Поиск, карта сайта Написать письмо