powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Если имя поля таблицы - зарезервированное слово...
14 сообщений из 14, страница 1 из 1
Если имя поля таблицы - зарезервированное слово...
    #32936122
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Есть проблема.
Нужно сделать кое-какие исправления в чужом софте (Delphi-Interbase), но я там обнаружил, что некоторые имена полей названы зарезервированными словами - "year", "month" и т.п., связи с чем не могу к ним обращаться напрямую - BDE (через которое настроено соединение) ругается "Token unknown".
Я опущу мнение о разработчике.... но проблему все же надо решать.
Что можно сделать?
Прога разработана в Дельфи-5 с использованием BDE и Interbase тех времен.
Возможно, есть какой-то способ обратиться к полю вроде MyTable."year", MyTable.[year] или как-то в том же духе?
Если сможете помочь, буду очень благодарен.
Спасибо!

ЗЫ: варианты переименования полей таблиц, использования альтернативных драйверов доступа к БД не подходят, ибо кода наворочено много, а исправлений нужно сделать самую малость...
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32936132
ivan1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry GurianovПривет всем!
Есть проблема.
Нужно сделать кое-какие исправления в чужом софте (Delphi-Interbase), но я там обнаружил, что некоторые имена полей названы зарезервированными словами - "year", "month" и т.п., связи с чем не могу к ним обращаться напрямую - BDE (через которое настроено соединение) ругается "Token unknown".
Я опущу мнение о разработчике.... но проблему все же надо решать.
Что можно сделать?
Прога разработана в Дельфи-5 с использованием BDE и Interbase тех времен.
Возможно, есть какой-то способ обратиться к полю вроде MyTable."year" , MyTable.[year] или как-то в том же духе?
Если сможете помочь, буду очень благодарен.
Спасибо!

ЗЫ: варианты переименования полей таблиц, использования альтернативных драйверов доступа к БД не подходят, ибо кода наворочено много, а исправлений нужно сделать самую малость...
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32936143
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы сами пробовали?

Я пробовал вариантов 10. Тот же эффект.
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32936151
ivan1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry GurianovВы сами пробовали?

пробовали

Напишите версию сервера
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32936189
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interbase 6.5, SQL Explorer 4.0 (пробую и из него)
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32937647
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Прога разработана в Дельфи-5 с использованием BDE и Interbase тех времен.
InterBase тех времен имеет версию 5.х(5.1, 5.5, 5.6)

>Interbase 6.5
Это уже почти наше время, и конструкция MyTable."year" должна в нем работать, только вот "year" и "Year" это два разных поля.
Вот здесь почитай.
-----------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32938389
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Uskov>Прога разработана в Дельфи-5 с использованием BDE и Interbase тех времен.
InterBase тех времен имеет версию 5.х(5.1, 5.5, 5.6)

>Interbase 6.5
Это уже почти наше время, и конструкция MyTable."year" должна в нем работать, только вот "year" и "Year" это два разных поля.
Вот здесь почитай.


Интересные таки мы люди. Человеку надо что-то чуть-чуть подправить в чужой задаче, так мы ему рекомендуем перейти на 3-й диалект только для того чтоб писать year в кавычках, забывая при этом, что этот самый year - последняя проблема при миграции.

2 Dmitry Gurianov. IB6.5 - это данность спущенная свыше? Тогда забудь о лёгком обходе проблемы новых ключевых слов. Из современных серверов такая возможность есть только в Yaffil, задаётся параметром конфига. Но через некоторое время возникнет проблема миграции с Yaffil ;)

2 kdv - очень невнятный текст по ссылке, вообще-то. Новые ключевые слова в 1-м диалекте IB6 и выше тоже нельзя использовать - alter column и extract есть во всех диалектах. Так что проблема не в диалекте на самом деле, а третий всего лишь позволяет взять их в кавычки и пользовать. Что, на мой взгляд, очень мало облегчает жизнь - всё равно все запросы трясти. Основная пролема междиалектной миграции - не кавычки и даже не типы, а разные результаты одних и тех же выражений с нумериками. Эта арифметика вылезает самым непредсказуемым образом, и при наличии большого количества такой арифметики в процедурах и триггерах старой задачи сводит вероятность перехода без наступания на очень болезненные грабли, даже через весьма продолжительное время якобы "успешной" работы, имхо к нулю. Опять же при прочтении текста возникает впечатление, что в третьем кавычки использовать не _можно_, а _нужно_, а потом мы с тобой говорим что от этого один гемор (и это правда).
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32938570
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я перечитаю, поправлю. и migration, и faq. однако я так и не знаю решения проблемы с столбцами YEAR и т.п. в первом диалекте. то есть, решение -то есть: не морочить голову, и оставаться на 5.6. А если переходить на 6.0 и выше, то заодно и поменять диалект. Поддержка legacy dialect в Yaffil - все-таки костыли, хотя по идее, конечно, первый диалект надо было поддерживать 100% корректно. Но что поделаешь - так Borland устроил...
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32942693
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddin Denis Uskov>Прога разработана в Дельфи-5 с использованием BDE и Interbase тех времен.
InterBase тех времен имеет версию 5.х(5.1, 5.5, 5.6)

>Interbase 6.5
Это уже почти наше время, и конструкция MyTable."year" должна в нем работать, только вот "year" и "Year" это два разных поля.
Вот здесь почитай.


Интересные таки мы люди. Человеку надо что-то чуть-чуть подправить в чужой задаче, так мы ему рекомендуем перейти на 3-й диалект только для того чтоб писать year в кавычках, забывая при этом, что этот самый year - последняя проблема при миграции.
...

Я не рекомендовал перейти на 3-й диалект, просто из постов автора не понятно каким же сервером он пользуется. Повторюсь, InterBase тех времен имеет версию 5.х, а потом автор пишет Interbase 6.5, или он опечатался(заметьте 5.6 и 6.5 достаточно похожи при написании), или все же был переход на 6.5, и не известно переводился ли диалект на 3-й. Если переводился, то та ссылка может как-то помочь в решении проблем.
kdv писал: "...однако я так и не знаю решения проблемы с столбцами YEAR и т.п. в первом диалекте."
Вот и вся песня.
Если у Вас есть решение данной проблемы, то поделитесь пож-та.
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #32943073
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какое именно решение нужно? решений много - оставаться на 5.6, или перейти на 3-ий диалект. или использовать клиента от 5.6.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Если имя поля таблицы - зарезервированное слово...
    #38460441
lynatik50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понимаю тема старая, но вдруг пригодится кому, действительно зарезервированные поля в условии where не получается использовать несмотря на все "" '' и [], но за то зарезервированные поля отлично работают в конструкции case например:

case when LICENSES."DOUBLE" = 1 and LICENSES.SYS_GUID is not null
then LICENSES.SERDOC end as "Бла бла бла",

можно пробовать так если условие нужно наложить не навесь запрос)
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #38460449
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lynatik50,

[] - в FB нет (это если только в MSSQL)
'' - для строк
да и про case с where фигня какая-то
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #38460451
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пристрелите зомби
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Если имя поля таблицы - зарезервированное слово...
    #38460458
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lynatik50вдруг пригодится комувряд ли, ибо вред.
закрыто.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Если имя поля таблицы - зарезервированное слово...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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