|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit , я вообще ничего не знаю про индекс... Только его идентификатор. Т.о. я не знаю нужен %SQLUPPER(Field,5) или там что-то еще... Но цепанусь за SQL... Тут я знаю: - сам запрос (т.е. SQL текст) - и текущий ИД (они цифровые, стандартное формирование) Предыдущую строку запроса я наверное не получу... Или можно получить? Вроде есть вариант взять следующую? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:01 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
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 этой записи (экземпляра класса). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:01 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
Вот примерно такое я знаю Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Знаю текущий ИД... Есть какой-то вариант сделать навигацию "вперед" и "назад" по этому запросу? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:02 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
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 этой записи (экземпляра класса). Ясно, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:04 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
krvsaТогда зачем 2 и 3-тий параметры?Второй параметр - concurrency . Третий параметр - статус операции. Например, в случае отсутствия указанного экземпляра будет содержать ошибку. krvsa servit , я вообще ничего не знаю про индекс... Только его идентификатор. Т.о. я не знаю нужен %SQLUPPER(Field,5) или там что-то еще...krvsaЗнаю текущий ИД... Есть какой-то вариант сделать навигацию "вперед" и "назад" по этому запросу?С этого и стоило начать. %vid (с версии 2011.1) %ScrollableResultSet (примеры использования уже приводились, например 6698559 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:33 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servitС этого и стоило начать. Это не начало, это т.с. продолжение. Про индекс интерес остаётся... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:38 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit %vid (с версии 2011.1) %ScrollableResultSet (примеры использования уже приводились, например 6698559 ) Не совсем понял как это может помочь взять предыдущий и следующий элемент/строку некоего запроса... %ScrollableResultSet вообще примеры только с классовыми запросами... Как его применять к динамическим запросам? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:49 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
Про %vid можно по русски рассказать? Или пример какой для иллюстрации? Из документации мало чего понял... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:50 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
В документации используют Код: sql 1.
Как понять Код: sql 1.
Что это за "v"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:53 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
krvsaЭто не начало, это т.с. продолжение. Про индекс интерес остаётся... Код: plaintext 1. 2.
То есть, зная className, indexName и ID=12, Вы хотите получить: 1) значение " QWE" 2) предыдущее (8) и следующее (30) значение ID Если уникальных значений для индексируемого поля немного, возможно будет проще обойти глобал ^classNameI? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 10:54 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servitТо есть, зная className, indexName и ID=12, Вы хотите получить: 1) значение " QWE" 2) предыдущее (8) и следующее (30) значение ID Да. Но это частный случай... В общем же я даже не знаю как вообще будет выглядеть то " QWE" ... Есть варианты: - " QWE" - "QWE" - " QwE" и т.п... servitЕсли уникальных значений для индексируемого поля немного ... Я не могу знать сколько их... servitвозможно будет проще обойти глобал ^classNameI? По нему я и пойду. Мне нужна т.с. "отправная точка". А это либо "ключевое выражение"... Или имя всего глобала для этого экземпляра, что подойдет для всех типов индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:12 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit, я так понимаю, что krvsa хочет получить " QWE", зная "indexName", но не зная типа индекса (сортировки)... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:14 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
ser_shuservit, я так понимаю, что krvsa хочет получить " QWE", зная "indexName", но не зная типа индекса (сортировки)...Я это уже понял 14206770 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:19 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:23 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
krvsa%ScrollableResultSet вообще примеры только с классовыми запросами... Как его применять к динамическим запросам? %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet . %ScrollableResultSet позволяет сохранить результат запроса во временный ( ^CacheTemp* ) глобал (aka режим snapshot) и затем иметь возможность бегать по результирующим записям в обоих направлениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:35 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
krvsaЯ не могу знать сколько их... <...> По нему я и пойду. Мне нужна т.с. "отправная точка". А это либо "ключевое выражение"... Или имя всего глобала для этого экземпляра, что подойдет для всех типов индекса.Отправная точка понадобится в любом случае, если записей очень много. Чтобы на этапе runtime не вычислять каждый раз через рефлексию тип и сортировку индекса, проще будет написать свой метод-генератор, вычисляющий значение указанного индекса по заданному ID. Код метода-генератора будет сформирован ещё на этапе компиляции и возможных типов сортировок не так уж много, поэтому не должно быть проблем с производительностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 11:46 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit %vid - номер строки в представлении. Ясно. Спасибо за подробнейшие примеры! Если я правильно понял, мой селект нужно поместить в скобки? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 12:50 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet . Так и не понял как все же использовать? Примерчик покажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 12:52 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servitпроще будет написать свой метод-генератор, вычисляющий значение указанного индекса по заданному ID. Так вот до этого и не хотелось бы "опускаться"... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 12:53 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
krvsaservit %ScrollableResultSet наследуется от %ResultSet , поэтому ответ таков: как для %ResultSet . Так и не понял как все же использовать? Примерчик покажешь? Вот например как тут вывести определённые строки (пример просто копирнул из како-то программки)? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 12:58 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
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.
krvsaЕсли я правильно понял, мой селект нужно поместить в скобки?Да, примерно так: select * from (Ваш запрос) where %vid ... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 13:55 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servit , огромнейшее тебе спасибо! Все потестировал - все это даёт мне максимум возможностей для решения задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2013, 14:08 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
servitДа, примерно так: select * from (Ваш запрос) where %vid ... Рано я радовался... Поскольку во FROM нет возможности использовать ORDER BY, из моего запроса берутся "первые" N-строк и только потом применяется сортировка... Вот что хотелось бы полистать... Код: sql 1.
Преобразовываю в Код: sql 1.
В итоге просто кусками выбирается информация и только после этого кусок сортируется... Может есть какой-то вариант, когда можно сначала сортировать и только после этого взять нужный кусок? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 11:08 |
|
Есть ли метод формирующий ключевое выражение индекса класса для экземпляра?
|
|||
---|---|---|---|
#18+
Пробовал и так... Код: sql 1.
без разницы... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 11:12 |
|
|
start [/forum/topic.php?fid=39&msg=38236154&tid=1557168]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
144ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 255ms |
0 / 0 |