powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и set filter
44 сообщений из 44, показаны все 2 страниц
Grid и set filter
    #32785999
Bege22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла такая проблема
Программка на VFP6 работает с БД на dbfах. В формочке для редактирования данных есть грид, для просмотра и редактирования выборок ставится фильтр. Вообщем-то все работает, но в табличке 600 тыс записей и, после установки фильтра и просмотра данных в гриде (особенно если прокруткой грида пользуешься) программа просто виснет намертво.
Подскажите, пожалуйста, как с этим бороться ?
...
Рейтинг: 0 / 0
Grid и set filter
    #32786072
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы на вашем месте выбрал всё в курсор и присоеденил к гриду
...
Рейтинг: 0 / 0
Grid и set filter
    #32786094
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafЯ бы на вашем месте выбрал всё в курсор и присоеденил к гриду
А как тогда редактировать данные?
Вообще-то, пробовали уже через View, но пользователей не устраивает время открытия формы - с Viewшкой открывается больше минут :(
...
Рейтинг: 0 / 0
Grid и set filter
    #32786116
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
однозначно при таком количестке записей нужно пользоваться SELECT INTO CURSOR - будет гораздо быстрее
...
Рейтинг: 0 / 0
Grid и set filter
    #32786134
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Sheffоднозначно при таком количестке записей нужно пользоваться SELECT INTO CURSOR - будет гораздо быстрее
Это вместо фильтра ? или вообще?
...
Рейтинг: 0 / 0
Grid и set filter
    #32786184
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вместо фильтра.
Код: plaintext
1.
2.
SELECT <fields...> FROM <table> INTO CURSOR <name of cursor> HAVING <filter condition>
This.Form.MyGrid.RecordSource = "<name of cursor>"
тогда в курсоре бутуд только удовлетворяючие условие записи - соответственно, их будет гораздо меньше, и работать будет все быстрее.
А исправлять, выбираеш запись в курсоре (надеють там есть какой-то кот уникальный), затем что-то типа
Код: plaintext
1.
Replace <original table.field> WITH <то что исправил> FOR <код записи>
...
Рейтинг: 0 / 0
Grid и set filter
    #32786245
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Попробую.
Но проблема все-таки не столько в скорости, сколько , как мне кажется, стандартный грид не в состоянии нормально показать таблицу после фильтра.
Трудно это объяснить "на пальцах". Но когда фильтры ставишь в оболочке Фокса никаких проблем нет. Когда на форме в гриде - виснет при переходе по записям. Особенно если скроллинг грида покрутить.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786257
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Alex Sheff]вместо фильтра.
Код: plaintext
1.
2.
SELECT <fields...> FROM <table> INTO CURSOR <name of cursor> HAVING <filter condition>
This.Form.MyGrid.RecordSource = "<name of cursor>"

Это скорее всего работу не ускорит, т.к. сначала все записи закачаются в курсор, а потом еще одна выборка по HAVING в тот же курсор.

Лучше создать представление с параметрами фильтрации, привязать его к грид и вперед. И апдейтиться через него проще, без REPLACE.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786303
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to AlexMed
а если использовать не Having a Where
...
Рейтинг: 0 / 0
Grid и set filter
    #32786312
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно WHERE, но думаю что через VIEW половчее будет работать, все равно когда никогда с этим придется разбираться.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786339
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эт точно, но мне SELECT больше нравится (или просто с VIEW лень разбираться), да и в этом же форуме читал что VIEW - тотже SELECT только интерфейсом
...
Рейтинг: 0 / 0
Grid и set filter
    #32786441
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же в основе своей это SELECT, но в представлении можно сразу задать параметры для отбора, установит ключевые и обновляемые поля при сохранении изменений, преобразование данных при запросе с удаленных источников данных, надписи для заголовков колонок и т.п. Потом VIEW кидаешь на форму и готов GRID в котором, например, не надо править заголовки столбцов. Правда в FOXе если количество таблиц в представлении больше двух, то представление надо писать руками через CREATE VIEW, построитель тут не помощник.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786467
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как тогда редактировать данные?
select ... into cursor readwrite
в другую форму а при закрытии анализ сделанных изменений
кстати редактировать данные напрямую не есть хорошо
...
Рейтинг: 0 / 0
Grid и set filter
    #32786486
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, leaf!

Кому вопрос?

