Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
 
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 17:19     Переход к последней записи в подчиненной форме #1
В таблице можно сделать так, чтобы записи отображались по убыванию ключевого поля. А можно ли так сделать в одиночной форме? Смысл в том, чтобы "под рукой" всегда была запись, внесенная последней. Догадываюсь, что вместо этого имеет смысл поколдовать со счётчиком, но страшно
AdAgent
Объявления
17.02.2010, 17:19     Переход к последней записи в подчиненной форме
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2010, 17:19     Переход к последней записи в подчиненной форме
Посмотрите здесь:

Поиск в основной форме по записи в подчиненной форме MS Access
MS Access повторяющие записи в подчиненной форме
Запрет на создание записи в подчиненной форме при отсутствии значения в поле главной формы( или в этой же подчиненной форме) Аксесс 2003 MS Access
Переход на новую запись в подчиненной форме MS Access
MS Access Переход в подчиненной форме
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 17:54     Переход к последней записи в подчиненной форме #2
по открытию формы
Код Visual Basic
1
DoCmd.GoToRecord , , acLast
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 19:22  [ТС]     Переход к последней записи в подчиненной форме #3
Спасибо! Правда, это не работает в подчиненной форме. Нашла вот что:

Недостатки DoCmd.GoToRecord и достоинства CodeContextObject
Пара камней в огород DoCmd
Как-то мне понадобилось перейти к последней записи в подчиненной форме. Перейти к последней записи можно разными способами, простейший – это вот эта команда: DoCmd.GoToRecord , , acLast. Вот с подчиненненными формами есть нюанс – нужно вызывать ее в обработчике события или методе подчиненной формы. В моем случае события не подходили, метод было реализовывать влом и очень хотелось реализовать это на главной форме.

Поэтому пришлось написать свою функцию. Благодаря тому, что функция принимает ссылку на форму, а не имя, то можно ее использовать для любой формы, подчиненной, созданной при помощи DoCmd.OpenForm или оператора New.

Код Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub CM_FormGoToLastRecord(Optional ByRef frm As Form = Nothing)
' перейти на последнюю запись
' frm можно не передавать, в этом случае она будет получена при помощи CodeContextObject
On Error GoTo Err_
 
    If frm Is Nothing Then
        Set frm = CodeContextObject
    End If
 
    If frm Is Nothing Then Exit Sub
 
    Dim rst As DAO.Recordset
 
    Set rst = frm.RecordsetClone
    If Not rst.EOF Then rst.MoveLast
    frm.Bookmark = rst.Bookmark
 
Exit_:
    Exit Sub
Err_:
    mc_Log.MC_LogErr ("CM_FormGoToLastRecord()")
    Resume Exit_:
End Sub
mc_Log.MC_LogErr ("FormGoToLastRecord()") - функция, которая логирует ошибку в текстовом файле.

CodeContextObject
В процедуре CM_FormGoToLastRecord() используется такая штука, как CodeContextObject, которое в справке называют свойством. Это свойство позволяет получить ссылку на объект, в рамках которого выполняется данный код. Если вызвать процедуру CM_FormGoToLastRecord() в событии подчиненной формы, то CodeContextObject выдаст ссылку на подчиненную форму. Этот же способ использует DoCmd.GoToRecord, когда не указывается имя объекта.



но не поняла, откуда эту процедуру нужно вызывать...
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 19:35     Переход к последней записи в подчиненной форме #4
Цитата Сообщение от Musette Посмотреть сообщение
но не поняла, откуда эту процедуру нужно вызывать...
а ты ее можешь вообще в модулях записать, ведь ты передаешь в нее любую форму, а вызывать ее в подчиненной (при открытии)

Добавлено через 38 секунд

Не по теме:

приятно общаться с человеком, который хочет учиться

Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 19:56  [ТС]     Переход к последней записи в подчиненной форме #5
Цитата Сообщение от CyberБурундукЪ
а вызывать ее в подчиненной (при открытии)
так вот и не могу сообразить - в каком событии её вызывать? подчиненная форма не открывается - значит, не в открытии... в "загрузке" тоже не работает.

Цитата Сообщение от CyberБурундукЪ
приятно общаться с человеком, который хочет учиться
)) спасибо, хотеть-то хочу, но получается пока не очень...
AdAgent
Объявления
17.02.2010, 19:56     Переход к последней записи в подчиненной форме
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 20:00     Переход к последней записи в подчиненной форме #6
Цитата Сообщение от Musette Посмотреть сообщение
подчиненная форма не открывается - значит, не в открытии
ошибка ваша как раз открывается, вместе с главной, причем даж раньше главной

