powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
52 сообщений из 52, показаны все 3 страниц
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38233058
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это написано в CompiledClass, IndexDefinition.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38233129
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яэто написано в CompiledClass, IndexDefinition.
Смотрю в документации класс %Dictionary.CompiledClass и поиском не нахожу IndexDefinition ...

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

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

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

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

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



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

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

Ну, насчет ждать - не знаю, а насчет описания как что хранится в определении индексов - так толковой доки от представителей Интерсистемс пока в природе не появилось. servit может быть, как инженер Интерсистемс, найдет...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38233553
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я , так я на удачу и спросил... Вдруг кто знает.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38233743
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitА что должно вернуться при составном индексе?
Я не сторонник составных индексов. Т.ч. они меня не интересуют...

servitв новой версии Caché 2013.1 появилась возможность генерировать значение конкретного индекс(а/ов) для конкретного экземпляра класса или для диапазона ID. Возможно, это Вам подойдёт.
Нет у нас такой версии...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38235942
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

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

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

=Сергей
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38235955
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
Код: vbnet
1.
DEV>w ##class(LBCDBLab).SpecimenExists(1)


Вот про эту строчку чуть подробнее... Что делает этот метод?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38235992
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

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

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

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

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

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

Вроде ранее все расписал...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #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
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236060
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , я вообще ничего не знаю про индекс... Только его идентификатор. Т.о. я не знаю нужен %SQLUPPER(Field,5) или там что-то еще...

Но цепанусь за SQL...
Тут я знаю:
- сам запрос (т.е. SQL текст)
- и текущий ИД (они цифровые, стандартное формирование)

Предыдущую строку запроса я наверное не получу... Или можно получить?
Вроде есть вариант взять следующую?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236062
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Хочу узнать предыдущий ИД и следующий.

Вроде ранее все расписал...Для меня это новая информация.

krvsaТак и не понял из того аглицкого описания что таки делаэт эти методы?
Напишите пожалуйста по русски...
Set person = ##class(Sample.Person).SSNKeyOpen("111-22-3333",2,.sc)
Поскольку SSNKey является уникальным индексом, Вы имеете возможность открыть экземпляр не по ID через %OpenId() , а по значению поля SSN, не прибегая к SQL.

Set success = ##class(Sample.Person).SSNKeyExists("111-22-3333",.id)
Соответственно проверяется наличие записи со значением в поле SSN, используя уникальный индекс. Если запись существует вернётся истина и ID этой записи (экземпляра класса).
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236065
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот примерно такое я знаю

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
sqlQuit() /* SQL-функция для причин увольнения (последнее местоработы) */
	n sql,flt
	s sql="Select *, "
	s sql=sql_"a.name as article, "
	s sql=sql_"r.name as reason "
	s sql=sql_"From "
	s sql=sql_"soi_arh_data.quit as q "
	s sql=sql_"left join soi_arh_data.article as a On a.code=q.quitArticle "
	s sql=sql_"left join soi_arh_data.reason as r On r.code=q.quitReason "
	s sql=sql_"Where registration=? "
 	s flt=$$filter^|mvrNS|mvr.sys.fnc(Table,View)
 	s:flt'="" sql=sql_"And "_flt_" "
	s sql=sql_"Order by "
	s sql=sql_"dat"
	q sql



Знаю текущий ИД...
Есть какой-то вариант сделать навигацию "вперед" и "назад" по этому запросу?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236068
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitSet person = ##class(Sample.Person).SSNKeyOpen("111-22-3333",2,.sc)
Поскольку SSNKey является уникальным индексом, Вы имеете возможность открыть экземпляр не по ID через %OpenId() , а по значению поля SSN, не прибегая к SQL.
Тогда зачем 2 и 3-тий параметры?

servitSet success = ##class(Sample.Person).SSNKeyExists("111-22-3333",.id)
Соответственно проверяется наличие записи со значением в поле SSN, используя уникальный индекс. Если запись существует вернётся истина и ID этой записи (экземпляра класса).
Ясно, спасибо.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236119
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТогда зачем 2 и 3-тий параметры?Второй параметр - concurrency .
Третий параметр - статус операции. Например, в случае отсутствия указанного экземпляра будет содержать ошибку.
krvsa servit , я вообще ничего не знаю про индекс... Только его идентификатор. Т.о. я не знаю нужен %SQLUPPER(Field,5) или там что-то еще...krvsaЗнаю текущий ИД...
Есть какой-то вариант сделать навигацию "вперед" и "назад" по этому запросу?С этого и стоило начать.

