powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / точечный синтаксис. помогите советом
8 сообщений из 8, страница 1 из 1
точечный синтаксис. помогите советом
    #35463614
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется два одинаковых класса
Class test.CLS1 Extends %Persistent
{
Property A As %String;
Property B As%String;
Property C As %String;
Property D As%String;
}
Class test.CLS2 Extends %Persistent
{
Property A As %String;
Property B As%String;
Property C As %String;
Property D As%String;
}
Задача: обновить поля класса test.CLS1 полями класса test.CLS2 (поля по списку: A,C,D)
пытаюсь сделать так:

/// ID1 - ID класса test.CLS1
/// ID2 - ID классаtest.CLS2
/// ListFields - список полей для обновления (поля по списку: A,C,D)

ClassMethod UpdateTour(ID1 As %Integer,ID2 As %Integer, ByRef ListFields As %String) As %Status
{
s status = $$$OK
s objBT = ##class(test.CLS1).OpenId(ID1)
s objNT = ##class(test.CLS2).%OpenId(ID2)
if (objBT="")||(objNT="") q 0
if $l(ListFields,",")>1 {
f i=1:1:$l(ListFields,",") {
s command = "s objBT."_$p(ListFields,",",i)_" = objNT."_$p(ListFields,",",i)
w !,command
x command
}
s status = objBT.%Save()
q:$$$ISERR(status) status
}
q $$$OK
}

Выдает ошибку:
s objBT.A = objNT.A
^
<UNDEFINED>zUpdateTour+16^test.CLS1 *objBT

Вопрос: как сделать чтоб такой синтаксис работал? возможно ли вообще это?
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35463746
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас рабочий пример?
Код: plaintext
1.
2.
3.
...
s objBT = ##class(test.CLS1).OpenId(ID1) ;???
...

Советую обратить внимание на:
Using the Cache $ZOBJxxx Intrinsic Functions
zobj команды и $zobj функции
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35463857
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В вашем примере что бы срабатывал XECUTE нужно сделать objBT и objNT public переменными -
в описании класса добавить [ PublicList = (objBT, objNT) ]
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35464687
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или убрать процедуреблок. Никак не привыкну к этому...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35464765
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуреблок - это хорошо.

А вот то, что на execute создается новый контекст переменных, где старые не видны, это не ошибка каше?
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35464806
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в каше 2008 странно эту проблему решили,
там execute работает, но переменные, задействованные в нем становятся видны глобально

Код: plaintext
1.
2.
3.
4.
test()
{ s x= 10 
  x "s x=20"
  s y= 30   
}

получается вот что
Код: plaintext
1.
2.
USER>k  d ^test() w
 
x= 20 

PS. ну а делать я бы стал как посоветовал servit :-)
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35464863
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Процедуреблок - это хорошо.
Не по МСМовски это как-то. От того и путаница как у автора получается...
...
Рейтинг: 0 / 0
точечный синтаксис. помогите советом
    #35466064
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!

сделал следующим образом

f i=1:1:$l(ListFields,",") {
s $ZOBJPROPERTY(objBT,$p(ListFields,",",i)) = $ZOBJPROPERTY(objNT,$p(ListFields,",",i))
}

заработало на ура
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / точечный синтаксис. помогите советом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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