Здравствуйте, уважаемое сообщество.
Обстановка: 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)
Ошибка 00904 - нет в доке
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Во-первых - это ошибка 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)
Во-вторых - включи трассировку (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)