Синхронизация SubForm

YuriAM
Дата: 27.05.2004 08:48:28
Иммем таблицу Table1 с ключом Key1
На форме ParentForm TabCtrl1 а на ее страницах SubF1 и SubF2,
которые оба опираються на таблицу Table1 ( ТО есть представляють разные части той же записи ).
После вода в поле SubF1.LastField1 нужно перейти на форму SubF2.FirstField1 . значение ключа Key1 определяеться в SubF1 .
Переходя на SubF2 должны стоять на том же записи.

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

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 нехватит только устанавить на них фокус ?
YuriAM
Дата: 27.05.2004 08:51:25
Прошу прошения . в строке
me.Parent.TabCtrl1.Pages(2).Controls("SubF2").Select
читай
me.Parent.TabCtrl1.Pages(2).Controls("SubF2").SetFocus
paparome
Дата: 27.05.2004 09:29:20
автор
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 - например)

Откуда такая уверенность?
АлексейК
Дата: 27.05.2004 09:39:43
попробуй просто синхронизировать закладки форм

sub2.form.bookmark = sub1.form.bookmark
YuriAM
Дата: 27.05.2004 09:45:52
Да это именно так.
Свойство SubForm.DATA определена на Table1 , который имеет отношение с основной таблицей с основным ключом.
Так что каждая подтаблица определена на множестве , состоящей именно из таких записей ( последовательных )
Они создаються внутри одной транзакции.
YuriAM
Дата: 27.05.2004 09:47:58
Я просто не знаю, какую функцию выполняют закладки.
Они включают параллельное соответствие ?
paparome
Дата: 27.05.2004 09:49:27
автор
Они создаються внутри одной транзакции.

Это не гарантирует что в таблице будут именно последовательные значения поля ID без дыр

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

PS: это только то, что на вскидку вспомнил.
YuriAM
Дата: 27.05.2004 09:49:45
То есть перемещение SubForm1.recordset приведет к аналогичного перемещения SubForm2.recordset ??
YuriAM
Дата: 27.05.2004 09:52:40
2 paparome
Я понимаю. Здесь важно, чтобы ключи с конкретным значением находились на одном расстоянии от начала.
paparome
Дата: 27.05.2004 09:52:42
автор
Я просто не знаю, какую функцию выполняют закладки.
Они включают параллельное соответствие ?


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

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

на то что АлексейК предложил, и посмотрите, что получиться!