|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Леди и джентльмены! Может быть, я неверно понимаю ситуацию, помогите. Извините за тафталогию в примере. В проекте запускается Forma_01 с Private Data Session. Потом пользователь может открыть из нее Forma_02, в ней сессия тоже приватна. В одной из таблиц второй формы пользователь удаляет запись. Далее Forma_02 закрывается. Но в Forma_01 эта запись еще остается в таблице. Нужно закрыть Forma_01, запустить ее вновь, чтобы таблица обновилась. Правильно ли я понимаю, что это происходит от того, что в обеих формах проставлено Private Data Session? Как поступить? Благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 09:35 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
В первой форме передернуть указатель записи Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 09:41 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
сделать у контрола, где таблица является сырцом Refresh() или Requery() - второй актуален для cbo, lst и типа того ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 09:45 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Гм-м... Не помогает. Кстати, у меня уже проставлено было GO TOP IN... И таблица эта не привязана к контролу. Из нее идут запросы. Я вот что подумала сейчас. Значит, идет у меня выполнение программного кода в Forma_01. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:15 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Ой, прошу прощения, вставила из буфера слова, а буфер - из Word'a. Строка такая: GO 1 IN Sortredak ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:19 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
ЛисонькаА подумала я вот о чем: после закрытия Forma_02 код в Forma_01 продолжает выполняться со строки, идущей после DO FORM? Это зависит от Forma_02. Если она модальная, то выполнение в DO FORM 'c:\Sort\My_Forms\frmPoisk' приостанавливается до закрытия Forma_02. Иначе, если вызываемая форма немодальная, то выполнение кода продолжается... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:31 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Я тут сижу эксперемнтирую. Теперь попробовала так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Вывод: GO 1 IN Sortredak срабатывает тоже ДО того момента, как удаление записи было сделано пользователем. Вот поэтому у меня и неполучается ничего. Что подскажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:32 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
2Лисонька если использовать для получения выборок(курсоров), привзанных к гридам курсорадаптер, то получить актуальные данные можно методом cursorrefresh() либо RecordRefresh(1) (для одной текущей записи) курсорадаптера В Вашем случае необходимо каким-то образом инициировать событие изменения записей (после закрытия формы 2 в форме 1 запускать метод проверки актуальности записи и вносить уже изм-я в курсор 1-й формы руками) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:35 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
А зачем DO FORM ' c:\Sort\My_Forms\ frmPoisk' ? Достаточно в стартовой программе сделать Set Default To на каталог,откуда стартует программа. Иначе могут быть проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:40 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
+ set path ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:42 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
homikА зачем DO FORM ' c:\Sort\My_Forms\ frmPoisk' ? Достаточно в стартовой программе сделать Set Default To на каталог,откуда стартует программа. Иначе могут быть проблемы. Ну нет у нас ананасов! :-Р Нет, Set Default To не проставила. Не из-за того, что не знала об этой команде. Ведь я ссылки пишу не только на папку с формами, но и с отчетами, и сшаблонами и т.п. Мне легче при написании кода через буфер ввести нужный путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 10:56 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
ЛисонькаНет, Set Default To не проставила. Не из-за того, что не знала об этой команде. Ведь я ссылки пишу не только на папку с формами, но и с отчетами, и сшаблонами и т.п. Мне легче при написании кода через буфер ввести нужный путь. И что? А еще легче их совсем не писать. Никак. Ни руками, ни через буфер. Что и предлагается сделать. Set Path в этом отношении очень хорошая команда. Только не надо незнание чего-либо выдавать за продуманный хитрый выверт. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:08 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
проходящий.И что? А еще легче их совсем не писать. Никак. Ни руками, ни через буфер. Что и предлагается сделать. Set Path в этом отношении очень хорошая команда. Только не надо незнание чего-либо выдавать за продуманный хитрый выверт. Реплика мимоходом. Если Вы помните еще какие-нибудь мои темы, то могли бы понять, что я никогда не скрываю свое незнание и честно говорю об этом: этого я не знала. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:12 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Лисонька Ведь я ссылки пишу не только на папку с формами, но и с отчетами, и сшаблонами и т.п. Мне легче при написании кода через буфер ввести нужный путь. Ага и завтра перетащили папку с проектами в другое место, и как результат сидим пару тройку часов и меняем все пути ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:14 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Наивный вопрос: Настройка SET DELETED ON на первой форме есть? Надеюсь, вы в курсе, что внутри Private DataSession все настройки, связанные с обработкой данных сбрасываются в значение по умолчанию? В том числе и SET DELETED. Полный список настроек, которые сбрасываются в Private DataSession можно посмотреть в описании к настройке SET DATASESSION Кроме того, удаление записи физически означает всего-лишь пометку такой записи как удаленной. Т.е. физически, запись по прежнему существует. А это значит, что на нее можно перевести указатель записи командой GO. Настройка SET DELETED - это всего-лишь своеобразный фильтр, наложенный на таблицу. Чтобы фильтр вступил в силу, необходимо передвинуть указатель записи. Но не командой GO, а командой SKIP. Т.е. примерно так: Код: plaintext 1. 2. 3. 4. 5.
После этой операции, надо обновить картинку в Grid. А это происходит только при получении Grid фокуса. Т.е. надо явно прописать Код: plaintext
Однако если подчиненная форма НЕ модальная, то весь этот код по обновлению придется вынести в отдельный метод и запускать ЯВНО. Специальной командой. Например, напрямую из подчиненной формы. В простейшем случае, чтобы это сделать, можно передать идентификатор родительской формы в подчиненную. Но в более общем случае, требуется собственный менеджер открытых форм, чтобы отслеживать возможные взаимосвязи. Для модальной формы все проще. Этот код можно записать сразу за DO FORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:20 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
SET DELETE, пометка на удаление, физическое удаление PACK - это все понятно. Модальная форма - нет, нежелательно. Значит, мне нужно в главной форме сделать New Method? А потом запускать командой THISFORM.new_m()? А если из подчиненной, то какой командой? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:39 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
ЛисонькаА потом запускать командой THISFORM.new_m()? А если из подчиненной, то какой командой? Ссылка_на_родительскую_форму.new_m() ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:45 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
2Лисонька попробуйте поработать с курсорадаптером с примерами я помогу, + пополните объем знаний курсорадаптеры позволят Вам использовать более логичные приемы и облегчит разработку ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 11:48 |
|
2 формы с Private Data Session
|
|||
---|---|---|---|
#18+
Лисонька Если решите использовать CursorAdapter, то имейте в виду, что для решения данной задачи вам придется делать ТО ЖЕ САМОЕ. Ну, разве что, другими командами. Т.е. по прежнему потребуется написать метод new_m() на главной форме. По прежнему потребуется организовать его вызов из дочерней формы. Отличия будут только в содержимом этого метода. Простейший вариант решения задачи ссылки на родительскую форму из дочерней - это передача в дочернюю форму некоего идентификатора родительской формы. Нежелательно передавать собственно ссылку на родительскую форму, поскольку это может привести к невозможности закрытия форм. Если формы не могут открываться в двух экземплярах (дважды открыть одну и ту же форму), то, в качестве такого идентификатора можно передать свойство Name формы. Т.е. вызов дочерней формы примет вид Код: plaintext
В методе Init дочерней формы необходимо организовать прием этого параметра и записать его в специальное свойство дочерней формы Код: plaintext 1. 2. 3. 4. 5.
Здесь свойство ThisForm.ParentFormName - это предварительно созданное свойство дочерней формы. Теперь, когда в дочерней форме выполняется модификация данных, необходимо принудительно запустить обновление родительской формы. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Другими словами, метод родительской формы запускается не при закрытии дочерней формы, а по факту модификации данных. ------------------------------------------------------------------------------- Однако начиная с версии VFP8, все то же самое можно сделать при помощи BindEvents() примерно так: Код: plaintext 1. 2. 3. 4.
Здесь я предполагаю, что при ЛЮБОЙ модификации в дочерней форме, так или иначе будет запущен ее метод MyUpdate(). Это пользовательский метод в этой дочерней форме. Факт запуска метод MyUpdate() по связке в BindEvent() инициирует выполнение метода new_m() в текущей (родительской) форме. Что, собственно, и требуется. Недостаток связки по BindEvent() - это невозможность передачи параметров. Впрочем, не думаю, что в данной задаче это так уж нужно. Ну, а достоинства - это предельная простота организации и нет необходимости как-то модифицировать дочернюю форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 12:16 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1587128]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
10ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
125ms |
get tp. blocked users: |
1ms |
others: | 344ms |
total: | 592ms |
0 / 0 |