Browse отобрать записи (Mysql)

CWICWEB, ClarioNET и пр.

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

Browse отобрать записи (Mysql)

Сообщение gopstop2007 » 18 Ноябрь 2018, 13:49

Как правильно в стандартный Browse отфильтровать (отобрать) записи на удаленном сервере (Mysql), чтобы Browse получал уже отобранные записи с сервера.
Условие фильтра не постоянны.
Если раньше обсуждалось, киньте ссылку пожалуйста.
Спасибо за внимание и помощь.

С10 ABC
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Browse отобрать записи (Mysql)

Сообщение kreator » 18 Ноябрь 2018, 15:23

В методе ApplyFilter после Parent Call я пишу:

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

BRW1::View:Browse{prop:SQLFilter} = 'a.dat_uv is not null'
 
Если в Actions уже есть условия фильтрации, то:

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

BRW1::View:Browse{prop:SQLFilter} = '+a.dat_uv is not null'
 
We are hard at work… for you. :)

gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

Browse отобрать записи (Mysql)

Сообщение gopstop2007 » 19 Ноябрь 2018, 11:22

kreator писал(а):
18 Ноябрь 2018, 15:23
В методе ApplyFilter после Parent Call я пишу:

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

BRW1::View:Browse{prop:SQLFilter} = 'a.dat_uv is not null'
 
Если в Actions уже есть условия фильтрации, то:
Спасибо kreator
У меня в Action пусто, если нет в Action Filter или Range Limit Field значений, вообще не фильтрует, загружает все имеющиеся записи.
kreator писал(а):
18 Ноябрь 2018, 15:23

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

BRW1::View:Browse{prop:SQLFilter} = '+a.dat_uv is not null'
 
Достаточно добавить значение для фильтрации в Action Filter или Range Limit Field все работает, но очень медленно, на 30 записей 3-5 сек, без фильтра меньше 1 сек на все записи. Всего 40 записей в базе.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Browse отобрать записи (Mysql)

Сообщение kreator » 19 Ноябрь 2018, 13:31

gopstop2007 писал(а):
19 Ноябрь 2018, 11:22
Достаточно добавить значение для фильтрации в Action Filter или Range Limit Field все работает, но очень медленно, на 30 записей 3-5 сек, без фильтра меньше 1 сек на все записи. Всего 40 записей в базе.
Это не понятно. Кларион сам формирует запрос, если что-то написано в Action Filter или Range Limit Field. Результат (какой запрос посылается серверу) можно по-простому посмотреть в методе ResetQueue после Parent Call, набрав:

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

stop(MyTable{prop:SQL})
, где MyTable первая таблица в броузе. И просто надо убедиться, что запросы получаются одинаковыми (когда сам делаешь и когда Кларион на автомате формирует). Если запросы одинаковые посылаются серверу, а время разное, то где-то что-то не так. В этом случае надо дальше разбираться. Может (чисто гипотетически) в Reset-полях много переменных и метод ResetQueue вызывается много раз.
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Browse отобрать записи (Mysql)

Сообщение Yufil » 19 Ноябрь 2018, 15:06

Надо посмотреть трассировку, что там реально происходит. Возможно, в embed есть ещё какие-то необдуманные вставки или на сервере возникает ошибка...

Ответить