Консультация № 173627
24.10.2009, 17:09
25.00 руб.
0 2 1
Доброго времени!
Access 2003 VBA
Есть форма с подчиненной формой в виде таблицы. Мне нужно определить номер записи, которая на момент наступления какого либо события выбрана в подчиненной таблице, а так же програмно выбрать запись с произвольным номером в подчиненной форме. Или проще говоря как с помощью команды docmd.GoToRecord переместиться в подчиненной форме на определенную запись. (или для подчиненной формы есть другая команда?)
Помогите, пожалуйста. Бьюсь с этим вопросом уже три недели. Ничего не получается.

Обсуждение

Неизвестный
27.10.2009, 03:31
общий
это ответ
Здравствуйте, fomservl.
Номер записи можно получить через свойство формы CurrentRecord:
Код:

'в модуле главной формы.... подчиненная_форма_Таблица1 - собственно подчиненная форма))
Private Sub ОбластьДанных_DblClick(Cancel As Integer)
MsgBox Me.подчиненная_форма_Таблица1.Form.CurrentRecord
End Sub


выбрать запись с произвольным номером в подчиненной форме можно с помощью метода Recordset.Move:

Код:

'в том же модуле формы
'выбирает запись с номером 3
Private Sub ОбластьДанных_Click()
'Me.подчиненная_форма_Таблица1.Form.CurrentRecord = 3 'это не сработает, для формы в режиме таблицы, CurrentRecord - только для чтения

With Me.подчиненная_форма_Таблица1.Form.Recordset
.MoveFirst
.Move 3 - 1 'отнимаем 1 т.к. MoveFirst уже выбирает запись с номером 1...
End With

End Sub


Успехов.
з/ы вообще-то, порядковый номер записи, не самый лучший способ идентифицировать запись... Не знаю подробностей Вашей задачи, но может Вам стоит обратить внимание на Bookmark?
Неизвестный
27.10.2009, 08:20
общий
Здравствуйте, HookEst!
Действительно, через Bookmark наверное будет правильно. Попытаюсь объяснить свою задачу..
Есть форма "Крановый узел" и подчиненная форма " Запорная_арматура_подчиненная_форма1". В подчиненной форме я просматриваю записи, которые относятся к выбранному крановому узлу. Но смотреть записи в подчиненной форме немного неудобно, поэтому я вывожу при помощи нажатия на кнопку другую форму(Крановый узел_таблица) в виде таблицы. Таблица содержит те-же записи, которые в подчиненной форме. Перемещаюсь на ту же запись, которая выбрана в подчиненной таблице при помощи инструкции
DoCmd.FindRecord Forms ("Крановый _ узел").Запорная_арматура_подчиненная_форма1.Form.[Запорная арматура]
.[Запорная арматура] – это поле в подчиненной таблице.
Теперь если я закрываю [Крановый узел_таблица] и обновляю содержимое подчиненной таблицы(обновлять необходимо, потому-что я могу добавить новую запись или отсортировать записи или просто перейти на другую запись), то в подчиненной таблице становится выбранной запись №1, а мне нужна та-же запись, которая была выбрана в [Крановый узел_таблица] .
Если это возможно – объясните пожалуйста как пользоваться Bookmark для перемещения по записям подчиненной таблицы.
Может быть сам принцип организации форм неверный? Но почему-то придумалось именно так…
Форма ответа