28.03.2011, 18:22 | #1 |
Участник
|
Добрый день всем!
Не подскажите как можно сгруппировать значения в таблице. Есть таблица которая содержит примеру и такие поля: тапочки 2шт. 100руб туфли 5шт. 2000руб сандали 1шт. 150руб тапочки 6шт. 100руб валенки 1шт. 600руб туфли 2шт. 1800руб туфли 7шт. 1650руб поля не ключевые...и нужно их сгруппировать.... нужно получить все разновидности обуви. т.е. тапочки туфли сандали валенки ну потом нужно будет также получить ко-во и сумму. Как это в NAV-ике сожно сделать? В Axapt-е это делается просто while select тип,Count(кол-во),Sum(цена) from Обувь Grop by кол-во,цена ну или просто все видов обуви while select тип from Обувь Grop by тип |
|
29.03.2011, 09:05 | #2 |
Участник
|
Используйте буферную табличку, например 307 -ю. Получится что то такое:
Код: IF вашатаблица.FINDSET THEN REPEAT Inventory Buffer."Item No" := вашатаблица.типобуви; IF Inventory Buffer.INSERT THEN; UNTIL вашатаблица.NEXT = 0; |
|
29.03.2011, 11:14 | #3 |
Участник
|
Цитата:
Сообщение от prefreitor
Используйте буферную табличку, например 307 -ю. Получится что то такое:
Код: IF вашатаблица.FINDSET THEN REPEAT Inventory Buffer."Item No" := вашатаблица.типобуви; IF Inventory Buffer.INSERT THEN; UNTIL вашатаблица.NEXT = 0; Тут он записывает только не повторяющиеся значения? |
|
29.03.2011, 11:46 | #4 |
Участник
|
|
|
29.03.2011, 13:43 | #5 |
Участник
|
|
|
29.03.2011, 14:44 | #6 |
Участник
|
Другой путь есть, используйте одну буферную таблицу для разных целей)) Нам же не нужно полной идентичности таблиц а достаточно чтобы тип группируемого(группируемых) полей соответствовал...
|
|
29.03.2011, 14:48 | #7 |
Участник
|
Предложу свой вариант, который требует создания ключа по группируемым полям. Например
SETCURRENTKEY("ТипОбуви"); IF FINDFIRST THEN REPEAT SETRANGE("ТипОбуви", "ТипОбуви"); // Тут следует обработка, которую нужно провести для группы FINDLAST; SETRANGE("ТипОбуви"); UNTIL NEXT = 0; |
|
29.03.2011, 16:39 | #8 |
Участник
|
Кстати а не будет ли хуже вариант если в качестве временной таблицы использовать массив? Я просто совершенно новичёк в Navision....вот и не уверен как правильнее поступить.
|
|
29.03.2011, 17:09 | #9 |
Участник
|
Цитата:
Если только для суммы, то предлагаю создать ключ - "Item Type" (Тип Товара или Тип Обуви) и к нему прикрутить два SumIndexField - Количество, Сумма. Далее, как написал GRIZZLY, делаете SETCURRENTKEY, устанавливаете фильтр по типу товара. Потом делаете CALCSUMS(<Тут через запятую указываете поля, которые будут просуммированы с учетом фильтра>). |
|
29.03.2011, 19:07 | #10 |
Участник
|
Цитата:
Fly все правильно написал, в моем коде нужно исправить место, отмеченное комментарием и заменить его на CALCSUMS, там уже будет установлен ранее фильтр по ТипуОбуви. |
|
30.03.2011, 12:34 | #11 |
Участник
|
Цитата:
Сообщение от Fly
Если только для суммы, то предлагаю создать ключ - "Item Type" (Тип Товара или Тип Обуви) и к нему прикрутить два SumIndexField - Количество, Сумма.
Далее, как написал GRIZZLY, делаете SETCURRENTKEY, устанавливаете фильтр по типу товара. Потом делаете CALCSUMS(<Тут через запятую указываете поля, которые будут просуммированы с учетом фильтра>). Т.е. после того, как заполнили временную таблицу, можно производить во временной таблице CALCSUMS по ЛЮБОМУ decimal-полю, даже если этого поля нет ни в одном ключе. Одна из приятных вещей темповых таблиц. |
|
30.03.2011, 16:49 | #12 |
Участник
|
Цитата:
Сообщение от AlexB
Цитата:
Сообщение от Fly
Если только для суммы, то предлагаю создать ключ - "Item Type" (Тип Товара или Тип Обуви) и к нему прикрутить два SumIndexField - Количество, Сумма.
Далее, как написал GRIZZLY, делаете SETCURRENTKEY, устанавливаете фильтр по типу товара. Потом делаете CALCSUMS(<Тут через запятую указываете поля, которые будут просуммированы с учетом фильтра>). Т.е. после того, как заполнили временную таблицу, можно производить во временной таблице CALCSUMS по ЛЮБОМУ decimal-полю, даже если этого поля нет ни в одном ключе. Одна из приятных вещей темповых таблиц. |
|
30.03.2011, 17:11 | #13 |
Участник
|
Правда, но топикстартеру посоветовали использовать какую-нибудь универсальную временную таблицу для сортировки данных.
Поэтому я и вставил свои две копейки относительно суммиривания данных в оной. Универсальная временная таблица (с очень длинным ключом) тем и хороша, что её можно заполнить для одной конкретной задачи так, а для другой сяк и как результат получаем для каждой индивидуальной задачи индивидуальную сортировку данных. Сегодня надо по типу обуви сортировать, завтра почему-либo другому. Не делать же только для одного Report'а на каждый случай навый ключ в таблице. Остаётся посоветовать топикстартеру присмотреться к универсальной временной таблице. |
|
30.03.2011, 17:17 | #14 |
Участник
|
Shaitan-Babay - какую табличку (какие объемы данных) анализируете? Отделять тапочки от валенок по Value Entry без соотвествующего ключа будет достаточно накладно. По производительности наиболее отпимален вариант от Grizzly.
|
|