powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / К вопросу о "There are no reserved words in Cache' ObjectScript"
5 сообщений из 5, страница 1 из 1
К вопросу о "There are no reserved words in Cache' ObjectScript"
    #35692223
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8<----------------------
There are no reserved words in Cache' ObjectScript; you can use any valid identifier as a variable name, function name, or label. At the same time, it is best to avoid using identifiers that are command names, function names, or other such strings. Also, since ObjectScript code includes support for embedded SQL, it is prudent to avoid naming any function, object, variable, or other entity with an SQL reserved word, as this may cause difficulties elsewhere.
8<----------------------

В зарезервированных словах SQL нет "TYPE". Однако каше нервно относится к ситуации, когда так названо свойство. Т.е. оно работает, конечно... Но ровно до тех пор, пока не напишешь метод, который рекурсивно перебирает объекты. Знаю, что "Name" нельзя использовать... хотя его тоже нет в "исключениях"...

Коллеги, а как вы решаете эту проблему?
Вроде есть 3 варианта:
- составить список исключений (раз уж ИС об этом не позаботилось...)
- установить каше с юникодом и обзывать все по-русски (думаю, суровый способ...)
- обзывать свойства и т.п. невменяемо, типа "Teep", "Nazvaniye", "Peremennaya" etc... (тоже сурово)

Ни у кого нет списка, а?
...
Рейтинг: 0 / 0
К вопросу о "There are no reserved words in Cache' ObjectScript"
    #35692277
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovЗнаю, что "Name" нельзя использовать...
Опаньки! А я такое свойство частенько создаю... И чего сним будет потом нетак?

Насчет Type - пишу Typ. Вроде проблем не имел...
...
Рейтинг: 0 / 0
К вопросу о "There are no reserved words in Cache' ObjectScript"
    #35692368
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To kolesov

Посмотрите документацию на метод $system.SQL.IsReservedWord .
Если все-таки надо использовать зарезервированное слово в качестве поля, то можно его обрамить в двойные кавычки, например:
Код: plaintext
select "select","from","a  a  a" from test.current_date
При этом надо не забыть, если у Вас версия Caché ниже 5.1, включить в Редакторе конфигурации параметр:
Код: plaintext
"Поддерживать идентификаторы в ограничителях" / "Support Delimited Identifiers"
...
Рейтинг: 0 / 0
К вопросу о "There are no reserved words in Cache' ObjectScript"
    #35692535
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov8<----------------------
There are no reserved words in Cache' ObjectScript; you can use any valid identifier as a variable name, function name, or label. At the same time, it is best to avoid using identifiers that are command names, function names, or other such strings. Also, since ObjectScript code includes support for embedded SQL, it is prudent to avoid naming any function, object, variable, or other entity with an SQL reserved word, as this may cause difficulties elsewhere.
8<----------------------

В зарезервированных словах SQL нет "TYPE". Однако каше нервно относится к ситуации, когда так названо свойство. Т.е. оно работает, конечно... Но ровно до тех пор, пока не напишешь метод, который рекурсивно перебирает объекты. Знаю, что "Name" нельзя использовать... хотя его тоже нет в "исключениях"...

Коллеги, а как вы решаете эту проблему?
Вроде есть 3 варианта:
- составить список исключений (раз уж ИС об этом не позаботилось...)
- установить каше с юникодом и обзывать все по-русски (думаю, суровый способ...)
- обзывать свойства и т.п. невменяемо, типа "Teep", "Nazvaniye", "Peremennaya" etc... (тоже сурово)

Ни у кого нет списка, а?
Можно поподробней. Что за задача такая и что за перебор рекурсивный?
Мы тоже используем наименование свойств: name, type и т.д. И где это может нам встать боком хотелось бы знать заранее.
...
Рейтинг: 0 / 0
К вопросу о "There are no reserved words in Cache' ObjectScript"
    #35695128
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=Dimon=,

Дело в том, что у меня две иерархии (грубо - типы и наименования), унаследованные от единой иерархии "Элемент названия". и у экземпляров типа "Наименование" есть ссылка на тип (тот самый). Тип может не напрямую указан в наименовании, а указан в вышележащем наименовании и т.п.

Вот такая рекурсия для того, чтобы получить тип у названия:
Method GetType() As Type
{
q:$ISOBJECT(..Type) ..Type
q:$ISOBJECT(..PartOf) ..PartOf.GetType()
q $$$NULLOREF
}


На самом верхнем классе (общем для обеих иерархий интерфейсе), есть расчетное поле, которое представляет название исходя из того, в каком месте оно находится, и на какой тип ссылается оно или одно из вышележащих названий. В итоге получается текст типа "Пшеница твердая", "Бульдозер", "Легковой автомобиль Тойота Марк2" и т.п.
Вот в методе, который расчитывает название и происходят траблы... Вплоть до того, что перестает нормально компиляться даже то, что 2 минуты назад работало...
В вот таком месте:

if ($ISOBJECT(Element.GetType())) {
s ret = Element.GetType().blablabla_" "_blablabla
}

Если с этим кодом скомпилять, то объекты класса, в котором этот код, перестают открываться вообще.
Удалив этот код можно добиться успеха, только если удалить весь метод, в котором этот код вызван.
Перекомпиляв, а потом снова создав метод, но уже без этой вставки... тогда только заработает...

С исходниками сложно...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / К вопросу о "There are no reserved words in Cache' ObjectScript"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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