AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 19.01.2005, 17:05   #1  
linney is offline
linney
Участник
linney's Avatar
 
175 / 12 (1) ++
Join Date: 11.12.2002
Location: Киев
Сортировка в запросе "В Наличии"
Добрый день!

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

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

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

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

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
Old 19.01.2005, 20:04   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Old 19.01.2005, 20:09   #6  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
хм... а после этого приходит консультант и говорит, что программировать не надо

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

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

а теперь возвращаемся к исходной задаче...
вы уверены, что в системе должна быть функициональность с сортировкой по наименованию? Как заметил, AlexUnik, эта форма "и так не отличается быстродействием"...
Old 19.01.2005, 20:17   #7  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано 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
Old 19.01.2005, 21:02   #8  
linney is offline
linney
Участник
linney's Avatar
 
175 / 12 (1) ++
Join Date: 11.12.2002
Location: Киев
я тоже сомневаюсь в правильности сортировки по названию, но это пример для решения задачи: как БЫСТРО добавить в форму Запроса "В наличии" сортировку
или фильтр по полям связанной с 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 сами перевести сможете" - пока нет, не могу.
Old 19.01.2005, 21:23   #9  
linney is offline
linney
Участник
linney's Avatar
 
175 / 12 (1) ++
Join Date: 11.12.2002
Location: Киев
тут добрые люди нашли ответ на этот вопрос...
это уже было в форуме...
Old 19.01.2005, 21:30   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Old 20.01.2005, 12:02   #11  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: 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

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

надо В Наличии - потому как переписывать вест функционал навернутый на эту форму нет никакого желания, т.к. нужна только сортировка...
Old 20.01.2005, 15:20   #14  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Old 20.01.2005, 18:06   #15  
linney is offline
linney
Участник
linney's Avatar
 
175 / 12 (1) ++
Join Date: 11.12.2002
Location: Киев
это трындец какой-то...
чтоб нельзя было поменять порядок сортировки, сортируем сначала по полям первого датасорся, потом второго... и никак иначе...
Old 20.01.2005, 18:08   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: 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
Old 20.01.2005, 20:01   #17  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Join Date: 23.07.2004
Location: г. Новокузнецк
Да если вы посмотрите как строится отчёт, вы поймёте, что если бы он сортировался (совместно с группировкой) по какому либо полю, кроме ItemId, он бы выводил всякую лажу.
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Фильтрация в форме "В наличии" по агрегатному полю "Физ. наличие" 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 07:31.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.