Страница 1 из 1

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

Добавлено: 15 Сентябрь 2020, 21:48
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

Можно ли?

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

Добавлено: 16 Сентябрь 2020, 5:27
Игорь Столяров
Как минимум: можно сделать функцию со строковым параметром и забиндить их.
Функцию поместить в фильтр BROWSE и передавать в неё строку SQL запроса, а внутри функции выполнять запрос и возвращать успех.
Только нужно понимать разницу между выборкой записей и фильтром (условием выборки) записей, которую будет делать BROWSE (VIEW).

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

Добавлено: 16 Сентябрь 2020, 9:33
kreator
Скорее всего перевод кларионовского синтаксиса в SQL происходит на уровне драйвера, поэтому вменяемых функций нет.
Варианты.
1. Разбирать строку File{prop:SQL}. Искать кляузу "where", что дальше, то фильтр. Но там могут быть ещё и спецсимволы. С ними тоже надо что-то делать.
2. Попробовать прочитать File{prop:SQLFilter}. В справке такого нет и скорее всего результат будет отрицательный.
3. Отказаться от View{prop:Filter}. Использовать сразу View{prop:SQLFilter}.