AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.01.2005, 17:05   #1  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
Сортировка в запросе "В Наличии"
Добрый день!

Интересуюсь в целях повышения образованности.

Как сделать, чтобы товары были в этом запросе отсортированы, скажем, по Названиям Номенклатуры (InventTable.ItemName)?

Допустим что интерактивное задание параметров сортировок в фильтре по полям InventTable в этом запросе меня пока не интересует, я просто хочу чтобы при открытии формы товары сортировались по названию
Старый 19.01.2005, 17:44   #2  
AlexUnik is offline
AlexUnik
Участник
 
199 / 22 (1) +++
Регистрация: 01.06.2004
Адрес: Королёв
Зачем Вам это? Данная форма и так не отличается быстродействием.
Старый 19.01.2005, 18:21   #3  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
Не знаете - так и скажите. Не хорошо это, отвечать вопросом на вопрос.

Поясняю: не радует принципиальная (или трудноустранимая) невозможность сортировать по полям таблицы1, в тех местах где есть группировки и суммирование по полям таблицы0.
и таблица1 связана с таблица0 по каким-нибудь одному id, а сортировать хочу по таблица1.name
Старый 19.01.2005, 19:53   #4  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
как это делает сиквел...
чем не запрос "в наличии" с аналитикой Склад?

SELECT
A.ITEMID,
Name = (SELECT C.ItemName from dbo.InventTable C WHERE A.ITEMID=C.ITEMID),
B.INVENTLOCATIONID,
SUM(A.POSTEDQTY),
SUM(A.POSTEDVALUE),
SUM(A.PHYSICALVALUE),
SUM(A.DEDUCTED),
SUM(A.REGISTERED),
SUM(A.RECEIVED),
SUM(A.PICKED),
SUM(A.RESERVPHYSICAL),
SUM(A.RESERVORDERED),
SUM(A.ONORDER),
SUM(A.ORDERED),
SUM(A.ARRIVED),
SUM(A.QUOTATIONRECEIPT),
SUM(A.QUOTATIONISSUE),
SUM(A.PHYSICALINVENT),
SUM(A.POSTEDVALUESECCUR_RU),
SUM(A.PHYSICALVALUESECCUR_RU),
SUM(A.AVAILPHYSICAL),
SUM(A.AVAILORDERED)
FROM dbo.INVENTSUM A
INNER JOIN dbo.INVENTDIM B ON A.INVENTDIMID=B.INVENTDIMID
GROUP BY A.ITEMID,B.INVENTLOCATIONID
ORDER BY NAME
Старый 19.01.2005, 20:04   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ну Вы сами себе и ответили. Только запросик поменять надо немножко:

SELECT
A.ITEMID,
C.ITEMNAME,
B.INVENTLOCATIONID,
SUM(A.POSTEDQTY),
SUM(A.POSTEDVALUE),
SUM(A.PHYSICALVALUE),
SUM(A.DEDUCTED),
SUM(A.REGISTERED),
SUM(A.RECEIVED),
SUM(A.PICKED),
SUM(A.RESERVPHYSICAL),
SUM(A.RESERVORDERED),
SUM(A.ONORDER),
SUM(A.ORDERED),
SUM(A.ARRIVED),
SUM(A.QUOTATIONRECEIPT),
SUM(A.QUOTATIONISSUE),
SUM(A.PHYSICALINVENT),
SUM(A.POSTEDVALUESECCUR_RU),
SUM(A.PHYSICALVALUESECCUR_RU),
SUM(A.AVAILPHYSICAL),
SUM(A.AVAILORDERED)
FROM INVENTSUM A
INNER JOIN INVENTDIM B ON A.INVENTDIMID=B.INVENTDIMID
INNER JOIN INVENTTABLE C ON C.ITEMID=A.ITEMID
GROUP BY A.ITEMID,B.INVENTLOCATIONID,C.ITEMNAME
ORDER BY ITEMNAME

Обратно на Axapta сами перевести сможете?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 19.01.2005, 20:09   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
хм... а после этого приходит консультант и говорит, что программировать не надо

