powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid-а
10 сообщений из 10, страница 1 из 1
Обновление grid-а
    #36725024
Marfu6a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь находится на активной форме, из нее вызывает другую форму, работает с данными и закрывет ее. Далее переходит(возвращается) на первую форму, и вот здесь надо обновить значения, допустим Grid.Refresh (), а именно проблема в том, что на форме в Grid-е отображены значения таблиц связанных друг с другом и вот в некоторых столбцах grid-а данные не видны или видны в каждой строке одни и теже. Где правильнее организовать обновление данных? Got Focus или Activate формы на кот. перешел пользователь?
...
Рейтинг: 0 / 0
Обновление grid-а
    #36725570
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marfu6a,
Честно-откровенно не совсем ясно, чего у вас там происходит, но попробуйте воздействовать через Activate().
...
Рейтинг: 0 / 0
Обновление grid-а
    #36725940
Marfu6a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
reware,

На форме есть 2 грида. В 1 гриде размещена родительская таблица+дочерние, одна из которых размещена во 2 гриде+ некоторые дочерние таблицы. При клике правой кн. мыши на первом гриде выпадает меню, пользователь выбирает действие и открывается форма, после закрытия которой необходимо чтобы курсор в 1 гриде устанавливался на определенной записи. Для этого пишем после кода меню:

=TABLEUPDATE(.t.,.t.,"DokVnu")
SELECT DokVnu
IF gnNomStrDokV <= RECCOUNT("DokVnu")
GO gnNomStrDokV
ENDIF
this.Refresh

и все хорошо, все данные во всех гридах отображаются правильно.
При нажатии на 2 гриде правой кн. мыши происходит тоже самое, но после закрытия вызванной формы возникает проблема с отображением данных в 1 гриде (не все данные отображаются, а именно данные из дочерних таблиц), если мы устанавливаем указатель на нужную запись во 2 гриде:
SELECT DokVnuS
IF gnNomStrDokVs <= RECCOUNT("DokVnuS")
GO gnNomStrDokVs
ENDIF
А если устанавливаем указатель в 1 грид, то запись во 2 гриде не выделена.
...
Рейтинг: 0 / 0
Обновление grid-а
    #36726000
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала установи запись в первом Grid для "обновления" связей, затем установи запись во втором Grid уже для нужной визуализации.
...
Рейтинг: 0 / 0
Обновление grid-а
    #36726110
Marfu6a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

В коде это выглядит так
GO gnNomDokVnu IN DokVnu && это родит. табл. в 1 гриде
IF gnNomStrDokVs <= RECCOUNT("DokVnuS")
GO gnNomStrDokVs IN DokVnuS && это родит.(дочерняя для 1 грида) табл. во 2 гриде
ENDIF

Проблема в этом случае такая: в 1 гриде в тех столбцах в которых отображаются дочерние таблицы значения во всех строках = тому значению, на котором стоит курсор в этой таблице, хотя д. б. разные значения. А вот если я кликаю на гриде или прокручиваю его, то все ок, он обновляется или что?!
А во 2 гриде все ок.
...
Рейтинг: 0 / 0
Обновление grid-а
    #36726572
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, да. Это известный глюк отображения в одном Grid данных из нескольких таблиц связанных по Set Relation (или в DataEnvironment формы). В общем случае "вылечить" крайне сложно. Помогает именно явный первод фокуса, но не всегда.

Попробуй такой прием

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
GO gnNomDokVnu IN DokVnu && это родит. табл. в  1  гриде

ThisForm.GridParent.SetFocus()   && явный перевод фокуса в родительский Grid
DoEvents  && дать отработать визуальным спец.эффектам

* Теперь можно и в текущий Grid вернуться
IF gnNomStrDokVs <= RECCOUNT("DokVnuS")
    GO gnNomStrDokVs IN DokVnuS && это родит.(дочерняя для  1  грида) табл. во  2  гриде
ENDIF 

This.SetFocus()

PS: Описанная проблема - это одна из причин (не самая главная), почему вместо связей по SET RELATION лучше использовать выборки (Select-SQL), пусть и обернутые в Local View или CursorAdapter.
...
Рейтинг: 0 / 0
Обновление grid-а
    #36727136
Marfu6a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, ОГРОМНОЕ спасибо за столь стоящий совет!!!!!
Еще вопросик: т. е. если вместо установки связи set relation просто писать запрос
select * from ... where ... into cursor cResult1
а потом курсор cResilt1 отображать в гриде, то такой проблемы не будет, даже если курсор связывать с другими таблицами для отображения данных?
...
Рейтинг: 0 / 0
Обновление grid-а
    #36727306
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цель выборок - это вообще исключить связи по SET RELATION при отображении данных. Это значит, что содержимое подчиненного Grid - тоже выборка, которая обновляется (делается новая выборка) при переходе по записям главного Grid.

Правда, следует иметь в виду, что переход на выборки означает серьезную переделку практически всего кода программы. По сути, придется писать программу заново.

Ну, например, идентификация записи выборки по ее физическому номеру (Recno()) - не имеет смысла. Ведь после выборки невозможно сказать, будет ли физический номер записи тот же самый, что и до выборки или нет. Следовательно, необходима идентификация по содержимому ключевых полей. Будут и другие особенности.
...
Рейтинг: 0 / 0
Обновление grid-а
    #36759236
Marfu6a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

здесь возникает другая проблема: в grid1 должна отображаться не одна таблица, а несколько. причем они имеют общие поля по которым связаны. Так вот как эту связь можно сделать не прибегая к set relation?
...
Рейтинг: 0 / 0
Обновление grid-а
    #36759295
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
   select t1.c1, t2.c3 ....
       from t1
              left join t2 on ....
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid-а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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