Ошибка 00904 - нет в доке

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте, уважаемое сообщество.

Обстановка: CW55F ABC, ORACLE 8.1.7

Имею таблицу:
STATIONS FILE,DRIVER('ORACLE'),OWNER('URZA/URZA@ASU.WORLD'),NAME('URZA.STATIONS'),PRE(STA),BINDABLE,CREATE,THREAD
I1 KEY(STA:COD),NOCASE,OPT,PRIMARY
I2 KEY(STA:SYS,STA:NAIMF),DUP,NOCASE,OPT
Record RECORD,PRE()
COD SHORT
SYS SHORT
NAIMF STRING(40)
NAIMS STRING(6)
END
END

Прога - проще некуда:
строю Wizard'om Browse;

Вставляю строку (в Init)
BRW1::View:Browse{PROP:SQLFILTER} = 'STATIONS.SYS = 1';

Получаю сообщение, нигде в доке не описанное
ERROR(ORA-00904: invalid column name (-904)) attempting to access a record from the URZA.STATIONS file.

Где могла порыться собака?





Написал: ALTerEgo(65)
Гость

Сообщение Гость »

Во-первых - это ошибка Oracle, и, как и написано, означает не правильное имя колонки. Clarion тут не при делах.
Во-вторых - включи трассировку (trace.exe) и посмотри текст запроса (многое станет понятнее).
И последнее - если совсем ломает самому разбираться, примени метод научного тыка. Попробуй просто написать BRW1::View:Browse{PROP:SQLFILTER} = 'SYS = 1', или BRW1::View:Browse{PROP:SQLFILTER} = 'A.SYS = 1', или
BRW1::View:Browse{PROP:SQLFILTER} = '"SYS" = 1' , или
BRW1::View:Browse{PROP:SQLFILTER} = 'URZA.STATIONS.SYS = 1';

С уважением, Алексей Каминский

Привет всем
ORA-00904: invalid column name
Cause: The column name entered is either missing or invalid.
Action: Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks.

It may not be a reserved word.

поэтому SYS, DATE, SYTEM... в именах полей не допустимы, а 904 не верное имя

Удачи...

Сергей Половинкин s.polovinkin@vaz.ru (ДИС)

Привет!

Дополню: используй External Name для этого поля.

Александр Агеев (aageev@satren.ru)

Еще дополню: в PROP:SQL и PROP:SQLFILTER тогда надо использовать именно это External Name. А во всех остальных случаях Field Name.
Что легко приводит к путаннице. Проще взять за правило: идентификаторы в запросах ставить в кавычки. Oracle к этому нормально относиться.

С уважением, Алексей Каминский
Написал: ClaList(2)
Гость

Сообщение Гость »

Большое спасибо за содействие.
Всё задышало нормально.
Написал: ALTerEgo(65)
Ответить