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

И первом гриде, в событии AfterRowColChange написать
Код: plaintext
1.
2.
View2Param = view1.Field1
Requery( "view2" )
ThisForm.Grid2.Refresh()
...
Рейтинг: 0 / 0
28.09.2003, 18:17
    #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
28.09.2003, 20:27
    #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
28.09.2003, 22:27
    #32277692
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы
2karly: ОК это понятно.
По поводу медленный запрос - предложи альтернативу буду рад.
...
Рейтинг: 0 / 0
29.09.2003, 09:51
    #32277824
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы
2 lesha_spb

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

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

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

А затем...
ZAP

Ну и уберем за собой мусор
Use in Focus_Pocus
...
Рейтинг: 0 / 0
29.09.2003, 17:44
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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