То, что привел Maxim Gorbunov правильно. Но не полно.
Поскольку этот запрос сортирует по краткому наименованию.
А вообще говоря, есть полное наименование.
Полное наименование может быть на разных языках...

См. Номенклатура \ Настройка \ Описания номенклатуры по языкам

а теперь возвращаемся к исходной задаче...
вы уверены, что в системе должна быть функициональность с сортировкой по наименованию? Как заметил, AlexUnik, эта форма "и так не отличается быстродействием"...
Старый 19.01.2005, 20:17   #7  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано mazzy
а теперь возвращаемся к исходной задаче...
вы уверены, что в системе должна быть функициональность с сортировкой по наименованию? Как заметил, AlexUnik, эта форма "и так не отличается быстродействием"...
Замечу только для того, чтобы не страдала истина: если linney действительно сделает так, что его форма будет генерировать описанный запрос, быстродействие формы не пострадает. Дополнительная нагрузка упадет на SQL-сервер, но и она будет незначительна.

Тем не менее, это, конечно, не означает, что актуальность задачи бесспорна.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 19.01.2005, 21:02   #8  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
я тоже сомневаюсь в правильности сортировки по названию, но это пример для решения задачи: как БЫСТРО добавить в форму Запроса "В наличии" сортировку
или фильтр по полям связанной с InventSum таблицы. ЛЮБОЙ. Не все параметры, свойства товара можно запихнуть в его код, да еще и так чтобы соблюсти необходимый порядок сортировки, не хочу иметь код размером 40 символов...
(вот и пришлось расказывать "зачем")

А проблема методики кодификации - обсосана тут и везде 1000000 раз - не стоит к ней возвращаться.
Поэтому если Maxim Gorbunov скажет как этот запрос:

SELECT
A.ITEMID,
C.ITEMNAME,
B.INVENTLOCATIONID,
SUM(A.POSTEDQTY),
SUM(A.POSTEDVALUE),
SUM(A.PHYSICALVALUE),
SUM(A.DEDUCTED),
SUM(A.REGISTERED),
SUM(A.RECEIVED),
SUM(A.PICKED),
SUM(A.RESERVPHYSICAL),
SUM(A.RESERVORDERED),
SUM(A.ONORDER),
SUM(A.ORDERED),
SUM(A.ARRIVED),
SUM(A.QUOTATIONRECEIPT),
SUM(A.QUOTATIONISSUE),
SUM(A.PHYSICALINVENT),
SUM(A.POSTEDVALUESECCUR_RU),
SUM(A.PHYSICALVALUESECCUR_RU),
SUM(A.AVAILPHYSICAL),
SUM(A.AVAILORDERED)
FROM INVENTSUM A
INNER JOIN INVENTDIM B ON A.INVENTDIMID=B.INVENTDIMID
INNER JOIN INVENTTABLE C ON C.ITEMID=A.ITEMID
GROUP BY A.ITEMID,B.INVENTLOCATIONID,C.ITEMNAME
ORDER BY ITEMNAME

прикрутить к форме "В наличии", а не к своей форме - было бы супер ибо ответ
на "Обратно на Axapta сами перевести сможете" - пока нет, не могу.
Старый 19.01.2005, 21:23   #9  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
тут добрые люди нашли ответ на этот вопрос...
это уже было в форуме...
Старый 19.01.2005, 21:30   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Добавляете DataSource InventTable и модифицируете метод modifyQuery() у класса InventDimFrmCtrl_OnHand (возможно, класс называется немного иначе - не проверил).
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.01.2005, 12:02   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот Аксаптовский запрос.. Только вопрос.
МАКСИМ, или кто-нибудь другой, а как сюда еще добавить и сортировку по ItemName?

SELECT WITH SELECT_ORDER, NESTED_LOOP, FORCE_PLACEHOLDERS INDEXISHINT
SUM(PostedQty), SUM(PostedValue), SUM(PhysicalValue), SUM(Deducted), SUM(Registered), SUM(Received), SUM(Picked), SUM(ReservPhysical), SUM(ReservOrdered), SUM(OnOrder), SUM(Ordered), SUM(Arrived), SUM(QuotationReceipt), SUM(QuotationIssue), SUM(PhysicalInvent), SUM(PostedValueSecCur_RU), SUM(PhysicalValueSecCur_RU), SUM(AvailPhysical), SUM(AvailOrdered)
FROM InventSum GROUP BY InventSum.ItemId ASC USING INDEX ClosedItemDimIdx WHERE ((Closed = Нет))

