перемещение по записям

Kis-kis
Дата: 21.11.2006 10:17:08
Есть форма на ней кнопки перехода, обновления, добавления и удаления, а также подчиненная табличная форма. Необходимо, чтобы при изменении текущей записям в подчиненной форме, эта запись отображалась в главной форме в соответствующих полях. А при перемещении по записям с помощью кнопок перехода, менялась текущая запись в подчиненной форме (аналогично с доваблением, обновлением и удалением). (см.рис.)
mds_world
Дата: 21.11.2006 10:25:09
Измените Источник строк (RowSource) главной формы так, чтобы условием было значение подчиненной формы. Или сделайте фильтр на гл.форму с тем же условием.
Kis-kis
Дата: 21.11.2006 11:08:35
Спасибо! Но возникает проблема: управление записями подчиненной формы с помощью кнопок на главной форме. И если поставить фильтр или источник строк, то при внесении изменений в поля на главной форме они не будут вноситься в подчиненную форму!
mds_world
Дата: 21.11.2006 11:13:56
Kis-kis
Спасибо! Но возникает проблема: управление записями подчиненной формы с помощью кнопок на главной форме. И если поставить фильтр или источник строк, то при внесении изменений в поля на главной форме они не будут вноситься в подчиненную форму!
Вы ничего не говорили как у вас взаимодействуют формы между собой. Насколько я понял из вашего вопроса, вложенная подформа никак не зависит от данных на главной.
Kis-kis
Дата: 21.11.2006 11:24:21
Извините! Источником данных для главной и вложенной формы является одна и та же таблица, которую надо редактировать (добавлять, удалять, изменять записи). Кнопки уже работают для полей на главной форме, надо чтобы и для подчиненной работали. А также изменения в подчиненной форме изменяли данные в главной.
Karfaqen
Дата: 21.11.2006 11:31:50
Kis-kis
Кнопки уже работают для полей на главной форме, надо чтобы и для подчиненной работали. А также изменения в подчиненной форме изменяли данные в главной.
А синхронизация позиционирования формы и субформы вас не устроит? Например, в Form_Current каждой формы смотрите - если коды текущей записи в формах отличаются, то позиционируетесь во второй форме по коду из текущей.
Kis-kis
Дата: 21.11.2006 12:54:53
Спасибо за совет! Частично работает (управляется из под формы) :-)! А из главной формы нет :-(
Пишу на OnCurrent в главной форме:
Dim cod As Long
cod = Forms![главная форма].Form.CurrentRecord
If Forms!главная форма![под форма].Form.CurrentRecord <> cod Then
DoCmd.GoToRecord acDataForm, "под форма", acGoTo, cod
'Forms!главная форма![под форма].Form.CurrentRecord = cod
End If

Выдается ошибка о том, что под форма не открыта!
Karfaqen
Дата: 21.11.2006 14:32:48
Kis-kis
DoCmd.GoToRecord acDataForm, "под форма", acGoTo, cod
Выдается ошибка о том, что под форма не открыта!
Во-первых, DoCmd.GoToRecord выполняет переход в открытых формах, а когда некая форма у вас используется в качестве суб-формы, она не входит в список открытых форм.

Во-вторых, использование свойства CurrentRecord для синхронизации позиций возможно лишь для форм, имеющих абсолютно идентичные источники. И даже если у вас две формы основаны на одной таблице/запросе, то CurrentRecord у них может не совпадать, если применялась фильтрация или сортировка записей.

Поиск записей правильнее производить по значениям уникальных кодов (поле идентификатора записи, например счетчик), используя например методы и свойства RecordSetClone формы.
Kis-kis
Дата: 21.11.2006 15:19:45
Счетчика в таблице нет, есть только уникальное ключевое поле IDBuilding. Я беру значение из поля соответствующего текущему IDBuilding, затем с помощью RecordsetClone.FindFirst ищу такую же запись в подформе, говорит нет такого метода :(
Если не трудно, можете написать кусок работающего кода?
rok
Дата: 21.11.2006 15:42:21
Kis-kis
Извините! Источником данных для главной и вложенной формы является одна и та же таблица

А зачем на один источник две формы?