21.07.2016 08:13 | |
supportSupport Количество сообщений 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 товаров каталога которые дублируются по связке "Бренд + Артикул" |