Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синхронизация SubForm / 25 сообщений из 25, страница 1 из 1
27.05.2004, 08:48
    #32535839
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Иммем таблицу Table1 с ключом Key1
На форме ParentForm TabCtrl1 а на ее страницах SubF1 и SubF2,
которые оба опираються на таблицу Table1 ( ТО есть представляють разные части той же записи ).
После вода в поле SubF1.LastField1 нужно перейти на форму SubF2.FirstField1 . значение ключа Key1 определяеться в SubF1 .
Переходя на SubF2 должны стоять на том же записи.

Сделал так :
m_IsFromSubF1 as Boolean

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private SubF1.LastField1_LostFocus ()
  m_IsFromSubF1 = True
  me.Parent.TabCtrl1.Pages( 2 ).Controls("SubF2").Select
End Sub  

Private SubF2.FirstField1_GotFocus ()
  dim rs as recordset

  if   m_IsFromSubF1 = True
      Set rs  = me.Parent.TabCtrl1.Pages( 1 ).Controls("SubF1").Recordset
     nKey = rs.Fieds("ID")
     DoCmd.GoToRecord ,, acGoTo , nKey
  endif 
End Sub  

Но она иногда выдает ошибку. Как будто DoCmd работает не для SubF2 Формы.
Потому как под Debug всегда правильно работает,
Может для активации SubForm нехватит только устанавить на них фокус ?
...
Рейтинг: 0 / 0
27.05.2004, 08:51
    #32535840
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Прошу прошения . в строке
Код: plaintext
1.
me.Parent.TabCtrl1.Pages( 2 ).Controls("SubF2").Select
читай
Код: plaintext
1.
me.Parent.TabCtrl1.Pages( 2 ).Controls("SubF2").SetFocus
...
Рейтинг: 0 / 0
27.05.2004, 09:29
    #32535890
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторnKey = rs.Fieds("ID")
DoCmd.GoToRecord ,, acGoTo , nKey

DoCmd.GoToRecord ,, acGoTo , nKey - переходит на запись с номером nKey, считая по порядку в выбранном подмножестве

nKey = rs.Fieds("ID") - nKey присваивается значение ключа!

Создается впечатление, что у вас в выборка всегда отсортирована по ID
и что самое страшное, всегда первым идет запись с ID = 1 (существует в выборке) и всегда без "пробелов" (т.е. в выборке из трех записей ID будет 1, 2, 3; а не 1, 3, 4 - например)

Откуда такая уверенность?
...
Рейтинг: 0 / 0
27.05.2004, 09:39
    #32535906
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
попробуй просто синхронизировать закладки форм

sub2.form.bookmark = sub1.form.bookmark
...
Рейтинг: 0 / 0
27.05.2004, 09:45
    #32535917
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Да это именно так.
Свойство SubForm.DATA определена на Table1 , который имеет отношение с основной таблицей с основным ключом.
Так что каждая подтаблица определена на множестве , состоящей именно из таких записей ( последовательных )
Они создаються внутри одной транзакции.
...
Рейтинг: 0 / 0
27.05.2004, 09:47
    #32535923
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Я просто не знаю, какую функцию выполняют закладки.
Они включают параллельное соответствие ?
...
Рейтинг: 0 / 0
27.05.2004, 09:49
    #32535925
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторОни создаються внутри одной транзакции.
Это не гарантирует что в таблице будут именно последовательные значения поля ID без дыр

т.к. есть:
- Удаление (можно и из середины)
- Откат транзакции (если поле типа счетчик, то после отката транзакции следующие ID не будут последовательны)

PS: это только то, что на вскидку вспомнил.
...
Рейтинг: 0 / 0
27.05.2004, 09:49
    #32535926
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
То есть перемещение SubForm1.recordset приведет к аналогичного перемещения SubForm2.recordset ??
...
Рейтинг: 0 / 0
27.05.2004, 09:52
    #32535931
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
2 paparome
Я понимаю. Здесь важно, чтобы ключи с конкретным значением находились на одном расстоянии от начала.
...
Рейтинг: 0 / 0
27.05.2004, 09:52
    #32535932
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторЯ просто не знаю, какую функцию выполняют закладки.
Они включают параллельное соответствие ?