JOIN INDEXISHINT * FROM InventDim GROUP BY InventDim.wMSLocationId ASC USING INDEX DimIdIdx WHERE InventSum.InventDimId = InventDim.inventDimId

JOIN ItemName FROM InventTable GROUP BY InventTable.ItemName ASC WHERE InventSum.ItemId = InventTable.ItemId

Если просто так оставить, то сортировка все равно идет по ItemId, так как по нему идет группировка в InventSum

И еще, вообще возможно ли это??

Syntax of select

SelectStatement = select Parameters
Parameters = [ [ FindOptions ] [ FieldList from ] ] TableVariable [IndexClause] [ Options ] [ Where Clause ] [ JoinClause ]
FindOptions = reverse | firstfast | firstonly | forupdate | nofetch
FieldList = Field { , Field } | *
Field = Aggregate ( FieldIdentifier ) | FieldIdentifier
Aggregate = sum | avg | minof | maxof | count
Options = (order by | group by ) FieldIdentifier [ Direction ] { , FieldIdentifier [ Direction ] }
IndexCaluse = index Idx | index hint idx
Direction = asc | desc
WhereClause = where Expression
JoinClause = [exists | notexists | outer ] join Parameters

То есть, насколько я понял, можно или группировать или сортировать. ??
Старый 20.01.2005, 13:16   #12  
AlexUnik is offline
AlexUnik
Участник
 
199 / 22 (1) +++
Регистрация: 01.06.2004
Адрес: Королёв
Есть аьтернативные пути получения информации о наличии товара:
1) Номенклатурный справочник, который можно сортировать как угодно. В нем имеется кнопочка "В наличии". Такой способ отражает более реальные данные в условиях интенсивной работы пользователей.
2) Отчет "В наличии" - создать на его основе собственный отчет с необходимыми сортировками.
3) В заказе использовать функцию "Создание строк". На основе данной формы создать свою с полями фильтрации и сортировки, вытащить кнопку "В наличии" и т.д.
Старый 20.01.2005, 15:11   #13  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
альтернативы не катят...
.отчет - по причине не интерактивности
.номенклатурный справочник - по причине необходимости нажимать на кнопки на каждой строке

надо В Наличии - потому как переписывать вест функционал навернутый на эту форму нет никакого желания, т.к. нужна только сортировка...
Старый 20.01.2005, 15:20   #14  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Сортировать нельзя. Только фильтровать. Обычно этого достаточно.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.01.2005, 18:06   #15  
linney is offline
linney
Участник
Аватар для linney
 
175 / 12 (1) ++
Регистрация: 11.12.2002
Адрес: Киев
это трындец какой-то...
чтоб нельзя было поменять порядок сортировки, сортируем сначала по полям первого датасорся, потом второго... и никак иначе...
Старый 20.01.2005, 18:08   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Я бы сказал, что это - функциональное ограничение
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.01.2005, 20:01   #17  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Да если вы посмотрите как строится отчёт, вы поймёте, что если бы он сортировался (совместно с группировкой) по какому либо полю, кроме ItemId, он бы выводил всякую лажу.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтрация в форме "В наличии" по агрегатному полю "Физ. наличие" miaa DAX: Программирование 13 29.08.2006 23:45
Галка "Закрыто" на таблице "В наличии" sev DAX: Функционал 1 11.04.2006 10:19
Отображение финансовых аналитик в "Номенклатура" - "В наличии" Roenick DAX: Функционал 50 27.03.2006 21:58
Отчет "В наличии". Как добавить новое условие Range ATimTim DAX: Функционал 5 13.08.2005 13:26
Номнклатура без запасов в запросе "В наличии" Van DAX: Функционал 2 03.03.2004 14:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:08.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.