Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - Сравнение товара по Бренду и Артикулу


http://inetshop.in.ua/index.php?p=showtopic&toid=314&area=1&high=&pp=15&page=1&print_post=1837
21.07.2016 08:13

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Цитата
Написал: Denndy
Процесс сравнения останавливается вот такой ошибкой.


Ошибка говорит, что SQL-запрос выборки товара по бренду и артикулу возвращает более одной записи, а значит эта связка у вас не уникальна в каталоге, а потому вместо одного кода товара возвращается несколько.
Цитата

SELECT G_ID
FROM TBL_GOODS
WHERE G_B_ID = @B_ID
AND UPPER(G_SID) = UPPER(@SG_ARTIKUL)


Цитата
Написал: Denndy
Можно внести в код дополнение что-бы сравнение останавливалось на ошибочной строке, что-бы видеть почему произошла ошибка?

Пользовательские sql-запросы на имеют обратной связи с интерфейсом, тем более данный запрос работает по всем товарам поставщика, а не по выделенным строкам в таблице. Если вам нужно получить информацию о проблемном товаре, то вариантов несколько:
1. Брать первый попавшийся найденный товар.
2. Добавить в SQL-запрос предварительное получение количества найденных товаров и выдавать нужное сообщение об ошибке с кодом товара или кодом товара поставщика, что в свою очередь замедлит поиск товаров. Более того, ситуация поиска товаров не типичная для базы данных, потому для большого количества товаров нужно добавить в таблицу товаров TBL_GOODS индекс по двум полям G_B_ID и G_SID (в версиях MSSQL 2005 и выше в индекс можно включить данные поля G_ID чтобы запрос поиска получал код товара в выборке прямо из индекса и не искал физическое расположение записи после индекса)
3. Добавить блок TRY...CATCH и выдавать нужное сообщение об ошибке (для MSSQL 2005 и выше)
4. Сделать экспорт в MSSQL товаров каталога которые дублируются по связке "Бренд + Артикул"