Можно ли использовать {Prop:Filter} в Prop:sql

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Можно ли использовать {Prop:Filter} в Prop:sql

Сообщение ingasoftplus »

Имею фильтр (который стоит у стандартного Брауза) и который возвращается по BRW1::View:Browse{Prop:Filter} и является обычной стандартной сторокой фильтра на кларионе (включая префиксы и имена полей), типа как это

Код: Выделить всё

'ASV:ACCOUNTSYSREF = APR:SysRef AND ASV:CompSysRef = GLO:FilterComp'
Вопрос, а можно ли это как-то использовать как фильтр в prop:sql запросе?? типа того:

Код: Выделить всё

SQLCommand{PROP:SQL} = 'select SysRef, LocAmt, ForAmt FROM dbo.MyTable WHERE ' & 
BRW1::View:Browse{Prop:Filter} <- тут???

LOOP
        NEXT(SQLCommand)
....
Предполагаю, что BRW1::View:Browse{Prop:Filter} должен быть конвертирован каким то образом в валидный код для prop:sql

Можно ли?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Можно ли использовать {Prop:Filter} в Prop:sql

Сообщение Игорь Столяров »

Как минимум: можно сделать функцию со строковым параметром и забиндить их.
Функцию поместить в фильтр BROWSE и передавать в неё строку SQL запроса, а внутри функции выполнять запрос и возвращать успех.
Только нужно понимать разницу между выборкой записей и фильтром (условием выборки) записей, которую будет делать BROWSE (VIEW).
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Можно ли использовать {Prop:Filter} в Prop:sql

Сообщение kreator »

Скорее всего перевод кларионовского синтаксиса в SQL происходит на уровне драйвера, поэтому вменяемых функций нет.
Варианты.
1. Разбирать строку File{prop:SQL}. Искать кляузу "where", что дальше, то фильтр. Но там могут быть ещё и спецсимволы. С ними тоже надо что-то делать.
2. Попробовать прочитать File{prop:SQLFilter}. В справке такого нет и скорее всего результат будет отрицательный.
3. Отказаться от View{prop:Filter}. Использовать сразу View{prop:SQLFilter}.
We are hard at work… for you. :)
Ответить