PS Кто знает, можно ли смотреть форум по веткам вопросов или здесь такого нет.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786498
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedМожно WHERE, но думаю что через VIEW половчее будет работать, все равно когда никогда с этим придется разбираться.
Это вы просто не пробовали представление с таблицы в 600тыс записей создавать. Даже просто View открыть около 2х минут.
Это нервы надо железные иметь, чтоб дождаться открытия формы с таким view.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786511
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2алекс
вопрос автор задал
...
Рейтинг: 0 / 0
Grid и set filter
    #32786542
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leaf А как тогда редактировать данные?
select ... into cursor readwrite
в другую форму а при закрытии анализ сделанных изменений
кстати редактировать данные напрямую не есть хорошо
Таблица буферизована, так что можно откатить изменения, сохранить если все нормально и все такое. А фильтр используется для массовых изменений, да и просто оператору удобно - видит только информацию по выбранным условиям.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786569
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Bege

Все конечно зависит от объема и структуры данных.
И такой большой базы под рукой нет.
Создал базейку из двух полей, залил 120000 записей, создал параметризированное VIEW, время открытия 3,295 сек.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786610
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e AleksMedВсе конечно зависит от объема и структуры данных.
И такой большой базы под рукой нет.Создал базейку из двух полей, залил 120000 записей, создал параметризированное VIEW, время открытия 3,295 сек.
Это точно! Но у меня - 24 поля(от 7 до 60 симв) и 600тыс записей (каждый день прибавляется 500-600 записей , монстр , однако :)), и никак не меньше 1.5 минут представление открывается.
...
Рейтинг: 0 / 0
Grid и set filter
    #32786627
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Bege

И что все 600000 заливаешь во VIEW?
...
Рейтинг: 0 / 0
Grid и set filter
    #32786647
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedИ что все 600000 заливаешь во VIEW?
Не все. 150 тыс, может чуть больше.
Это имеет значение?
...
Рейтинг: 0 / 0
Grid и set filter
    #32786818
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я слабо себе представляю, что делает пользователь со 150 тысячами записей, но увеличив базу до 26 полей, в основном это C(10), и делая выборку с параметрами по двум полям, типа LIKE '%J%' и LIKE '%K%', получил <25 сек.
...
Рейтинг: 0 / 0
Grid и set filter
    #32787338
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за советы!
Обошлось все буквально парой строк - замена установки фильтра на создание вьюшки, ну и заменой рекордсурса грида в форме на эту вьюшку.
Но, все-таки, что-то не то с гридом.
...
Рейтинг: 0 / 0
Grid и set filter
    #32788060
akrisiun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Apply SET ORDER and SET KEY
Код: plaintext
1.
2.
3.
4.
SELECT Orders 
SET ORDER TO TAG Date 

SET KEY TO RANGE  2004 - 10 - 01 ,  2004 - 10 - 30 

much more speed than SET FILTER and no need local cursor view :)
...
Рейтинг: 0 / 0
Grid и set filter
    #32788090
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Bege!

Ты в упор не прислушиваешься к вопросу ЗАЧЕМ пользователю 150000 записей!
Сделай ему удобную форму задания параметров, продумай ЧТО он обычно ищет и
КАК - сократи объём выборки до 100 ну максимум до 1000 записей (ессно
используя параметризованный View). Потом добавь индексы по полям, входящим в
условия отбора (отбираем по дате - делай индекс по дате, отбираем по
какому-то коду, возможно связанному с другой таблицей - делай индекс по
коду). И будет тебе счастье, будет заполнятся курсор за < 1 секунду! И все
будут просто счастливы!

