powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и set filter
25 сообщений из 44, страница 1 из 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
25 сообщений из 44, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и set filter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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