|
Обновление grid-а
|
|||
---|---|---|---|
#18+
Пользователь находится на активной форме, из нее вызывает другую форму, работает с данными и закрывет ее. Далее переходит(возвращается) на первую форму, и вот здесь надо обновить значения, допустим Grid.Refresh (), а именно проблема в том, что на форме в Grid-е отображены значения таблиц связанных друг с другом и вот в некоторых столбцах grid-а данные не видны или видны в каждой строке одни и теже. Где правильнее организовать обновление данных? Got Focus или Activate формы на кот. перешел пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 11:20 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
Marfu6a, Честно-откровенно не совсем ясно, чего у вас там происходит, но попробуйте воздействовать через Activate(). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 13:51 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
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 гриде не выделена. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 15:46 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
Сначала установи запись в первом Grid для "обновления" связей, затем установи запись во втором Grid уже для нужной визуализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 16:10 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
ВладимирМ, В коде это выглядит так GO gnNomDokVnu IN DokVnu && это родит. табл. в 1 гриде IF gnNomStrDokVs <= RECCOUNT("DokVnuS") GO gnNomStrDokVs IN DokVnuS && это родит.(дочерняя для 1 грида) табл. во 2 гриде ENDIF Проблема в этом случае такая: в 1 гриде в тех столбцах в которых отображаются дочерние таблицы значения во всех строках = тому значению, на котором стоит курсор в этой таблице, хотя д. б. разные значения. А вот если я кликаю на гриде или прокручиваю его, то все ок, он обновляется или что?! А во 2 гриде все ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 16:51 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
Ну, да. Это известный глюк отображения в одном Grid данных из нескольких таблиц связанных по Set Relation (или в DataEnvironment формы). В общем случае "вылечить" крайне сложно. Помогает именно явный первод фокуса, но не всегда. Попробуй такой прием Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
PS: Описанная проблема - это одна из причин (не самая главная), почему вместо связей по SET RELATION лучше использовать выборки (Select-SQL), пусть и обернутые в Local View или CursorAdapter. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 20:25 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
ВладимирМ, ОГРОМНОЕ спасибо за столь стоящий совет!!!!! Еще вопросик: т. е. если вместо установки связи set relation просто писать запрос select * from ... where ... into cursor cResult1 а потом курсор cResilt1 отображать в гриде, то такой проблемы не будет, даже если курсор связывать с другими таблицами для отображения данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 10:05 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
Цель выборок - это вообще исключить связи по SET RELATION при отображении данных. Это значит, что содержимое подчиненного Grid - тоже выборка, которая обновляется (делается новая выборка) при переходе по записям главного Grid. Правда, следует иметь в виду, что переход на выборки означает серьезную переделку практически всего кода программы. По сути, придется писать программу заново. Ну, например, идентификация записи выборки по ее физическому номеру (Recno()) - не имеет смысла. Ведь после выборки невозможно сказать, будет ли физический номер записи тот же самый, что и до выборки или нет. Следовательно, необходима идентификация по содержимому ключевых полей. Будут и другие особенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 10:58 |
|
Обновление grid-а
|
|||
---|---|---|---|
#18+
ВладимирМ, здесь возникает другая проблема: в grid1 должна отображаться не одна таблица, а несколько. причем они имеют общие поля по которым связаны. Так вот как эту связь можно сделать не прибегая к set relation? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2010, 12:41 |
|
|
start [/forum/topic.php?fid=41&fpage=93&tid=1585086]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 134ms |
0 / 0 |