А Grid+Filter и Grid+Relation медленная и мучительная смерть :(

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Grid и set filter
    #32788777
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KorolyovТы в упор не прислушиваешься к вопросу ЗАЧЕМ пользователю 150000 записей!Сделай ему удобную форму задания параметров, продумай ЧТО он обычно ищет и КАК - сократи объём выборки до 100 ну максимум до 1000 записей (ессно используя параметризованный View). Потом добавь индексы по полям, входящим в условия отбора (отбираем по дате - делай индекс по дате, отбираем по какому-то коду, возможно связанному с другой таблицей - делай индекс по коду). И будет тебе счастье, будет заполнятся курсор за < 1 секунду! И все будут просто счастливы!
А Grid+Filter и Grid+Relation медленная и мучительная смерть :(
Вообще-то, пользователь хочет видеть все 650тыс записей, и по ним делать выборки , которые можно редактировать, но поскольку такие проблемы с гридом и фильтром, была идея поделить информацию по годам , что ли . Отсюда и 150тыс записей. Но это была плохая идея.
Пока пробую выборки делать во View, и менять датасурс грида с самой таблицы на local view.
Идеально было бы воспользоваться советом acrisuin'a , насчет set key . Индекс для выборки создать можно, а вот как использовать Set key range для выборки с разными типами полей непонятно. Точнее в текстовом виде некорректно как-то обрабатываются поля с датами.
Или , если index по полям dtoc(data1) + region , то
set key range '01.04.2004'+'Советский', '01.05.2004'+'Советский'
выбирает информацию за 01.04.2004,01.05.2001, 01.05.2002,01.05.2003,01.05.2004 и не обращает никакого внимания на значение поля region. Или я что-то неправильно делаю??
...
Рейтинг: 0 / 0
Grid и set filter
    #32788883
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не лучше в схеме Информация->Параметры отбора->Выборка->Корректировка->Сохранение, поменять местами 1 и 2 этап?
В DE формы помещается VIEW со свойством NoDataOnLoad=.T., а на форме контролы, с помощью которых формируются параметры отбора, после ввода параметров клик по кнопке "Отобрат/Обновить", REQUERY для VIEW и далее по схеме.
...
Рейтинг: 0 / 0
Grid и set filter
    #32788987
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AleksMed
Нельзя, потому что это будет уже совсем другая форма :)
Собственно, задача стоит продержаться до появления новой программы.
Поэтому,радикально переделывать процесс, и переучивать пользователей не хочется.
Сейчас нужно : показать пользователю все записи что у него есть.
А пользователь затем либо просматривает\редактирует(с возможностью отката изменений), либо делает выборку, просматривает ее и потом редактирует ее (раньше использовался фильтр), либо делает выборку для отчета(просто курсор).
А сразу заставлять выбирать условие нам не подходит. Может пользователь просто полистать информацию за год-два хочет, а представление с нашей информации только открываться пару минут будет.
...
Рейтинг: 0 / 0
Grid и set filter
    #32789107
Трехсотый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bege
А сразу заставлять выбирать условие нам не подходит. Может пользователь просто полистать информацию за год-два хочет, а представление с нашей информации только открываться пару минут будет.

А если это будет начальный период дат например с .... по .... за 9мес., и открываться грид будет очень быстро.

А если поковыряться , то можно присобачить на меню по правой кнопке мыши готовые периоды дат (например по 9мес), и будет для пользователя илюзия просмотра всей базы периода.

И переучивать никого не надо :)
...
Рейтинг: 0 / 0
Grid и set filter
    #32789306
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Трехсотый
Дело не в периоде. Просто открыть форму , посмотреть и поредактировать - нет проблем, ни со временем открытия, ни с чем либо другим. 4 года так работают, и вполне довольны :) Проблема в гриде. При больших объемах данных он не в состоянии показать нормально отфильтрованные данные(выборка делается по значениям от 1го до 6 полей таблицы, одно из которых - дата).Вот и приходится выкручиваться :)
Может кто подскажет, как все-таки пользоваться set key range , если индекс по нескольким полям. Лучше с примером.
...
Рейтинг: 0 / 0
Grid и set filter
    #32789367
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, для начала, если ты хочешь упорядочивать выборку по составному ключу с датой, то дату надо преобразовать к виду "ГГГГММДД". Специально для этого есть такая функция

DTOS()

На конце латинская "S". Не надо путать ее с функцией DTOC(). Это не одно и то же.

И потом, рассмотри такой вариант как во вложении. Т.е. пользователю изначально открывается пустая формочка (пустой список). Он задает критерии и отображает нужный список.
...
Рейтинг: 0 / 0
Grid и set filter
    #32789578
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ
Спасибо за подсказку dtos() :)
Но как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region).
Устанавливать
set key to range '20040101'+'Советский','20040131'+'Cоветский'
по дате нормально, а на район - ноль внимания.
Как правильно?
...
Рейтинг: 0 / 0
Grid и set filter
    #32789999
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае правильно перестроить индекс сначала по району, а потом по дате.
...
Рейтинг: 0 / 0
Grid и set filter
    #32790002
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только учесть, что имена районов состоят из разного числа буковок, в общем случае ;-)
...
Рейтинг: 0 / 0
Grid и set filter
    #32790546
Трехсотый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bege2Трехсотый
Дело не в периоде. Просто открыть форму , посмотреть и поредактировать - нет проблем, ни со временем открытия, ни с чем либо другим. 4 года так работают, и вполне довольны :) Проблема в гриде. При больших объемах данных он не в состоянии показать нормально отфильтрованные данные(выборка делается по значениям от 1го до 6 полей таблицы, одно из которых - дата).Вот и приходится выкручиваться :)


