powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы
10 сообщений из 10, страница 1 из 1
Формы
    #32277371
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два remote view, нужно сделать форму из двух grid. В первом выбирается поле(источник - первый view), а во втором grid'е появляется информация, источник второй view. Так как нет индексации(по-моему в remote view нет индексов) то автоматов отношение не делается. Как результаты select'a занести в поля второго grid'a, у меня что-то не получилось.
...
Рейтинг: 0 / 0
Формы
    #32277418
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед буферизацией 2 view сделать индекс по нему и set relation
...
Рейтинг: 0 / 0
Формы
    #32277469
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно индексировать представление.
А можно его немного изменить, чтобы
в нем отображались только нужные записи.

И первом гриде, в событии AfterRowColChange написать
Код: plaintext
1.
2.
View2Param = view1.Field1
Requery( "view2" )
ThisForm.Grid2.Refresh()
...
Рейтинг: 0 / 0
Формы
    #32277657
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2brahew: Это как?

2karly: Как его проиндексировать?
А можно его немного изменить, чтобы
в нем отображались только нужные записи.

Менять представление в моем случае нельзя.

View2Param = view1.Field1
Requery("view2")
ThisForm.Grid2.Refresh()

Что это "View2Param"?

В первом гриде, в событии AfterRowColChange написал:
select par1 from view1;
where ALLTRIM(view1.idob) = ALLTRIM(ThisForm.Grid1.Column2.Text1.value);
into cursor curs1
ThisForm.Grid2.Column1.Text1.value = curs1.year1
ThisForm.refresh()

почему select нормально отрабатывает, а во втором gride ничего не отображается?
...
Рейтинг: 0 / 0
Формы
    #32277675
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Индексировать - как обычно, командой index :)
Только этот индекс не сохраняется, его нужно создавать
при каждом открытии view. И не обновляется после команды
Requery(), необходимо после нее выполнять Reindex

View2Param - это я так назвал параметр для второго view.

Вместо
ThisForm.Grid2.Column1.Text1.value = curs1.year1

нужно написать
ThisForm.Grid2.RowSource = curs1
ThisForm.Grid2.Column1.ControlSource = curs1.year1

И последнее - ты сделал максимум возможного, чтобы твой запрос
выполнялся медленно ;).
...
Рейтинг: 0 / 0
Формы
    #32277692
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2karly: ОК это понятно.
По поводу медленный запрос - предложи альтернативу буду рад.
...
Рейтинг: 0 / 0
Формы
    #32277824
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 lesha_spb

1. В качестве источника данных для запроса указано view.
Чтобы оптимизировать запрос, нужно построить индекс по полю idob
после вызова или обновления view1. Или строить запрос на основе таблицы,
где такой индекс должен присутствовать на постоянной основе.

2. Индексы по символьным выражениям в Фоксе постоянной длины.
А выражение ALLTRIM(view1.idob) - переменной. Поэтому индекс по нему
построить нельзя. Точнее, в качестве длины выражения будет принята
длина первой записи. Нужно писать так

Select ... view1.idob = ALLTRIM(ThisForm.Grid1.Column2.Text1.value) ...
...
Рейтинг: 0 / 0
Формы
    #32278482
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более менее ясно - попробую. Еще такой вопрос: как средствами фокса
очистить содержимое курсора, не закрывая его?
...
Рейтинг: 0 / 0
Формы
    #32278616
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А курсор редактируемый? Если нет, то тогда сначала
Select 0
Use ( dbf("CursorName") ) Alias Focus_Pocus Again

А затем...
ZAP

Ну и уберем за собой мусор
Use in Focus_Pocus
...
Рейтинг: 0 / 0
Формы
    #32278682
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько не по теме.

-) Если в объекте TextBox сделать настройку

ThisForm.Grid1.Column2.Text1.Format='T'

То ведущие пробелы будут отсекаться автоматически, а если у этого объекта не указан ControlSource, то также автоматически будут отсекатся и концевые пробелы (впрочем, при сравнении полей концевые пробелы не столь важны, если поля равной длины), тогда можно писать запрос не отвлекаясь на AllTrim()

Select ... view1.idob = ThisForm.Grid1.Column2.Text1.value

-) Любое View открывается в FoxPro в режиме оптимистической буферизации строк (3) и может быть переключено только в режим оптимистической буферизации таблиц (5) и никак иначе.

Индексировать таблицу или View можно только в том случае если она НЕ находится в режиме табличной буферизации. Т.е. или не буферизирована вообще или в режиме строковой буферизации.

-) Созданный индекс для View тем не менее обновляется после команды Requery(), так что пересоздание необходимо только в случае, если View было переоткрыто, т.е. явно закрыто и открыто заново.

-) Начиная с 7 версии курсор можно сделать редактируемым добавив опцию ReadWrite

SELECT ... FROM ... INTO CURSOR MyCursor NOFILTER READWRITE
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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