ODBC – ошибка вызова. (Ошибка 3146) Access97 + PostgreSQL

assa
Дата: 07.10.2003 14:09:03
ODBC – ошибка вызова. (Ошибка 3146)

Никто не сталкивался?
При переходе в уже открытой прилинкованной таблице по записям (обычно - в конец набора).

Если открывать как статический набор - проблемы нет.

сервер - PostgreSQL.

Причем все неприятности - в одной табличке. В других пока все в порядке. А тут еще интерфейс вроде как надо лабать. Вот и думай, как.
assa
Дата: 14.10.2003 16:13:10
Проблема, как выяснилось, в настройках драйвера ODBC (Insight)
CX=1a8303ab; - ошибка
CX=1a540ab; - вроде пока не случалось

В окне настроек драйвера это флажки:
KSQO(Keset Query Optimization) - отключить (включен по дефолту)
Dizable Genetic Optimizer - отключить (т.е. включить оптимайзер, отключенный по дефолту)

В логе ODBC ошибка проявляется выводом вместо имени поля имени некоей переменной
например:
Select .... "name",'#S_C_H#'    ,"search_name", ...

вместо
Select .... "name","description","search_name", ...

И соответствующим сообщением:
STATEMENT ERROR: func=SC_execute, desc='', errnum=7, errmsg='Error while executing the query'

ошибка возникает только на динамическом обновляемом наборе (гриде) аксеса (например - в режиме просмотра прилинкованной таблицы), причем обычно при скролинге по записям. Поле, для которого имеет место ошибка имеет тип text. (Вероятно это связано не с типом text PostgreSQL, но с типом MEMO, с каковым оно распознается аксесом, и с каковым могут распознаваться и поля varchar с длиной > 254. Пока не проверял).
Niemi
Дата: 15.10.2003 16:36:01
2assa
спасибки, я немного не решился сказать, но предпологал, что несовместимость типов данных. Да и Access97 тоже давно не видел.
assa
Дата: 15.10.2003 19:20:51
Ошибка с тем же успехом (и гораздо быстрее) проявляется в Акс2000. А именно уже при открытии таблицы с изрядным числом записей. В таблицах с малым количеством записей может проявиться не сразу. Скорее всего дело не в несовместимости типов, а в процедуре составленя строки SQL запросов _в моменты синхронизации_ (при скролинге в 97) наборов данных. Именно в этот момент вместо "нормального" имени поля в SQL строке в лог-файле и появляются "?имена переменных?". И следом - ошибка. Поскольку выскакивание ошибок зависит (в таблицах с небольшим количеством записей) от черт-знает-чего (открытие других окон и т.п.), то не думаю, что ошибка легко отлавливаема. Без скролинга (т.е. если набор данных открывать програмно и не передавать в форму, никаких ошибок не наблюдается). Если набор данных открывать как "статический" - тоже никаких ошибок. (я так понимаю, что при этом не задействуются "динамические курсоры" или что у них там, во внутрях :0)
Фесенко Олег
Дата: 12.10.2010 09:47:34
Отличная идея выполнять трассировку при непонятных ODBC ошибках. Лично мне помогло, спустя много лет )))