|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Здравствуйте. Имеется класс со свойствами:/// Наименование Property Name As %String; /// Цена Property Count As %Currency; Также созданы объекты этого класса, хранятся в бд: #IDNamePrice122Item25.0000226Mouse40.0000226Keyboard15.0000 И есть метод класса, который должен возвращать наименования в порядке возрастания цены:ClassMethod GetListByPriceAscend() As %ListOfObjects { set rs = ##class(%ResultSet).%New("Test.Product.ByPrice") do rs.Execute() do rs.%Display() k rs q "" } У меня получилось его реализовать с использованием SQL-запроса:Query ByPrice(PriceA As %String) As %SQLQuery [ SqlProc ] { SELECT Name FROM Product ORDER BY Price } В общем, в терминале выводится все как нужно - выводятся Name в порядке возрастания цены. Подскажите, пожалуйста, как сделать так, чтобы метод GetListByPriceAscend() возвращал объект %ListOfObjects? Я не совсем понимаю как можно создать это список, и как туда занести значения в нужном мне порядке. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2014, 19:07 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza, вы понимаете, что в вашем случае данные читаются с диска в оперативную память ? /// Наименование Property Name As %String; /// Цена Property Price As %Currency; /// Индексы - это важно! Index Price On Price; /// А если товаров over 9000+ ? ClassMethod GetListByPriceAscend() As %ListOfObjects { s sql="Select ID From Test.Product Order By Price " s rs = ##class(%SQL.Statement).%ExecDirect(.stm,sql) s list = ##class(%ListOfObjects).%New("Test.Product") for { Q:'rs.%Next() d list.Insert(..%OpenId(rs.ID)) } Q list } /// ClassMethod TestGetListByPriceAscend() { s list=..GetListByPriceAscend() s key = "" for { s obj=list.GetNext( .key ) Q:key="" w !,obj.Name, $c(9), obj.Price } } ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 12:42 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
doublefint, приведенный вами код ничего не выводит. Почему? Объекты в бд имеются.. Что значит: $c(9) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 14:10 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza, Вы не просили, чтобы он выводился. Он возвращается в виде списка объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 14:13 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza, второй метод демонстрирует результат первого метода и как раз выводит список в терминал. $CHAR(9) - выводит символ табуляции. Университет назовете? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 14:42 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
doublefint, Это я понимаю =). Я имела в виду второй метод: TestGetListByPriceAscend. Он ничего не выводит. Сибирский федеральный университет. А почему спрашиваете? С Cache занимаюсь второй день. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 17:34 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza, проверьте запрос в портале управления или выведите результат запроса во втором методеw rs.%SQLCODEИнтересовало название ВУЗа - программа Cache Campus работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2014, 21:31 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
w rs.%SQLCODEвыводит следующее: -30 Что это значит? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 09:40 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 09:56 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Удалось узнать, что -30 - код ошибки( таблица не найдена ). Пришлось сформулировать запрос таким образом:SELECT Name FROM SOMENAMESPACE_TEST.Product ORDER BY PriceСтранно, почему таблица переименована таким образом? В cache code к объектам обращаемся ведь таким образом: SIS.HomeWork.Market.Product ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 09:58 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
RelizaСтранно, почему таблица переименована таким образом? В cache code к объектам обращаемся ведь таким образом: SIS.HomeWork.Market.ProductSELECT Name FROM Product ORDER BY Price ≠ Select ID From Test.Product Order By Price Packages and SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 10:04 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
SELECT ID FROM SOMENAMESPACE_TEST.Product ORDER BY PriceВыдает в качестве результата несуществующий ID, почему? АSELECT ID, Name FROM SOMENAMESPACE_TEST.Product ORDER BY Priceвыдает все как надо? PS. servit, благодарю вас за полезные ссылки. Могли бы вы подсказать ресурс по Cache Object Script, для самых маленьких? http://www.intersystems.ru/cache/education/docs/objectqs.pdf не предлагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 10:53 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Подскажите, можно ли перебрать объекты в БД, не используя глобалы и метод $order()? Товарищ doublefint в этом топике подсказал следующее: s sql="Select ID, Name From Test.Product Order By Price " s rs = ##class(%SQL.Statement).%ExecDirect(.stm,sql) for { Q:'rs.%Next() // получаем id из rs.ID, все ок } Можно ли осуществить подобное, иными методами? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 11:09 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza<...> выдает в качестве результата несуществующий ID, почему? А <...> выдает все как надо?Приведите код полностью . RelizaМогли бы вы подсказать ресурс по Cache Object Script, для самых маленьких? Разработчику Caché RelizaПодскажите, можно ли перебрать объекты в БД, не используя глобалы и метод $order()? Extents ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 11:22 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
servit, очередной раз благодарю. Не знаю можно ли тут репутацию лайкать... Про полученный неверный ID объекта, немножко обманула.., все работает, просто Подскажите, а если я сформирую %ListOfObjects с помощью %ResultSet таким образом: set rset = ##class(%ResultSet).%New("Test.Product:Extent") do rset.Execute() s list = ##class(%ListOfObjects).%New("Test.Product") while ( rset.Next() ) { do list.Insert(..%OpenId(rset.Data("ID"))) } Можно ли как-нибудь отсортировать этот список? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 19:53 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
Reliza, тут такой момент... Вы вообще понимаете, что вы пытаетесь сделать? Лежат себе записи в базе (т.е. на диске), а вы читаете их и открываете как объекты ( скопировать с диска в память ), поместить в список ( +память. Всё всё с диска? ), и... отсортировать!? Можно конечно отсортировать методами списка, но СУБД для чего предназначена? Правильно - хранение, поиск, сортировка, обработка. Так сразу и отсортируйте свои идентификаторы s sql="Select ID From Your.TableName Order By ID Desc " s rs = ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2014, 22:15 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
doublefintReliza, тут такой момент... Вы вообще понимаете, что вы пытаетесь сделать? Видимо, вы правы, я не совсем понимаю, что хочу сделать и как это пытаюсь делать. Знакомлюсь с БД, СУБД и самим Caché с недавних пор, многое пытаюсь делать методом "научного тыка" и по подсказкам с форума.. Недостаток фундаментальных знаний сказывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2014, 08:15 |
|
Создание списка объектов в порядке возрастания(цены)
|
|||
---|---|---|---|
#18+
RelizaSELECT ID FROM SOMENAMESPACE_TEST.Product ORDER BY PriceВыдает в качестве результата несуществующий ID, почему? АSELECT ID, Name FROM SOMENAMESPACE_TEST.Product ORDER BY Priceвыдает все как надо? PS. servit, благодарю вас за полезные ссылки. Могли бы вы подсказать ресурс по Cache Object Script, для самых маленьких? http://www.intersystems.ru/cache/education/docs/objectqs.pdf не предлагать. Есть онлайн курсы по Cache и Zen, бесплатные. Полезные квикстарт статьи: CSP+REST+Angular.js CSP+Twitter Bootstrap, примеры: первый второй Cache + jQuery - раз и два . Канал https://www.youtube.com/user/InterSystemsRUS ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 23:36 |
|
|
start [/forum/topic.php?fid=39&msg=38627642&tid=1556892]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 388ms |
0 / 0 |