Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Есть ли метод формирующий ключевое выражение индекса класса для экземпляра? / 25 сообщений из 52, страница 1 из 3
19.04.2013, 16:00
    #38232965
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
Знаю:
- имя класса
- имя индекса
- ИД экземпляра

Как на базе этой информации получить ключевое выражение индекса класса для экземпляра?
----------
Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST
Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST
...
Рейтинг: 0 / 0
19.04.2013, 16:31
    #38233058
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
это написано в CompiledClass, IndexDefinition.
...
Рейтинг: 0 / 0
19.04.2013, 16:58
    #38233129
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
ну яэто написано в CompiledClass, IndexDefinition.
Смотрю в документации класс %Dictionary.CompiledClass и поиском не нахожу IndexDefinition ...

Можно более подробнее? Пример какой-то не помешал бы...
...
Рейтинг: 0 / 0
19.04.2013, 17:25
    #38233212
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsaМожно более подробнее? Пример какой-то не помешал бы...От Вас тоже не помешал бы пример, что Вы подразумеваете под "ключевое выражение индекса класса для экземпляра".
Пример для bitmap-индекса можете привести?
...
Рейтинг: 0 / 0
19.04.2013, 17:40
    #38233256
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsa,

У класса CompiedClass взять объект определения класса, у него свойство relationship Indices as %Dictionary.CompiledIndex. Обшибся с названием класса, IndexDefinition это то что до компиляции. Вот в свойствах этого %Dictionary.CompiledIndex и прописаны Type, Data и прочее.
...
Рейтинг: 0 / 0
19.04.2013, 17:50
    #38233286
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
ну я ,

%Dictionary.CompiledIndex имеется.
Что дальше делать с "ИД экземпляра"?
...
Рейтинг: 0 / 0
19.04.2013, 19:43
    #38233455
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servit,

Что-то мне подсказывает, что должна существовать граница вопросов, после которой начинается самостоятельная работа.
...
Рейтинг: 0 / 0
19.04.2013, 21:14
    #38233515
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servitОт Вас тоже не помешал бы пример
Про битмап мне не интересно... А простой класс имеет примерно такую структуру

Код: vbnet
1.
^<имя_класса>I(<имя_индекса>,<ключевое_выражение>,ID)=""



Вот это ключевое выражение я и хочу получить, зная все остальное.
...
Рейтинг: 0 / 0
19.04.2013, 21:15
    #38233517
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
ну яЧто-то мне подсказывает, что должна существовать граница вопросов, после которой начинается самостоятельная работа.
Т.е. ответов далее не ждать?
...
Рейтинг: 0 / 0
19.04.2013, 21:18
    #38233522
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
ну яВот в свойствах этого %Dictionary.CompiledIndex и прописаны Type, Data и прочее.
Про этот класс я знаю.

Интересуюсь есть ли что-то, метод или функция, которая сразу вернет мне "ключевое выражение" для некоего индекса класса и известного ИД экземпляра...
Кащей же как-то его вычисляет. Можкт есть чем сразу и воспользоваться...
...
Рейтинг: 0 / 0
19.04.2013, 21:52
    #38233530
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsa,

Ну, насчет ждать - не знаю, а насчет описания как что хранится в определении индексов - так толковой доки от представителей Интерсистемс пока в природе не появилось. servit может быть, как инженер Интерсистемс, найдет...
...
Рейтинг: 0 / 0
19.04.2013, 22:37
    #38233553
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
ну я , так я на удачу и спросил... Вдруг кто знает.
...
Рейтинг: 0 / 0
19.04.2013, 23:04
    #38233564
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsaВот это ключевое выражение я и хочу получить, зная все остальное.Именно это мною с самого начала и подразумевалось.
Я просто не был уверен в смысле отношения CompiledClass и IndexDefinition к сути вопроса, поэтому и переспросил.

Такой готовой функции для простого индекса нет, но при желании её можно написать самостоятельно.

А что должно вернуться при составном индексе?
Код: sql
1.
2.
3.
Index indexName On (a, b);

^globalI("indexName","A","B",1)=""


PS: в новой версии Caché 2013.1 появилась возможность генерировать значение конкретного индекс(а/ов) для конкретного экземпляра класса или для диапазона ID. Возможно, это Вам подойдёт.

ну яservit может быть, как инженер Интерсистемс, найдет...Я не являюсь инженером InterSystems.
...
Рейтинг: 0 / 0
20.04.2013, 12:27
    #38233743
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servitА что должно вернуться при составном индексе?
Я не сторонник составных индексов. Т.ч. они меня не интересуют...

servitв новой версии Caché 2013.1 появилась возможность генерировать значение конкретного индекс(а/ов) для конкретного экземпляра класса или для диапазона ID. Возможно, это Вам подойдёт.
Нет у нас такой версии...
...
Рейтинг: 0 / 0
22.04.2013, 08:26
    #38234538
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servitА что должно вернуться при составном индексе?
Код: sql
1.
2.
3.
Index indexName On (a, b);

