Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как взять данные по свойству класса? / 22 сообщений из 22, страница 1 из 1
07.09.2007, 11:53
    #34783803
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Как взять данные по свойству класса? Как "пройтись" по свойствам я уже понял :)
Т.е. есть имя класса, имя свойства... Как найти "id" свойства?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 11:55
    #34783816
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaКак взять данные по свойству класса? Как "пройтись" по свойствам я уже понял :)
Т.е. есть имя класса, имя свойства... Как найти "id" свойства?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Что за ID свойства ? Приведите пример, пожалуйста
...
Рейтинг: 0 / 0
07.09.2007, 12:02
    #34783855
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Вот мне давали пример с индексами...
Код: plaintext
1.
2.
3.
4.
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 s n=ocls.Indices.Count()
 for i= 1 : 1 :n {
    w !,ocls.Indices.GetAt(i).Name
 }
Я так понимаю что со свойствами работа аналогична?
Тогда мне хотелось найти чему равно i для элемента с определеным значением свойства. В этом примере Name.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 12:11
    #34783886
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaВот мне давали пример с индексами...
Код: plaintext
1.
2.
3.
4.
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 s n=ocls.Indices.Count()
 for i= 1 : 1 :n {
    w !,ocls.Indices.GetAt(i).Name
 }
Я так понимаю что со свойствами работа аналогична?
Тогда мне хотелось найти чему равно i для элемента с определеным значением свойства. В этом примере Name.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

да, аналогична. только не по indices, s n=ocls.Properties.Count()

посмотрите %Library.PropertyDefinition
у него тоже есть Name и т.п. аналогичные с %IndexDefinition
...
Рейтинг: 0 / 0
07.09.2007, 12:31
    #34783977
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Т.е. найти можно только "пробежкой" от 1 до ocls.Properties.Count()? Никаких методов типа Find нет?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 12:48
    #34784057
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaТ.е. найти можно только "пробежкой" от 1 до ocls.Properties.Count()? Никаких методов типа Find нет?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

вообще, Properties наследуются от %ListOfPersistentChildObjects, который в свою очередь от %ListOfObjects. Следовательно, к ним можно применить стандартные методы %ListOfObjects, в том числе и find.