%vid (с версии 2011.1)

%ScrollableResultSet (примеры использования уже приводились, например 6698559 )
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236126
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitС этого и стоило начать.
Это не начало, это т.с. продолжение.
Про индекс интерес остаётся...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236147
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit %vid (с версии 2011.1)

%ScrollableResultSet (примеры использования уже приводились, например 6698559 )

Не совсем понял как это может помочь взять предыдущий и следующий элемент/строку некоего запроса...

%ScrollableResultSet вообще примеры только с классовыми запросами... Как его применять к динамическим запросам?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236148
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про %vid можно по русски рассказать? Или пример какой для иллюстрации? Из документации мало чего понял...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236154
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации используют

Код: sql
1.
SELECT *, %vid FROM (SELECT ....) v WHERE %vid BETWEEN 5 AND 10



Как понять

Код: sql
1.
v WHERE


Что это за "v"?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236156
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЭто не начало, это т.с. продолжение.
Про индекс интерес остаётся...
Код: plaintext
1.
2.
^classNameI("indexName"," QWE",8)=""
^classNameI("indexName"," QWE",12)=""
^classNameI("indexName"," QWE",30)=""

То есть, зная className, indexName и ID=12, Вы хотите получить:
1) значение " QWE"
2) предыдущее (8) и следующее (30) значение ID

Если уникальных значений для индексируемого поля немного, возможно будет проще обойти глобал ^classNameI?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236201
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitТо есть, зная className, indexName и ID=12, Вы хотите получить:
1) значение " QWE"
2) предыдущее (8) и следующее (30) значение ID
Да.
Но это частный случай... В общем же я даже не знаю как вообще будет выглядеть то " QWE" ... Есть варианты:
- " QWE"
- "QWE"
- " QwE"
и т.п...

servitЕсли уникальных значений для индексируемого поля немного ...
Я не могу знать сколько их...

servitвозможно будет проще обойти глобал ^classNameI?
По нему я и пойду. Мне нужна т.с. "отправная точка". А это либо "ключевое выражение"... Или имя всего глобала для этого экземпляра, что подойдет для всех типов индекса.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236205
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,
я так понимаю, что krvsa хочет получить " QWE", зная "indexName",
но не зная типа индекса (сортировки)...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236219
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuservit,
я так понимаю, что krvsa хочет получить " QWE", зная "indexName",
но не зная типа индекса (сортировки)...Я это уже понял 14206770
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236229
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЧто это за "v"?Алиас представления: по аналогии с select field1 as alias1,(select 1) as v from table1 as tkrvsaПро %vid можно по русски рассказать? Или пример какой для иллюстрации? Из документации мало чего понял... %vid - номер строки в представлении. Удобно использовать для порционного вывода данных, например:select *,%vid "Номер строки" from (select 'Строка1' as n union select 'Строка2' union select 'Строка3') as vРезультатnНомер строкиСтрока11Строка22Строка33select *,%vid "Номер строки" from (select 'Строка1' as n union select 'Строка2' union select 'Строка3') as v where %vid between 2 and 3РезультатnНомер строкиСтрока22Строка33
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236262
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa%ScrollableResultSet вообще примеры только с классовыми запросами... Как его применять к динамическим запросам? %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet .

%ScrollableResultSet позволяет сохранить результат запроса во временный ( ^CacheTemp* ) глобал (aka режим snapshot) и затем иметь возможность бегать по результирующим записям в обоих направлениях.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236286
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЯ не могу знать сколько их...
<...>
По нему я и пойду. Мне нужна т.с. "отправная точка". А это либо "ключевое выражение"... Или имя всего глобала для этого экземпляра, что подойдет для всех типов индекса.Отправная точка понадобится в любом случае, если записей очень много.
Чтобы на этапе runtime не вычислять каждый раз через рефлексию тип и сортировку индекса, проще будет написать свой метод-генератор, вычисляющий значение указанного индекса по заданному ID.
Код метода-генератора будет сформирован ещё на этапе компиляции и возможных типов сортировок не так уж много, поэтому не должно быть проблем с производительностью.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236418
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit %vid - номер строки в представлении.
Ясно.
Спасибо за подробнейшие примеры!