^globalI("indexName","A","B",1)=""


Думаю, что для всех вариантов (и для битмап) подошло простое значение $na(). Т.е. вот это

Код: vbnet
1.
s name=$na(^globalI("indexName","A","B",1))



Т.о., зная ИД, я запросто могу получить как следующий, так и предудущий элемент "по индексу"...
...
Рейтинг: 0 / 0
23.04.2013, 08:18
    #38235942
logist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsa,

DEV>w ##class(LBCDBLab).SpecimenExists(1)
0
DEV>w $name(^(""))
^User.LBCDBLabI("Specimen",1,"")

Как инженер Интерсистемс я бы не советовал этого делать в продакшене, но если очень хочется... )))

=Сергей
...
Рейтинг: 0 / 0
23.04.2013, 08:36
    #38235953
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
logistКак инженер Интерсистемс я бы не советовал этого делать в продакшене
Тогда зачем такое писать?

Насколько я понял

Код: vbnet
1.
w $na(^(""))



Возвращает что-то опираясь на $zr...

Код: vbnet
1.
2.
3.
4.
5.
6.
TEST>w $d(^O("Df"))
10
TEST>w $na(^(""))
^O("")
TEST>w $zr
^O("Df")



И смысл применять мне сие? Там нет ни указание индекса, ни ИД экземпляра... Это просто некий выверт. Максимум частный случай...
...
Рейтинг: 0 / 0
23.04.2013, 08:39
    #38235955
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
logist
Код: vbnet
1.
DEV>w ##class(LBCDBLab).SpecimenExists(1)


Вот про эту строчку чуть подробнее... Что делает этот метод?
...
Рейтинг: 0 / 0
23.04.2013, 09:11
    #38235980
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsaВот про эту строчку чуть подробнее... Что делает этот метод? %CacheIndex

Instance by Index Key

logist ,

Дано Sample.Company :IDName20OctoTron LLC.
Пример:

Код: plaintext
1.
2.
3.
4.
5.
SAMPLES>w ##class(Sample.Company).NameIdxExists("20",.id)
0
SAMPLES>w $name(^(""))
^Sample.CompanyI("NameIdx"," 20","")
SAMPLES>w
id=""

Что не есть желаемое.

Другой пример:

Код: plaintext
1.
2.
3.
4.
5.
SAMPLES>w ##class(Sample.Company).NameIdxExists("OctoTron LLC.",.id)
1
SAMPLES>w $name(^(""))
^Sample.CompanyI("NameIdx"," OCTOTRON LLC.","")
SAMPLES>w
id=20

Но здесь не участвует ID экземпляра.
...
Рейтинг: 0 / 0
23.04.2013, 09:20
    #38235992
logist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servit,

ну надо делать $name(^(id))

я всеравно не понимаю зачем это надо и чем плох стандартный SQL
...
Рейтинг: 0 / 0
23.04.2013, 09:20
    #38235993
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servitЧто не есть желаемое.
...
Но здесь не участвует ID экземпляра.
Вывод - фтопку!
...
Рейтинг: 0 / 0
23.04.2013, 09:21
    #38235994
logist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
krvsa,

поддерживаю ))

just use SQL
...
Рейтинг: 0 / 0
23.04.2013, 09:36
    #38236014
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
logistя всеравно не понимаю зачем это надо
Хочу сделать навигацию по индексу... Знаю только
- имя класса
- имя индекса
- ИД экземпляра

Хочу узнать предыдущий ИД и следующий.

Вроде ранее все расписал...
...
Рейтинг: 0 / 0
23.04.2013, 09:39
    #38236020
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
servitkrvsaВот про эту строчку чуть подробнее... Что делает этот метод? %CacheIndex

Instance by Index Key

Так и не понял из того аглицкого описания что таки делаэт эти методы?

Код: vbnet
1.
2.
3.
Set person = ##class(Sample.Person).SSNKeyOpen("111-22-3333",2,.sc)
//
Set success = ##class(Sample.Person).SSNKeyExists("111-22-3333",.id)



Напишите пожалуйста по русски...
...
Рейтинг: 0 / 0
23.04.2013, 09:47
    #38236037
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
logistну надо делать $name(^(id))Что это даёт?

Код: plaintext
1.
2.
3.
4.
5.
SAMPLES>w ##class(Sample.Company).NameIdxExists("20",.id)
0
SAMPLES>w $name(^("20"))
^Sample.CompanyI("NameIdx"," 20",20)
SAMPLES>w
id=""
logistя всеравно не понимаю зачем это надо и чем плох стандартный SQLПри Index Idx On Field As SQLUPPER(5); я думаю, ТС просто не хочет делать select %SQLUPPER(Field,5) from table where %ID=1
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Есть ли метод формирующий ключевое выражение индекса класса для экземпляра? / 25 сообщений из 52, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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