Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61

Открытие табличной формы с "прокруткой" на последнюю запись

14.01.2018, 19:25. Показов 2652. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Совсем прикладной вопрос.
Имеем табличную форму (распределенная форма, динамический набор данных, источник данных - таблица).
Записей - несколько тысяч.
Есть фильтр при открытии. Есть фильтр для изменения представления данных.
Как сделать так, чтобы после открытия (и после применения фильтра изменяющего представление данных) активной становилась последняя запись табличной формы (с учетом фильтрации), и табличная форма "прокручивалась" вверх до последней записи (примерно как на скрине).

В свойствах формы - событие - Открытие:

Visual Basic
1
2
3
  Private Sub Form_Open(Cancel As Integer)
  DoCmd.RunCommand acCmdRecordsGoToLast ' на последнюю запись по фильтру
  End Sub
видимого эффекта не даёт...
Миниатюры
Открытие табличной формы с "прокруткой" на последнюю запись  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2018, 19:25
Ответы с готовыми решениями:

Открытие записи из табличной формы
Доброго времени суток. Старшие товарищи, помогите найти решение. В базе (Access 2016) создана форма с клиентами в табличном виде для...

Как отразить на форме последнюю запись с другой формы
Добрый день! сразу скажу, что Акцесс на уровне чайника, языков не знаю. Есть форма Трудовой договор, где можно выбрать сотрудника из уже...

Как оставить в поле формы последнюю просмотренную запись?
есть формы, с комбобоксами.при работе пользователь переключает значения в боксах. Как сделать так, чтобы последнее указанное значение...

29
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61
14.01.2018, 21:43  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mobile Посмотреть сообщение
lcp, зачем Вам эти макрокоманды.
Мы проверяем предложение Capi.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.01.2018, 21:46
Цитата Сообщение от lcp Посмотреть сообщение
Мы проверяем предложение Capi.
Мое предложение с рекордсетом функционально полный аналог предложения Capi, но без макрокоманд: сначала на последнюю запись, потом подняться на несколько записей, чтобы форма была "не пустая"
0
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61
14.01.2018, 21:46  [ТС]
mobile, Ваша подсказка про Form_Load() решила задачку на этапе загрузки формы.
Может после применения фильтра закрыть форму и опять её открыть. Тогда опять корректно сработет Form_Load()?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.01.2018, 21:48
Достаточно применить команду Me.Refresh на подходящем событии или кнопке
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
14.01.2018, 21:50
Цитата Сообщение от mobile Посмотреть сообщение
Понятия не имею. Не пользуюсь макрокомандами. Они только замедляют процесс. И в форме с данными не вижу им места.
Пусть замедляют.
Пока ведь не в этом причина неудачи ТС.
Смысл действий тот же.
Пока идея просто проверяется - встать на запись, отстоящую от конца на высоту экрана, и вернуться на последнюю запись.

Добавлено через 2 минуты
mobile,

пока писала, Вы практически то же самое написали в #22...
0
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61
14.01.2018, 21:50  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Пользуйтесь естественным инструментом - рекордсетом
С этого места по-подробнее... Где этот код разместить?
0
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61
14.01.2018, 22:08  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
lcp, зачем Вам эти макрокоманды. Пользуйтесь естественным инструментом - рекордсетом
Код, я так понял для Form_Open().
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Form_Open(Cancel As Integer)
' Me.Recordset.MoveLast ' íà ïîñëåäíþþ çàïèñü ïî ôèëüòðó
'  DoCmd.GoToRecord , , acGoTo, Me.RecordsetClone.RecordCount - 10
'  DoCmd.GoToRecord , , acLast
With Me.Recordset
  .MoveLast
  .Move -10
End With
End Sub
После применения фильтра активной становится 11 снизу запись. Но не происходит "прокрутки".
При этом перестала работать "прокрутка" Form_Load(), поскольку после неё срабатывает Form_Open().
Миниатюры
Открытие табличной формы с "прокруткой" на последнюю запись  
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
14.01.2018, 22:31
Цитата Сообщение от mobile Посмотреть сообщение
Не пользуюсь макрокомандами
Стала думать - почему я-то пользуюсь?
Вспомнила.
Есть такие пользователи, которые старые машины для вспомогательных целей применяют (хотя у них куча новых машин),
например, поставить базу для ночной медсестры только для простейшего просмотра и поиска.
И там у них 97-ой. Вот и приходилось использовать DoCmd.
И условную компиляцию, чтобы возможности более новых версий применять.
Надо их все-таки переориентировать тоже.

Добавлено через 7 минут
Цитата Сообщение от lcp Посмотреть сообщение
После применения фильтра активной становится 11 снизу запись. Но не происходит "прокрутки".
Добавьте .MoveLast после .Move -10.
Цитата Сообщение от lcp Посмотреть сообщение
При этом перестала работать "прокрутка" Form_Load(), поскольку после неё срабатывает Form_Open().
Порядок событий при открытии формы:

Open —> Load —> Resize —> Activate —> Current

"прокрутка" Form_Load() не потребуется, она выполнится в Open.
1
4 / 4 / 0
Регистрация: 17.10.2015
Сообщений: 61
14.01.2018, 22:53  [ТС]
Дамы и Господа, вы не поверите, но задачки решены. Спасибо mobile и Capi, вы как всегда на высоте!
Получилось не совсем так, как вы писали, но здесь, может быть, я сам не до конца понял ваши советы...

Подведу итоги для тех, кому это может пригодиться:
Открытие табличной формы (с фильтром) с "прокруткой" на последнюю запись:
в событии Загрузка
Visual Basic
1
2
3
Private Sub Form_Load()
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub
После применения на табличной форме другого фильтра - "прокрутка" и на последнюю запись:
в конце кода для применения фильтра
Visual Basic
1
2
3
With Me.Recordset
  .MoveLast
End With
Всё фильтруется, "прокручивается" и работает.
Ещё раз всем спасибо.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
14.01.2018, 23:39
lcp,

Хорошо, что получилось.
Я, конечно, активно мешала, хоть и из лучших побуждений...)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2018, 23:39

Открытие новой формы по клику в запись
Есть DBGrid c записями (фамилия, имя, отчество). Нужно чтобы по нажатию на выбранную запись открывалась форма, содержащая подробную...

Открытие формы с информацией при нажатии на запись в списке
всем привет! помогите пожалуйста с курсовой, а то застряла на этом моменте... вопрос такой: возможно ли сделать так, чтобы в форме...

WebBrowser открытие HTML-страницы с прокруткой на нужный тег <a>
Если делать это в одном HTML-файле, то сложностей нет &lt;a href=&quot;#Текст&quot;&gt;Ссылка на нижний текст&lt;/a&gt; &lt;-- Много много текста...

Открытие модальной формы; запись значений в ее элементы управления. VBA Access 7.0.
Добрый день. В проекте 2 формы. На одной размещена кнопка, по нажатию которой, пытаюсь открывать вторую форму в модальном режиме и...

Открытие формы или запроса путём клика на запись из списка в подчиненной форме
Есть база &quot;Автотранспортное предприятие&quot; в которой хочу переделать одну из форм по выдаче документов водителю. Есть список...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru