Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / внешние БД - связывание таблиц - вычисляемые поля не работают / 6 сообщений из 6, страница 1 из 1
05.12.2013, 21:04
    #38491037
rstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
Cache 2010.

Сделал связку внешней БД через ODBC с помощью Мастера связывания таблицы.
Данные нормально читаются.

Попробовал добавить вычисляемое поле с простейшим кодом.
1. Первый вариант
Property Bus As %String(CAPTION = "Автобус") [ SqlComputeCode = { s {Bus}="" }, SqlComputed, Transient ];

2. Второй, когда по первому была ошибка
Property Bus As %String(EXTERNALSQLNAME = "Bus",CAPTION = "Автобус") [ SqlComputeCode = { s {Bus}="" }, SqlComputed, Transient ];

Компиляция проходит нормально.

Запрос с теми полями, что создал мастер, работает нормально.
select top (1) Latitude,Longitude,UniqueID from dbo.Nav

Но при SQL запросе с добавлением нового поля
select top (1) Latitude,Longitude,UniqueID,Bus from dbo.Nav

выдается ошибка:
ERROR #5821: Cannot instantiate query: 'SQLCODE = -400, %msg = SQLState: (42S22) NativeError: [207] Message: [Microsoft][ODBC SQL Server Driver]

Кто-нибудь сталкивался?
...
Рейтинг: 0 / 0
05.12.2013, 21:18
    #38491044
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
rstr,

У вас ошибка возникает на стороне внешней СУБД, и видимо это MSSQL, попробуйте подключиться каким нибудь ODBC клиентом и выполнить подобный запрос.
...
Рейтинг: 0 / 0
05.12.2013, 22:07
    #38491070
rstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
DAiMor, Мне совершенно ясно, что внешним SQL клиентом я не увижу это поле.
Но хотелось бы его видеть внутри Cache.
...
Рейтинг: 0 / 0
05.12.2013, 22:35
    #38491090
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
rstrDAiMor, Мне совершенно ясно, что внешним SQL клиентом я не увижу это поле.
Но хотелось бы его видеть внутри Cache.а ошибка одинаковая на обоих вариантах ?
...
Рейтинг: 0 / 0
06.12.2013, 13:20
    #38491655
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
rstr,

таблицы (объекты), которые вы отображаете через шлюз, могут позволить делать с ними только то, что умеет "другая СУБД".
На стороне Cache' это лишь имитация таблиц, что-то вроде view.
Т.е., если вы хотите добавить поле, вы должны сделать это на стороне "другой СУБД".

Лет 10 назад, когда приходилось активно работать через шлюз, сразу для себя решил, что буду взаимодействовать только на низком уровне, через объект %Library.SQLGatewayConnection. Работа с ним принципиально не отличается с работой через %Library.ResultSet, и позволяет избежать "лукавства" отображения таблиц. Оказалось, это был правильный выбор: код работает до сих пор, пережив уже несколько версий Cache'.
...
Рейтинг: 0 / 0
06.12.2013, 13:44
    #38491717
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
внешние БД - связывание таблиц - вычисляемые поля не работают
rstrDAiMor, Мне совершенно ясно, что внешним SQL клиентом я не увижу это поле.
Но хотелось бы его видеть внутри Cache.Плюшки от Caché, которые здесь упоминаются, относятся исключительно к объектному доступу. Вы не можете их использовать в SQL, так как он идёт на обработку внешней СУБД.
Если нужна всё-таки поддержка SQL, то см. совет Alexey Maslov выше.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / внешние БД - связывание таблиц - вычисляемые поля не работают / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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