Если я правильно понял, мой селект нужно поместить в скобки?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236423
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet .
Так и не понял как все же использовать?
Примерчик покажешь?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236426
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitпроще будет написать свой метод-генератор, вычисляющий значение указанного индекса по заданному ID.
Так вот до этого и не хотелось бы "опускаться"...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236436
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaservit %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet .
Так и не понял как все же использовать?
Примерчик покажешь?
Вот например как тут вывести определённые строки (пример просто копирнул из како-то программки)?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	s sql="Select * "
	s sql=sql_"from mvr_data.listCol "
	s sql=sql_"where listTbl->name = ? "
	s sql=sql_"AND (notView =0 Or notView is Null) "
	s sql=sql_"AND listTbl->tableCls->name = ? "
	s sql=sql_"AND listTbl->tableCls->task->name = ? "
	s sql=sql_"ORDER BY sort"	
	s o=##class(%ResultSet.SQL).%Prepare(sql,.err,"",View,Table,task)
	&html<<tr>>
		&html<<td class='mvr_list_linetyp'>>
			&html<>
		&html<</td>>
	while o.%Next() {
		d FINDCOL
	}
	&html<</tr>>
	k o
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236571
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТак и не понял как все же использовать?
Примерчик покажешь?  s rs=##class(%ScrollableResultSet).%New()
  d rs.Prepare("select *,%vid ""Номер строки"" from (select 'Строка1' as n union select 'Строка2' union select 'Строка3') as v")
  d rs.Execute()
  d rs.%Display()
  
  w !,"---",!
  s rs.CurrRow=1
  d rs.%Display()
  
  w !,"---",!
  while rs.Previous() {d rs.%Print()}Результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
n       Номер строки
Строка1 1
Строка2 2
Строка3 3
 
3 Rows(s) Affected
---
n       Номер строки
Строка2 2
Строка3 3
 
3 Rows(s) Affected
---
Строка3 3
Строка2 2
Строка1 1

krvsaЕсли я правильно понял, мой селект нужно поместить в скобки?Да, примерно так: select * from (Ваш запрос) where %vid ...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38236590
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , огромнейшее тебе спасибо!
Все потестировал - все это даёт мне максимум возможностей для решения задачи.
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38254912
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitДа, примерно так: select * from (Ваш запрос) where %vid ...
Рано я радовался...

Поскольку во FROM нет возможности использовать ORDER BY, из моего запроса берутся "первые" N-строк и только потом применяется сортировка...

Вот что хотелось бы полистать...
Код: sql
1.
SELECT * FROM mvr_data.tableCls WHERE task->name=? ORDER BY description


Преобразовываю в
Код: sql
1.
Select %vid,* From (SELECT * FROM mvr_data.tableCls WHERE task->name=? ) Where %vid between ? and ? ORDER BY description



В итоге просто кусками выбирается информация и только после этого кусок сортируется...

Может есть какой-то вариант, когда можно сначала сортировать и только после этого взять нужный кусок?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38254921
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал и так...
Код: sql
1.
Select * From (SELECT * FROM mvr_data.tableCls WHERE task->name=? ) Where %vid between ? and ? ORDER BY description


без разницы...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38255247
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.ч. пока переделал на %ScrollableResultSet...
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38255420
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaРано я радовался...

Поскольку во FROM нет возможности использовать ORDER BYПравильно. Если не использовать http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_select#RSQL_select_top]TOP int |ALL
TOP ALL is only meaningful in a subquery or in a CREATE VIEW statement. It is used to support the use of an ORDER BY clause in these situations, fulfilling the requirement that an ORDER BY clause must be paired with a TOP clause in a subquery or a query used in a CREATE VIEW. TOP ALL does not restrict the number of rows returned.Попробуйте так:Select %vid,* From (SELECT TOP ALL * FROM mvr_data.tableCls WHERE task->name=? ORDER BY description) Where %vid between ? and ?
...
Рейтинг: 0 / 0
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
    #38255454
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitЕсли не использовать http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_select#RSQL_select_top]TOP int |ALL
TOP ALL is only meaningful in a subquery or in a CREATE VIEW statement. It is used to support the use of an ORDER BY clause in these situations, fulfilling the requirement that an ORDER BY clause must be paired with a TOP clause in a subquery or a query used in a CREATE VIEW. TOP ALL does not restrict the number of rows returned.
Вона че... Спасибо, буду знать...

Попробуйте так:Select %vid,* From (SELECT TOP ALL * FROM mvr_data.tableCls WHERE task->name=? ORDER BY description) Where %vid between ? and ?[/quot]
Так - да, работает.

Только таки останусь на %ScrollableResultSet... Т.к. там эта "приставка" идет на откуп пользователю и меня это больше устраивает... Да и количество записей можно использовать в статистике.
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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