powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Способ хранения для класса
20 сообщений из 45, страница 2 из 2
Способ хранения для класса
    #36779064
X_Shooter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaservitтакой вариант задания схемы возможен только в "ручном" режиме
Спасибо, буду знать! Пока только с "интерфейсом" имел дело...

Кстати, с использованием интерфейса это тоже можно. Если не выбирать в выпадающем списке имя нужного свойства, а писать руками, например Adr.Street. А в поле для задания индекса глобала можно писать прямо: "Adr","Street" одной строкой, тогда получается как раз то, что показал servit.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779114
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X_ShooterКстати, с использованием интерфейса это тоже можно. Если не выбирать в выпадающем списке имя нужного свойства, а писать руками
Ясно, учту...
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779339
X_Shooter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X_Shooterservit,

Спасибо, теперь все вышло. А я то пытался сделать это в описании самого класса Address...
А нет, не вышло...
servit, у Вас класс нормально компилится?
Просто у меня компилятор ругается.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779523
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X_Shooter,

Компилируется без ошибок и данные сохраняются как задумано (Caché 2010.2.FT5).
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779753
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X_Shooter[quot X_Shooter]
Просто у меня компилятор ругается.
наверное, на имя свойства с точкой
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779849
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X_Shooter,

Проверил в Caché 5.0.21 - компилируется без ошибок и сохраняет данные согласно Вашим требованиям.

PS: не используйте мастер.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779924
X_Shooter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

У меня стояла Cache 2008.1.0, там делал через местер и выскакивала ошибка.
Только что скачал Cache 2010.1.3. Сделал в ней то же самое через мастер - ошибки нет...
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36779930
X_Shooter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правда при компиляции автоматически создается узел PersonDefaultData и туда помещается Adr:
<Data name="PersonDefaultData">
<Value name="1">
<Value>Adr</Value>
</Value>
</Data>

и никак его не уберешь...
...
Рейтинг: 0 / 0
Способ хранения для класса
    #36780438
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X_Shooterи никак его не уберешь...
Так ведь это свойствоесть в классе... Надо же его куда-то девать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Способ хранения для класса
    #37384679
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-нибудь сталкивался - у меня в Storage прописалось расчетное свойство (причем только одно из нескольких)?
я думала это только для хранимых свойств? наткнулась случайно: расчетное свойство было создано, когда мы еще были на 2009 версии каше..сейчас 2010, а так не замечала чтобы расчетные св-ва прописывались в структуру хранения...
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37384789
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Есть тип вычисляемых полей, которые хранятся в БД: Two Types of Computed SQL Fields
Скорее всего у Вас используется именно такой (Triggered computed) тип поля или на момент первой компиляции класса это поле было невычисляемым, поэтому и осталось в схеме хранения.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37386186
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit ,

вычисляемое свойство самое обычное, по системе контроля верий проверила - свойство изначально было добавлено как вычисляемое, т.е. ранее оно не было хранимым


В урезанном варианте:

Property Category As cls.MyClass [ Calculated, SqlComputeCode = {
s {Category}=##class(cls.MyClass).GetCategory({ID})
}, SqlComputed ];
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37386535
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Создал и скомпилировал следующий класс:

Class User.Test Extends %Persistent
{
Property name As %String(MAXLEN = 2000);
Property rowCount As %Integer;
Property Category As User.Test [ Calculated, SqlComputeCode = {s {Category}=##class(User.Test).%OpenId({ID})}, SqlComputed ];
}

Потом проверил схему хранения на наличие свойства Category для разных версий Caché:
5.0.21 - отсутствует ;

2009.1.1 - отсутствует ;

2011.2.0 - отсутствует ;

Если у Вас есть подозрение на баг конкретной версии СУБД, то проверить можно просто:
сделайте резервную копию класса, удалите схему хранения и перекомпилируйте класс заново.

PS: проверьте, есть ли данные в глобале в позиции вычисляемого свойства согласно схеме хранения.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388205
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аленочка,
может быть свойство Category прописано в абстрактном суперклассе и наследуется?
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388258
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuАленочка,
может быть свойство Category прописано в абстрактном суперклассе и наследуется?
нет не наследуется. свойство уникально в рамках одного класса
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388276
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit
Если у Вас есть подозрение на баг конкретной версии СУБД, то проверить можно просто:
сделайте резервную копию класса, удалите схему хранения и перекомпилируйте класс заново.
сделала копию класса, пересла полностью свое вычисляемое св-во в том же виде + 1 хранимое дя теста
в структуре хранения все ок! прям загадка века какая-то ;) возможности проделать то же самое в 2009 версии уже нет..к сожалению..

по поводу просмотра данных в глобалах - как правильно задать маску для выборки в портале управления, если класс у меня наследуется ? предок класс - doc.Line (глобал один ^doc.LineD), мой конечный класс с вычисляемым св-вом предположим называется doc.aa.bb.Line
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388326
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочкав структуре хранения все ок! прям загадка века какая-тоКак я писал выше, такое бывает, когда разработчики "временно" меняют что-то в классе. Например, можно добавить свойство в класс, скомпилировать его, удалить это свойство и снова скомпилировать класс. В схеме хранения останется фантом. Кто-то потом может долго гадать откуда он взялся.
Аленочкавозможности проделать то же самое в 2009 версии уже нет..к сожалению..Уверен, что ситуация не изменилась бы. См. мой предыдущий пост.
Аленочкапо поводу просмотра данных в глобалах - как правильно задать маску для выборки в портале управления, если класс у меня наследуется ?Можно поступить проще: сделать временно вычисляемое поле обычным хранимым и потом выполнить простой SQL запрос:
Код: plaintext
select Category from table where Category is not null
.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388364
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit
В схеме хранения останется фантом. Кто-то потом может долго гадать откуда он взялся.

да, похоже что так и есть.
а если я хочу удалить этот "фантом" из структуры хранения - стоит ли мне это делать? порядковый номер этого св-ва = 6, после него идут другие св-ва по порядку 7,8 и т.д. я так понимаю с удалением чего-то из структуры хранения в Каше есть свои тонкости..?

ну и тогда уже по ходу задам вопрос: если я хочу избавиться от некого хранимого св-ва которое года 2 назад мне было нужным, а сейчас нужным быть перестало (собственно как и данные которые оно хранит), какие есть способы быстро и безболезненно от него избавиться ? т.е. "грохнуть" и свойство в классе и хранимые в глобале данные
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388417
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Если данных ещё нет, то можно безболезненно удалить поле из схемы хранения, сдвинув остальные поля.
Если данные уже есть, то лучше поле не удалять, а обнулить, то есть:
вместо
^global(ID)=$LB(%%CLASSNAME,field1,Category,field3)
должно получиться
^global(ID)=$LB(%%CLASSNAME,field1,,field3)

Но перед этим нужно не забыть обнулить поле либо через запрос, либо программно:
update my.Class set Category=null

Потом вновь создаваемые поля в схеме хранения можно помещать на место таких пустот.
...
Рейтинг: 0 / 0
Способ хранения для класса
    #37388438
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше систему хранения не трогать.
Если есть старые данные, их можно обнулить, а в целом, влиянием дырки на размер хранения и быстродействие можно пренебречь.
Если данных нет совсем, проще структуру хранения совсем грохнуть, она пересоздастся.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Способ хранения для класса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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