|
получить ID
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые знатоки Cache ! Созрел у меня вопрос на который я как то не нашел внятный ответ в документации и по этому вынужден обеспокоить вас .... Как открыть класс с помощью %openId(id) при том что id Неизвестен ? Вариант с %openId( -не прокатывает т.к. ID могут начинаться с 10000000456348563874653-значения... Или более корректный вопрос - как программно определить возможно существующий ID чтобы хотябы открыть существующий класс и обратится к его существующим данным? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 08:37 |
|
получить ID
|
|||
---|---|---|---|
#18+
alex171069 Как открыть класс с помощью %openId(id) при том что id Неизвестен ? А что вообще известно про тот экземпляр класса? alex171069как программно определить возможно существующий ID ИД он кагбэ есть всегда у экземпляра... Твоя проблема пока непонятна... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 08:43 |
|
получить ID
|
|||
---|---|---|---|
#18+
Что-то не совсем поняла. Вам нужно взять первую попавшуюся id в классе и попробовать открыть экземпляр класса по id ? Ну можно как-то так: &sql(SELECT TOP 1 ID INTO :CLSID FROM my.Class) if SQLCODE=0,CLSID'="" { set Obj = ##class(my.Class).%OpenId(CLSID) if $ISOBJECT(Obj) { w "Удача"} else { w "Неудача"} } или просьба уточнить что вы конретно имели ввиду... проверить на существование id в классе так же можно с помощью %ExistsId(13213535). Вернет 1, если экземпляр с таким id найден, и 0 в обратном случае ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 08:58 |
|
получить ID
|
|||
---|---|---|---|
#18+
забыла в начале объявить переменную CLSID: set CLSID="" - в начале кода либо тут еще можно воспользоваться функцией $get(CLSID) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:02 |
|
получить ID
|
|||
---|---|---|---|
#18+
Уточняю проблему ... Есть некий класс - известно, что в нем есть данные которые надо оттуда извлечь. Для того что бы извлечь данные из класса надо знать ID ... для успешной работы метода OpenId( Вот как раз ID я и не знаю посмотрел в глобал класса - там начинается записи с ID = 126913080 И при этом начинаться он может с любой ID т.к. эти данные тестовые. Так вот и спрашиваю я "как определить ID для открытия объекта ? Иными словами говоря как выполнить метод s tick = ##class(Tickets.EBTicket).%OpenId(?) если в %OpenId(?) непонятно, что подставлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:03 |
|
получить ID
|
|||
---|---|---|---|
#18+
Да, забыл добавить без использования sql запросов.... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:12 |
|
получить ID
|
|||
---|---|---|---|
#18+
Ну выберите данные запросом. Может быть, и открывать объект не придется. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:14 |
|
получить ID
|
|||
---|---|---|---|
#18+
alex171069Да, забыл добавить без использования sql запросов.... Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:15 |
|
получить ID
|
|||
---|---|---|---|
#18+
прошу прощения, что значит команда N ID,tick ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:26 |
|
получить ID
|
|||
---|---|---|---|
#18+
Спасибо! Кажется работает. Вот только что за команда N ID, tick - немного не ясно..! Но все равно спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:37 |
|
получить ID
|
|||
---|---|---|---|
#18+
Я понимаю, что мои вопросы многим кажутся глупыми. Но я только осваиваю Cache по этому много еще не знаю... Спасибо, что ответили на мои вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:41 |
|
получить ID
|
|||
---|---|---|---|
#18+
N- new S - set I - if загляните в хелп ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:48 |
|
получить ID
|
|||
---|---|---|---|
#18+
Ох да, как же мог забыть про New() ! До сих пор не могу привыкнуть к сокращенным командам ... непривычно это несколько ... Прошу прощения ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 09:56 |
|
получить ID
|
|||
---|---|---|---|
#18+
А почему без использования запросов? Чем использование запросов хуже использования глобалов? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 10:11 |
|
получить ID
|
|||
---|---|---|---|
#18+
Еще вариант set stm=##class(%SQL.Statement).%New() ;"новый" класс запросов - с Cache 2010 и выше #; Используем тот факт, что у наследников %Persistent #; определен запрос Extent и в нем только одно поле - ID set sc=stm.%PrepareClassQuery("your.className","Extent") Quit:'sc set rs=stm.%Execute() Quit:rs.%SQLCODE'=0 for { Quit:'rs.%Next() w !, "ID: ",rs.%GetData(1) #; ID могут идти не по возрастанию #; делаем что-нить } ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 12:10 |
|
получить ID
|
|||
---|---|---|---|
#18+
alex171069без использования sql запросов.... Секта какая-то? Вера не позволяет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2012, 19:36 |
|
получить ID
|
|||
---|---|---|---|
#18+
krvsaalex171069без использования sql запросов.... Секта какая-то? Вера не позволяет? Мож институт? (в смысле студент института). Дано задание и поставлено условие: "БЕЗ SQL!!!" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 08:47 |
|
получить ID
|
|||
---|---|---|---|
#18+
alex171069Вот только что за команда N ID, tick - немного не ясно..! alex171069Ох да, как же мог забыть про New() ! alex171069, кстати, не путайте вот это New Код: sql 1.
и вот это New(). Т.к. в первом случае это команда, а во втором - это функция/метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 08:53 |
|
получить ID
|
|||
---|---|---|---|
#18+
Всем привет, случайно наткнулся на такое вот чудо [Embedded SQL]. Метод в стандартном классе Sample.Person. Переменной testID1 присвоено очень неверное значение. Cache 2014.1 (Build 603U). Такой баг вряд ли кому-нибудь помешает, но мало ли.ClassMethod Test() As %Status { set (testID1,testID2) = "" &sql(SELECT ID INTO :testID1 FROM Sample.Person WHERE ID = 'Tadadamm') w !,"testID1="_testID1_"|" &sql(SELECT ID INTO :testID2 FROM Sample.Person) w !,"testID2="_testID2_"|" quit $$$OK }Результат: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2014, 22:44 |
|
получить ID
|
|||
---|---|---|---|
#18+
SQLCODE проверяете? Если SQLCODE не равен нулю, то неважно, что оказалось в хост-переменных. Это не баг. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2014, 23:04 |
|
получить ID
|
|||
---|---|---|---|
#18+
ilsonТакой баг вряд ли кому-нибудь помешает, но мало ли.Нет здесь бага.ДокументацияIn SELECT ... INTO and DECLARE ... SELECT ... INTO statements, the output host variables in the INTO clause are modified if SQLCODE equals 0 (when a valid row is returned), and may have been modified even when SQLCODE is not 0, that is, when no new row was returned. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2014, 19:14 |
|
получить ID
|
|||
---|---|---|---|
#18+
alex171069Здравствуйте уважаемые знатоки Cache ! Созрел у меня вопрос на который я как то не нашел внятный ответ в документации и по этому вынужден обеспокоить вас .... Как открыть класс с помощью %openId(id) при том что id Неизвестен ? Вариант с %openId( -не прокатывает т.к. ID могут начинаться с 10000000456348563874653-значения... Или более корректный вопрос - как программно определить возможно существующий ID чтобы хотябы открыть существующий класс и обратится к его существующим данным? Кстати если не по ID а по свойству - есть еще прекрасные методы IndexOpen("property value") - для открытия объекта по имени. Например если ID не знаешь, а фамилию знаешь. Если есть уникальные индексы по свойствам в классе, такие методы генерируются автоматически. Пример: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2014, 13:01 |
|
|
start [/forum/topic.php?fid=39&msg=37711196&tid=1556808]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 154ms |
0 / 0 |