Хочется разобраться, видимо я не понял проблему.
Грид на форме?

При открытии формы сделайте 2 курсора,
1- все 650тыс.,
2- только часть (например за какой то период) для отображения в гриде.

Все запросы и выборки делаете по 1 курсору., а результат (если он очень большой) разбиваете на части, и показываете в гриде только первую часть, при этом дав пользователю возможность переключаться между частями результирующего курсора?( например как в html <- 1,2,3-> все)

Грид при небольших частях данных будет открываться моментально и отображать как надо.

Или я опять не правильно понял проблему и все дело в сортировках внутри грида???
...
Рейтинг: 0 / 0
Grid и set filter
    #32790578
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажу честно - не всё внимательно прочёл, но...
150000 записей (как минимум) действительно нужно пользователю? Что он с ними делает? Просматривает scroll'om?

Помните "Хищника"? - "там кто-то есть... и это не человек..."

Мой опыт: SET FILTER - может быть довольно неприятная вещь, но он оптимизируем! Я этим часто пользуюсь на довольно больших базах - 800000 записей, 20-30 полей - помогает... Особенно, если лень одолевает... :-)
...
Рейтинг: 0 / 0
Grid и set filter
    #32790704
akrisiun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bege2ВладимирМ
Спасибо за подсказку dtos() :)
Но как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region).
Устанавливать
set key to range '20040101'+'Советский','20040131'+'Cоветский'
по дате нормально, а на район - ноль внимания.
Как правильно?

Must be Index tag :
Код: plaintext
1.
2.
3.
4.
5.
select orders
index on left(region, 9 )+ dtos(time) tag regtime

SET KEY TO RANGE 'Советский'+'20040101', 'Cоветский'  + '20040131'

Privet from Lithuania, sorry for english, but I don't have keyboard with
cyrilica letters.

Andrius
...
Рейтинг: 0 / 0
Grid и set filter
    #32790925
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трехсотый
Грид при небольших частях данных будет открываться моментально и отображать как надо.
Или я опять не правильно понял проблему и все дело в сортировках внутри грида???
2Трехсотый:
Проблема в том что надо выборку редактировать. С фильтрами все виснет, а представления открываются долго, а отдельно потом изменения закачивать в основную таблицу муторно.
...
Рейтинг: 0 / 0
Grid и set filter
    #32791730
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Bege
авторНо у меня - 24 поля(от 7 до 60 симв) и 600тыс записей (каждый день прибавляется 500-600 записей

Стоит обратить внимание на нормализацию. Наличие в оперативной таблице текстового поля района наводит на нехорошие размышления - нужно вынести в отдельную таблицу. И по другим полям тоже пройтись.

авторВ данном случае правильно перестроить индекс сначала по району, а потом по дате

Вот это скорее всего неправильно. Индекс по дате - самый эффективный (после первичного ключа), если эта дата соответствует временному порядку добавления записей и (как правило) не меняется. Соответственно, велика вероятность того, что большое количество записей с одинаковой датой будут физически находиться в одном/смежных кластерах диска (зависит от дефрагментации конечно). Эффективность работы дисковой подсистемы с учетом кэша возрастает многократно, особенно на больших таблицах. Т.е. совет использовать индекс по dtos() и set key to range очень правильный.
...
Рейтинг: 0 / 0
Grid и set filter
    #32791765
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bege
Проблема в том что надо выборку редактировать. С фильтрами все виснет, а представления открываются долго, а отдельно потом изменения закачивать в основную таблицу муторно.
Мне кажется, Вы чего-то не понимаете:

-) Либо пользователь ждет один раз пока откроется Local View, либо он наблюдает постоянные тормоза при перемещении по записям.

Угадайте с одного раза, что пользователь предпочтет? Правильно, послать такую программу куда подальше. Тормозов быть вообще не должно

-) Local View можно сделать обновляемым. Т.е. изменения внесенные во View автоматически попадут в исходную таблицу. Ничего специально закачивать в основную таблицу не надо.

-) Уже неоднократно Вам говорили про то, что необходима оптимизация. Грубо говоря - это создание нескольких индексов по условиям отбора. Индексы ускорят как собственно выборку (открытие Local View), так и работу с фильтром.

