powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синхронизация SubForm
25 сообщений из 25, страница 1 из 1
Синхронизация SubForm
    #32535839
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммем таблицу 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
Синхронизация SubForm
    #32535840
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прошения . в строке
Код: plaintext
1.
me.Parent.TabCtrl1.Pages( 2 ).Controls("SubF2").Select
читай
Код: plaintext
1.
me.Parent.TabCtrl1.Pages( 2 ).Controls("SubF2").SetFocus
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32535890
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор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
Синхронизация SubForm
    #32535906
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй просто синхронизировать закладки форм

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

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

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

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

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

на то что АлексейК предложил, и посмотрите, что получиться!
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32535939
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо , попробую.
То есть Recordset 2 формы устанавливаеться на позицию Recordset 1 формы ?
Что то такое ?
И его можно использовать без ограничении ? Или при каких то условиях может не срабатывать ?
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32535974
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИли при каких то условиях может не срабатывать ?
Может не сработать, если rs по сути своей не одинаковы, но как у вас - должно сработать (одинаковые записи в обеих rs, только разные поля одной и той же таблицы)
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32536007
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32536009
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСпасибо
Помогло?
...
Рейтинг: 0 / 0
Синхронизация SubForm
    #32536148
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это дома попробую.
Кстати , ведь так выходит, что мы настраиваем 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
Синхронизация SubForm
    #32536156
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Машу вать!!!

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

вот весь код

Код: 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
Синхронизация SubForm
    #32536829
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Синхронизация SubForm
    #32536832
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAQ

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

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

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

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

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

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

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

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


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