19.01.2005, 17:05 | #1 |
Участник
|
Сортировка в запросе "В Наличии"
Добрый день!
Интересуюсь в целях повышения образованности. Как сделать, чтобы товары были в этом запросе отсортированы, скажем, по Названиям Номенклатуры (InventTable.ItemName)? Допустим что интерактивное задание параметров сортировок в фильтре по полям InventTable в этом запросе меня пока не интересует, я просто хочу чтобы при открытии формы товары сортировались по названию |
|
19.01.2005, 17:44 | #2 |
Участник
|
Зачем Вам это? Данная форма и так не отличается быстродействием.
|
|
19.01.2005, 18:21 | #3 |
Участник
|
Не знаете - так и скажите. Не хорошо это, отвечать вопросом на вопрос.
Поясняю: не радует принципиальная (или трудноустранимая) невозможность сортировать по полям таблицы1, в тех местах где есть группировки и суммирование по полям таблицы0. и таблица1 связана с таблица0 по каким-нибудь одному id, а сортировать хочу по таблица1.name |
|
19.01.2005, 19:53 | #4 |
Участник
|
как это делает сиквел...
чем не запрос "в наличии" с аналитикой Склад? 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 |
Administrator
|
Ну Вы сами себе и ответили. Только запросик поменять надо немножко:
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 |
Участник
|
хм... а после этого приходит консультант и говорит, что программировать не надо
То, что привел Maxim Gorbunov правильно. Но не полно. Поскольку этот запрос сортирует по краткому наименованию. А вообще говоря, есть полное наименование. Полное наименование может быть на разных языках... См. Номенклатура \ Настройка \ Описания номенклатуры по языкам а теперь возвращаемся к исходной задаче... вы уверены, что в системе должна быть функициональность с сортировкой по наименованию? Как заметил, AlexUnik, эта форма "и так не отличается быстродействием"... |
|
19.01.2005, 20:17 | #7 |
Administrator
|
Цитата:
Изначально опубликовано mazzy
а теперь возвращаемся к исходной задаче... вы уверены, что в системе должна быть функициональность с сортировкой по наименованию? Как заметил, AlexUnik, эта форма "и так не отличается быстродействием"... Тем не менее, это, конечно, не означает, что актуальность задачи бесспорна.
__________________
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 |
Участник
|
я тоже сомневаюсь в правильности сортировки по названию, но это пример для решения задачи: как БЫСТРО добавить в форму Запроса "В наличии" сортировку
или фильтр по полям связанной с 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 |
Участник
|
тут добрые люди нашли ответ на этот вопрос...
это уже было в форуме... |
|
19.01.2005, 21:30 | #10 |
Administrator
|
Добавляете 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 |
Участник
|
Вот Аксаптовский запрос.. Только вопрос.
МАКСИМ, или кто-нибудь другой, а как сюда еще добавить и сортировку по 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 |
Участник
|
Есть аьтернативные пути получения информации о наличии товара:
1) Номенклатурный справочник, который можно сортировать как угодно. В нем имеется кнопочка "В наличии". Такой способ отражает более реальные данные в условиях интенсивной работы пользователей. 2) Отчет "В наличии" - создать на его основе собственный отчет с необходимыми сортировками. 3) В заказе использовать функцию "Создание строк". На основе данной формы создать свою с полями фильтрации и сортировки, вытащить кнопку "В наличии" и т.д. |
|
20.01.2005, 15:11 | #13 |
Участник
|
альтернативы не катят...
.отчет - по причине не интерактивности .номенклатурный справочник - по причине необходимости нажимать на кнопки на каждой строке надо В Наличии - потому как переписывать вест функционал навернутый на эту форму нет никакого желания, т.к. нужна только сортировка... |
|
20.01.2005, 15:20 | #14 |
Administrator
|
Сортировать нельзя. Только фильтровать. Обычно этого достаточно.
__________________
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 |
Участник
|
это трындец какой-то...
чтоб нельзя было поменять порядок сортировки, сортируем сначала по полям первого датасорся, потом второго... и никак иначе... |
|
20.01.2005, 18:08 | #16 |
Administrator
|
Я бы сказал, что это - функциональное ограничение
__________________
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 |
Участник
|
Да если вы посмотрите как строится отчёт, вы поймёте, что если бы он сортировался (совместно с группировкой) по какому либо полю, кроме ItemId, он бы выводил всякую лажу.
|
|
|
|