Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль. |
|
Суммирование остатка товара из разных ячеек |
|
|
sonic1978
Пользователь iNETsHOP
Количество сообщений
107
Зарегистрирован:
27-02-2016, 15:29:39
|
гдето видел на форуме, но не могу уже найти
при установке в схеме импорта ячеек EF к примеру как остаток объединяются строки а не значения.
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Объединение остатков по складам
Из-за "сбоя" на хостинге freehost.ua были утеряны данные с 06 по 15 мая 2016 года, возможно что тема которую вы ищите была создана в этот период.
По сути вопроса - если в схеме импорта в настройках поля "Остаток" указать колонки прайс-листа как EF то да, будет произведена конкатенация строк, а не суммирование числовых значений.
Без примера прайса или его скриншота трудно что-то посоветовать конкретное, как вариант, импортируйте остаток из нескольких колонок через какой-то разделитель, скажем символ "/". Затем, в схему импорта добавьте скрипт обработки, который будет разбивать эту строку на части и суммировать значения.
Например функция [dbo].[f_GetTableByList2] (@p_sValue varchar(8000), @p_sDelimeter varchar(100)) - возвращает таблицу со значениями элементов строки разбивая ее по указанному разделителю. Можно в T-SQL скрипте обработки создать курсор по всем строкам прочитанного прайс-листа, а затем получить элементы суммарной строки в которой значения разделены разделителем и суммировать их:
Код
DECLARE
@ID int,
@REST_STR varchar(8000),
@REST_ITEM varchar(100),
@REST_SUMM float;
DECLARE cPrice CURSOR LOCAL FOR
SELECT ID, CAST(REST as varchar(8000)) FROM #TMP_PRICE order by ID;
OPEN cPrice
FETCH NEXT FROM cPrice INTO @ID, @REST_STR;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @REST_SUMM = 0;
DECLARE cRests CURSOR LOCAL FOR
SELECT id FROM [dbo].[f_GetTableByList2](@REST_STR, '/');
OPEN cRests
FETCH NEXT FROM cRests INTO @REST_ITEM;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF ISNUMERIC(@REST_ITEM) = 1 SET @REST_SUMM = @REST_SUMM + CAST(@REST_ITEM as float);
FETCH NEXT FROM cRests INTO @REST_ITEM;
END
CLOSE cRests;
DEALLOCATE cRests;
UPDATE #TMP_PRICE SET REST = STR(@REST_SUMM, 10, 2) WHERE ID = @ID;
FETCH NEXT FROM cPrice INTO @ID, @REST_STR;
END
CLOSE cPrice;
DEALLOCATE cPrice;
|
Распечатать
|
|
sonic1978
Пользователь iNETsHOP
Тема начата
Количество сообщений
107
Зарегистрирован:
27-02-2016, 15:29:39
|
считает нормально, осталось только заменить разделитель с точки на запятую, есть готовый скрипт? автозамена не помогает, т.к. срабатывает видимо до суммирования
|
Распечатать
|
|
Admin
Администратор
Количество сообщений
135
Зарегистрирован:
23-08-2007, 09:03:21
|
Автозамена текста срабатывает в момент чтения каждой строки из прайс-листа, потому она работает до SQL-скриптов обработки.
|
Распечатать
|
|
sonic1978
Пользователь iNETsHOP
Тема начата
Количество сообщений
107
Зарегистрирован:
27-02-2016, 15:29:39
|
добавил перед сравнением UPDATE #TMP_PRICE SET REST = REPLACE(REST,'.',',');
теперь все ок
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Очень полезная тема при работе с прайсами где несколько колонок по остаткам. Но столкнулся с небольшой проблемой, при суммировании из нескольких ячеек получается программно фильтр поставить на позиции с "0" количеством не получится т.к. колонок несколько, если я правильно понимаю работу программы. Отсюда вопрос, в этой теме вопрос подымался на предмет скрипта для удаления позиций с "0" остатком, насколько он применим в данном случае? Имеется ввиду вот этот скрипт, если вместо "1" поставить "0"
Цитата DELETE FROM #TMP_PRICE WHERE CAST(REST as varchar(100)) = '1';
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Будут удалены товары прайса, в которых в колонку "Остаток" импортирован текст равный "1" или "0" соответственно тексту запроса.
|
Распечатать
|
|
Denndy
Пользователь iNETsHOP
Количество сообщений
54
Зарегистрирован:
12-03-2016, 18:32:41
|
Результатам работы скрипта посвящена тема, на которую я дал ссылку, не стоило повторяться.
Вопрос был несколько о другом.
|
Распечатать
|
|
Статистика форума |
 |
Тем: 506, Сообщений: 3222, Пользователей: 2258
Приветствуем новичка по имени ololuev |
Ближайшие дни рождения |
 |
Сегодня именинников нет |
|