powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос про Data Environment
6 сообщений из 6, страница 1 из 1
Вопрос про Data Environment
    #32439120
Muric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро!
Я столкнулся с такой проблемой:
В Data Environment формы у меня открываются в разных областях порядка 20 таблиц разной размерности и связь между ними. Когда у себя локально открываешь форму, то никакой задержки практически нет, но когда по сети, то происходит задержка, которая раздражает пользователя. Я попробовал в Data Environment поставить в свойстве AutoClose Tables=.F. В первом открытии формы была задержка, но после того как я вышел из формы и снова ее загрузил, то открытие произошло быстрее, но существенно проблему это не решило. У меня возникает в связи с этим вопрос, что для открытия таблиц и связей между ними надо написать отдельную процедуру открытия а затем в формах делать только SELECT. КТо-нибудь сталкивался с такой проблемой? Может быть Data Environment надо настроить так чтобы не было задржки?
Спасибо!
...
Рейтинг: 0 / 0
Вопрос про Data Environment
    #32439218
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос достаточно обширный. Попробую изложить его вкратце.

FoxPro - это файл-серверное приложение. Т.е. любая обработка происходит на клиенте, а не на сервере (можно обойти при помощи DCOM, но это отдельный вопрос).

Если физически таблица находится на сервере, то чтобы внести в нее изменения она должна быть скопирована на клиент (целиком или частично), на клиенте вносятся изменения и результат снова сбрасываются на сервер.

Разумеется, в FoxPro предусмотрены различные механизмы кэширования и оптимизации данного процесса.

Команда USE ничего не копирует с сервера. Она просто создает идентификатор таблицы. Скачивание чего-либо с сервера выполняется по мере необходимости. Более того, на клиенте происходит кэширование того, что уже скачано с сервера (отсюда ускорение повторного открытия)

Например, если Вы отображаете содержимое таблицы в Grid, то на клиента качается не вся таблица, а только то, что Вы видите в данный момент в Grid (или что уже посмотрели). Подкачка происходит динамически при листании Grid.

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

В этом случае на клиента будет скачаны только индексные теги, участвующие в запросе, а не сама таблица-источник. За счет чего и будет выигрыш в скорости.

Короче, без изменения идеологии построения программы принципиального ускорения открытия формы ты не получишь :(
...
Рейтинг: 0 / 0
Вопрос про Data Environment
    #32439270
Muric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один момент. В форме у меня 7 объектов COMBO. Они ведь тоже используют свой источник данных, которые я открываю в Data Environment. И если я передвигаю указатель записи по таблице, то в объектах COMBO динамически меняется их значения. У меня есть инкрементарный поиск в главной таблице, таким образом я могу искать запись по все таблице, а если использовать локальные представления, если я Вас правильно понимаю, то такая возможность ограничивается.
...
Рейтинг: 0 / 0
Вопрос про Data Environment
    #32439296
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эот все решаемо. Я пытаюсь сказать следующее:

Не следует выводить пользователю ВСЕ содержимое таблицы (далее листает Grid или инкрементный поиск). Следует отображать всегда небольшую выборку, которую можно охватить "одним взглядом" (максимум 2...3 листания).

Для поиска лучше использовать отдельные формы (вроде стандартного "Найти файл" в Windows)
...
Рейтинг: 0 / 0
Вопрос про Data Environment
    #32439406
Muric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, если я что-то не понял, но я попробовал в самой среде VFP открыть в форме в GRID большую таблицу по сети на сервере. Очень быстро отработало. В программе работает с задержками, так может быть сконфигурировать как-то? Например файл config.fpw
...
Рейтинг: 0 / 0
Вопрос про Data Environment
    #32439730
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем внимательно еще раз

Команда USE ничего не копирует с сервера. Она просто создает идентификатор таблицы. Скачивание чего-либо с сервера выполняется по мере необходимости. Более того, на клиенте происходит кэширование того, что уже скачано с сервера (отсюда ускорение повторного открытия)

Например, если Вы отображаете содержимое таблицы в Grid, то на клиента качается не вся таблица, а только то, что Вы видите в данный момент в Grid (или что уже посмотрели). Подкачка происходит динамически при листании Grid.

Т.е. Grid и будет быстро открываться (качается только видимая часть таблицы), но получишь притормаживание при листании. Прежде чем открыть новую страницу бедет происходит динамическая подкачка содержимого этой страницы. Это если на таблицу еще фильтра не наложено. Тогда тормоза при листании будут просто ужасные.

А тормоза при открытии формы связаны с тем, что требуется выполнить некие предварительные дейстивия по исходным таблицам (поиск записей, позиционирование указателей записи и т.п.). Какие именно действия - это уже зависит от настроек объектов формы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос про Data Environment
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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