P.s. GetAt(i) - это же ведь метод от %ListOfObjects
...
Рейтинг: 0 / 0
07.09.2007, 12:58
    #34784102
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
И как этод find будет выглядеть? Я просто не в курсе... :(
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 13:09
    #34784157
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
LenRover krvsaТ.е. найти можно только "пробежкой" от 1 до ocls.Properties.Count()? Никаких методов типа Find нет?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

вообще, Properties наследуются от %ListOfPersistentChildObjects, который в свою очередь от %ListOfObjects. Следовательно, к ним можно применить стандартные методы %ListOfObjects, в том числе и find.

P.s. GetAt(i) - это же ведь метод от %ListOfObjects

Извиняюсь.. неправильно написала.
Properties - являются простой %String
...
Рейтинг: 0 / 0
07.09.2007, 13:11
    #34784171
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
LenRover[quot krvsa]Т.е. найти можно только "пробежкой" от 1 до ocls.Properties.Count()? Никаких методов типа Find нет?


нет такого Properties.Count(), так как выше я сказала, что Properties являются строкой.

Так что вместо пробежки можно использовать разве что стандартный $Find.
...
Рейтинг: 0 / 0
07.09.2007, 13:26
    #34784244
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Мы просто отклонились от вопроса... Вернемся к примеру:
Код: plaintext
1.
2.
3.
4.
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 s n=ocls.Indices.Count()
 for i= 1 : 1 :n {
    w !,ocls.Indices.GetAt(i).Name
 }
Как найти значение i если знаю что Name равняется (например) MyVal? В цикле бежать и проверять на равенство не хочется...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 13:36
    #34784295
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaМы просто отклонились от вопроса... Вернемся к примеру:
Код: plaintext
1.
2.
3.
4.
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 s n=ocls.Indices.Count()
 for i= 1 : 1 :n {
    w !,ocls.Indices.GetAt(i).Name
 }
Как найти значение i если знаю что Name равняется (например) MyVal? В цикле бежать и проверять на равенство не хочется...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Думаю, придется смириться с циклом...
еще есть, конечно, вариант sql запроса типа
select * from %Library.ClassDefinition ....
либо
SELECT * FROM %Dictionary.ClassDefinition

where Name=Имя класса

но я таким способом не работала
...
Рейтинг: 0 / 0
07.09.2007, 14:03
    #34784426
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Вроде опять не о том Name пошла речь... В моем примере Name это имя индекса. В вашем вроде про имя класса...
Так вот я про имя индекса в спрашивал...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 14:11
    #34784462
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Например у меня есть имя класса, имя индекса. Нужно узнать дескрипшен этого индекса...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 14:16
    #34784481
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaНапример у меня есть имя класса, имя индекса. Нужно узнать дескрипшен этого индекса...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

ocls.Indices.GetAt(i).Description
...
Рейтинг: 0 / 0
07.09.2007, 14:19
    #34784489
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaНапример у меня есть имя класса, имя индекса. Нужно узнать дескрипшен этого индекса...

Так можно:
Код: plaintext
1.
2.
s p=##class(%Dictionary.CompiledIndex).%OpenId("User.DummyPers||AUnique")
w p.Description
User.DummyPers- имя класса
AUnique -- имя индекса
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 14:28
    #34784521
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
LenRoverocls.Indices.GetAt(i).Description
Это если я знаю i... А я его не знаю. Знаю только имя индекса...
...
Рейтинг: 0 / 0
07.09.2007, 14:29
    #34784525
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Александр Коблов , а для дескрипшена свойства?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 14:31
    #34784530
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaА для дескрипшена свойства?
А какие там свойства?
...
Рейтинг: 0 / 0
07.09.2007, 14:37
    #34784564
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Александр КобловА какие там свойства?
У свойства класса много свойств (извините за тофтологию)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
class %Dictionary.PropertyDefinition 
property Calculated As %Boolean  [InitialExpression =  0 ;] 
• property Cardinality As %CacheString 
• property ClientName As %CacheString 
• property Collection As %CacheString 
• property Description As %CacheString 
• property Final As %Boolean  [InitialExpression =  0 ;] 
• property InitialExpression As %CacheString  [InitialExpression = """""";] 
• property Inverse As %CacheString 
• property MultiDimensional As %Boolean  [InitialExpression =  0 ;] 
• property Name As %Dictionary.CacheIdentifier 
• property NotInheritable As %Boolean  [InitialExpression =  0 ;] 
• array property Parameters As %CacheString 
• property Private As %Boolean  [InitialExpression =  0 ;] 
• property ReadOnly As %Boolean  [InitialExpression =  0 ;] 
• property Relationship As %Boolean  [InitialExpression =  0 ;] 
• property Required As %Boolean  [InitialExpression =  0 ;] 
• property SequenceNumber As %Integer  [InitialExpression =  0 ;] 
• property SqlCollation As %CacheString 
• property SqlColumnNumber As %CacheString 
• property SqlComputeCode As %CacheString 
• property SqlComputeOnChange As %CacheString 
• property SqlComputed As %Boolean  [InitialExpression =  0 ;] 
• property SqlFieldName As %CacheString 
• property SqlListDelimiter As %CacheString 
• property SqlListType As %CacheString 
• property Transient As %Boolean  [InitialExpression =  0 ;] 
• property Type As %Dictionary.CacheClassname
О! Сколько.
...
Рейтинг: 0 / 0
07.09.2007, 14:39
    #34784572
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Мне пока нужено значение свойства (у свойства моего класса) Description...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.09.2007, 15:01
    #34784681
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
krvsaМне пока нужено значение свойства (у свойства моего класса) Description...
Так вы ж так и написали %Dictionary.PropertyDefinition (или %Dictionary.CompiledProperty).
Код: plaintext
1.
2.
s p=##class(%Dictionary.CompiledProperty).%OpenId("User.DummyPers||A")
w p.Description
A -- имя свойства
...
Рейтинг: 0 / 0
07.09.2007, 15:39
    #34784856
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как взять данные по свойству класса?
Во! Спасибочки...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как взять данные по свойству класса? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]