Закладки они и есть закладки - как вам объяснить :(

Просто заменить свое
Set rs = me.Parent.TabCtrl1.Pages(1).Controls("SubF1").Recordset
nKey = rs.Fieds("ID")
DoCmd.GoToRecord ,, acGoTo , nKey

на то что АлексейК предложил, и посмотрите, что получиться!
...
Рейтинг: 0 / 0
27.05.2004, 09:56
    #32535939
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Хорошо , попробую.
То есть Recordset 2 формы устанавливаеться на позицию Recordset 1 формы ?
Что то такое ?
И его можно использовать без ограничении ? Или при каких то условиях может не срабатывать ?
...
Рейтинг: 0 / 0
27.05.2004, 10:16
    #32535974
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторИли при каких то условиях может не срабатывать ?
Может не сработать, если rs по сути своей не одинаковы, но как у вас - должно сработать (одинаковые записи в обеих rs, только разные поля одной и той же таблицы)
...
Рейтинг: 0 / 0
27.05.2004, 10:28
    #32536007
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Спасибо
...
Рейтинг: 0 / 0
27.05.2004, 10:29
    #32536009
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторСпасибо
Помогло?
...
Рейтинг: 0 / 0
27.05.2004, 11:07
    #32536148
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Это дома попробую.
Кстати , ведь так выходит, что мы настраиваем SubForm2.recordset на ту же запись
что и SubForm1.recordset.
А как мы можем изменять програмно SubForm1.recordset?
Ведь мне надо находясь на SubForm2 , перейти ( я это делал с помощью SetFocus ) на SubForm1 , притом на следующую запись,( если оно есть конечно)
То есть надо же сделать
Код: plaintext
1.
2.
SubForm1.SetFocus
DoCmd.GoToRecord ,, acGoTo , nKey
а именно при "DoCmd.GoToRecord ,, acGoTo , nKey" получаеться как бы, что у нас активная не SubForm1.
Правда я не пробовал вариант
Код: plaintext
SubForm1.recordset move nKey
...
Рейтинг: 0 / 0
27.05.2004, 11:11
    #32536156
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Машу вать!!!

- Да зачем вам фокус с одной SubF на другую перекидывать?
- Что DoCmd срабатывал на активном объекте.
- И где вы в примере АлексеяК DoCmd увидили?
...
Рейтинг: 0 / 0
27.05.2004, 11:18
    #32536169
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
Пример Алексея подразумевает, что переход с одной подформы в другую будет по выбору пользователья. А мне надо, чтобы при LostFocus- e
TextBox -a yf SubForm2 Автоматически перешли опять на SubForm1 при том на следующую запись
:-)) н сердись !
...
Рейтинг: 0 / 0
27.05.2004, 11:31
    #32536227
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
- переключить вкладку у родителя
- передать фокус не контролу SubF1, а его первому TextBox
что-то типа: call me.parent.subf1.form.textbox_first.setfocus
- сделать DoCmd.GoToRecord ,,acNext (и быть готовым, что выдаст ошибку, что следующего нет, т.к. этот последний!)
...
Рейтинг: 0 / 0
27.05.2004, 12:23
    #32536431
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
делаете из мухи слона

вот весь код

Код: plaintext
1.
2.
3.
4.
5.
Private Sub Form_Current()
'Код подформы sub1 который синхронизирует подформу sub2 c текущей'
On Error Resume Next
Me.Parent.sub2.Form.Bookmark = Me.Bookmark
End Sub
...
Рейтинг: 0 / 0
27.05.2004, 14:34
    #32536829
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
2 paparome
Во первых не [Next] а по конкретному значению из имеющегося множества.
Во вторых - я точно так написал, то есть -
Установил фокус на textbox c TabIndex =0

1. me.parent.subf1.form.textbox_first.setfocus
2. DoCmd.GoToRecord ,,acGoto, nID
Так вопрос не в том, что recordset не устанавливаеться, а в том, что
после 1. как будто пока subf1 не являеться текущей.
Когда через Debug проверяю, я меняю очередность установки фокуса и это может стать причиной, что работает нормально.
А без Debug 2. команда фактически выполняеться не в том контексте
...
Рейтинг: 0 / 0
27.05.2004, 14:36
    #32536832
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
FAQ

Q2
?
...
Рейтинг: 0 / 0
27.05.2004, 14:42
    #32536849
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
прошу извинения.

DoEvents -Она переключает выполнении на очередь сообщении ?
...
Рейтинг: 0 / 0
27.05.2004, 14:53
    #32536879
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
авторDoEvents -Она переключает выполнении на очередь сообщении ?

Мудрено для моего понимания завернул :(

Я бы сказал так:
Дает выполниться прочим событиям не дожидаясь завершения процедуры (функции)
...
Рейтинг: 0 / 0
27.05.2004, 15:08
    #32536913
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
2 paparome

Ты молодец ! все понятно. Спасибо.
...
Рейтинг: 0 / 0
27.05.2004, 15:18
    #32536942
мдя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация SubForm
откуда уверенность, что рекордсет у 2 разных форм один?
букмарки разных рекордсетов (однрй таблицы) не совпадают. Может правда хитрый аксесс соображает, что достаточно раздать один рекордсет 2 формам, но я сомневаюсь.

если букмарки такиразные, то:
что мешало Дону обе страницы сделать на 1 форме? Превышения максимума по контролам?

Одно из решений: Вторая форма должна смотреть на ключевое поле первой, а не на главную. (есть минусы).

С табличными формами вероятно придется переходить на запись по ключу. (Seek - ом)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синхронизация SubForm / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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