Добавлено через 24 секунды
т.е. в открытии и вызывай
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 20:06  [ТС]     Переход к последней записи в подчиненной форме #7
не, я проверяла, не работает. то есть если её отдельно открывать, как форму - работает, а из главной - нет.
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 20:27     Переход к последней записи в подчиненной форме #8
Musette, попробуй еще так.
у подчиненной формы, как обьекта главной формы есть 2 события Вход и Выход
(Enter и Exit)
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 20:54  [ТС]     Переход к последней записи в подчиненной форме #9
увы-увы... ещё и при переходе по записям подчиненной формы выдаёт ошибку.
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 21:00     Переход к последней записи в подчиненной форме #10
Musette, слушай, все можно сделать гораздо проще
ведь данные в подчиненной форме можно сортировать

Добавлено через 1 минуту
и если есть идентификатор, то можно сортировать по нему
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 21:13  [ТС]     Переход к последней записи в подчиненной форме #11
в смысле, написать id_... desc в поле "порядок сортировки"? попробовала, не работает
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 21:17     Переход к последней записи в подчиненной форме #12
Musette, скинь еще раз свою базу в формате А2000
и имя формы
седня или завтра гляну
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
17.02.2010, 21:33  [ТС]     Переход к последней записи в подчиненной форме #13
спасибо! скину завтра, т.к. в моей "анонимной" базе эту процедуру вообще не удалось запустить - ругается на "rst As DAO.Recordset", хотя в рабочей базе всё нормально...
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
17.02.2010, 21:39     Переход к последней записи в подчиненной форме #14
Цитата Сообщение от Musette Посмотреть сообщение
ругается на "rst As DAO.Recordset"
а там надо в референсах подключить библиотеку
References
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
18.02.2010, 00:08  [ТС]     Переход к последней записи в подчиненной форме #15
Ага, спасибочки, подключила.
Поняла, в чём была проблема Если прописать вызов процедуры в открытии и/или загрузке формы, то сортировка будет выполняться только в первично отфильтрованных записях подчиненной формы. При дальнейшем переходе по записям главной формы процедура больше не действует.
У меня в рабочей базе главная форма была отсортирована по убыванию через acLast, поэтому я сразу перемещалась на последнюю запись формы, а процедура сортировала только подчинённые данные первой записи, поэтому я и результата не видела...
Куда же прописать вызов, чтобы сортировалась каждая подформа?
Вложения
Тип файла: rar base.rar (43.0 Кб, 45 просмотров)
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
18.02.2010, 00:24     Переход к последней записи в подчиненной форме #16
Musette, вот что с тобой сделать, за то что ты Бурундука не слушалась?
эт конечно не совсем то что хочется, но начало есть. я в главной форме кой-чо написал (обработку события вхождения в подформу)
base.rar
DoCmd.GotoRecord
правда к последней записи переходит только по входу в подформу, но я подумал и добавил при обработке события главной формы текущая_запись установку фокуса на подформу. терь все красиво
Musette
Форумчанин
8 / 8 / 1
Регистрация: 30.01.2010
Сообщений: 54
18.02.2010, 00:40  [ТС]     Переход к последней записи в подчиненной форме #17
CyberБурундукЪ, спасибище!!!
БурундукЪ
Форумчанин
 Аватар для БурундукЪ
9087 / 2486 / 37
Регистрация: 17.02.2009
Сообщений: 10,365
18.02.2010, 00:42     Переход к последней записи в подчиненной форме #18
на здоровье. приходи еще
Сергей1980
Форумчанин
 Аватар для Сергей1980
448 / 280 / 10
Регистрация: 17.12.2009
Сообщений: 742
21.02.2010, 17:32     Переход к последней записи в подчиненной форме #19
Можно кстати вообще не заморачиваться с макросами и фокусами и просто на открытие формы повесить следующую процедуру (если надо чтобы в починенной форме при открытии главной курсор ставился на последнюю запись)

Private Sub Form_Open(Cancel As Integer)
Me.подчиненная_форма.Form.Recordset.MoveLast
End Sub

И Усе..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2015, 06:49     Переход к последней записи в подчиненной форме
Еще ссылки по теме:

Переход по записям из главной формы в не подчиненной форме MS Access
MS Access Переход по записям в форме только до последней записи и возвращение к нулевой
Переход к последней записи подчиненной табличной формы при активации главной формы MS Access

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
texnik-san
шапоклякистка 8-го дня
 Аватар для texnik-san
323 / 197 / 36
Регистрация: 26.06.2015
Сообщений: 471
28.06.2015, 06:49     Переход к последней записи в подчиненной форме #20
Цитата Сообщение от Musette Посмотреть сообщение
При дальнейшем переходе по записям главной формы процедура больше не действует.
А чтобы действовала при переходах по записям - вешать нужно на событие Current главной формы. При этом с события Open можно уже убрать - Current все равно произойдет для первой же записи.
Yandex
Объявления
28.06.2015, 06:49     Переход к последней записи в подчиненной форме
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Задать вопрос
Опции темы

Текущее время: 18:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2015, vBulletin Solutions, Inc.
Яндекс.Метрика