-) В конце концов, никто не мешает наложить фильтр на собственно Local View. Например, в Local View делается выбор только по дате, а все остальные фильтры накладываются уже на сам Local View (на результат выборки)
...
Рейтинг: 0 / 0
Grid и set filter
    #32791860
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi XAndy
XAndyВот это скорее всего неправильно. Индекс по дате - самый эффективный (после первичного ключа), если эта дата соответствует временному порядку добавления записей и (как правило) не меняется. Соответственно, велика вероятность того, что большое количество записей с одинаковой датой будут физически находиться в одном/смежных кластерах диска (зависит от дефрагментации конечно). Эффективность работы дисковой подсистемы с учетом кэша возрастает многократно, особенно на больших таблицах. Т.е. совет использовать индекс по dtos() и set key to range очень правильный
В отрыве от контекста эти соображения верные. Но если вспомним, что хотел Bege ...
BegeНо как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region).
Устанавливать
set key to range '20040101'+'Советский','20040131'+'Cоветский'
по дате нормально, а на район - ноль внимания.
Как правильно?
... То получим совсем не то, что хочется.
Bege хочет по одному району за период. А получается - за период, но районы игнорируются (нельзя сказать, конечно, что совсем игнорируются, но поведение странное). И почему же, интересно? ;-)
А если вспомним про сортировку строк? ;-)))
Что, запись '20040101'+'Турецкий' не попадет в set key to range '20040101'+'Советский','20040131'+'Cоветский' ??? ;-)))))))))
...
Рейтинг: 0 / 0
Grid и set filter
    #32792004
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Urri... То получим совсем не то, что хочется.
Bege хочет по одному району за период. А получается - за период, но районы игнорируются (нельзя сказать, конечно, что совсем игнорируются, но поведение странное). И почему же, интересно? ;-)
А если вспомним про сортировку строк? ;-)))
Что, запись '20040101'+'Турецкий' не попадет в set key to range '20040101'+'Советский','20040131'+'Cоветский' ??? ;-)))))))))
2Urri : Вы правы, при такой сортировке все районы попадают в выборку.
Конечно же правильнее (спасибо acrisiun!), наоборот, region+dtos(time) .
Но полей для выборки шесть, и получается что надо либо создавать индекс каждый раз по выбранным полям (условиям выборки), что невозможно, потому что таблица буферизованная , да и по времени создание индекса не устраивает. Или насоздавать индексов заранее , сколько там получится комбинация из 6ти ? :) Тоже вопрос.
2 XAndy: Нормализация нужна, не спорю, даже по 4 полям можно. Не знаю о чем думали разработчики этой программы, возможно были и у них какие-то резоны. Сейчас просто нет смысла глобально переделывать это приложение, в ближайшее время начнем разработку замены. А пока поддерживаю в рабочем состоянии эту программу.
ВладимирММне кажется, Вы чего-то не понимаете:
-) Либо пользователь ждет один раз пока откроется Local View, либо он наблюдает постоянные тормоза при перемещении по записям.

2ВладимирМ : Пользователь заходя в форму для редактирования данных может делать сколько угодно выборок. Им так удобно : выбрал какие-то записи - отредактировал, чтоб другие записи даже и не видно было.
Индексы есть, и насчет ускорить выборку индексированием я уже написала выше. Видимо, я немного туманно обрисовала проблему сначала, но сейчас-то уже все честно рассказала. Могу эту формочку вывесить, если кому интересно .
...
Рейтинг: 0 / 0
Grid и set filter
    #32792034
Bege
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл с формой
...
Рейтинг: 0 / 0
Grid и set filter
    #32792208
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всего, конечно, SELECT.
Но чтоб не сильно переделать, предлагаю индексы только по одному полю - всего 6 тегов по всем 6 полям сортировки.
Далее SET ORDER TO и далее SET KEY TO по самому отсеивающему записи полю. Ну а оставшиеся условия - далее поставить SET FILTER TO BETWEEN(...) AND BETWEEN(...) AND ...
Ну так, примерно. ;-)

Фильтр будет оптимизироваться и, на фоне SET KEY TO тормозить не должон.

Впрочем, может, условия фильтра будет пытвться оптимизироваться независимо от SET KEY TO. Тогда, несмотря на SET KEY TO, тормоза останутся. Что ж. Тогда убить все оставшиеся 5 тегов кроме того, по которому имеем SET ORDER TO и SET KEY TO. Или не убивать эти теги, но написать в SET FILTER TO BETWEEN(...) AND BETWEEN(...) AND ... NOOPTIMIZE.

Предлагаю инициатору темы самому проверить, что в его условиях будет меньше тормозить. Возможно, вариант фильтра без оптимизации окажется гораздо быстрее. ;-)
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и set filter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]