Консультация № 180383
21.10.2010, 12:51
0.00 руб.
0 14 2
Здраствуйте!
У меня такой проблем с база данных на Access:
1)Есть форма, каторая показываеть список приборов, у ее подформа у который визуализороватся все даты проверки конкретного прибора!
2) Необходимо при каждом выборе конкретного прибора, указатель записи у подформы застать у последной даты проверки, т. е. на последном записе!
Все эксперименты с вставки кода VBA на Form_pribor и Form_pribor_proverka на разные собития пока не дает резултата!
вставлял вот такие :
Private Sub form_load()
Me.Recordset.MoveLast
End Sub

Private Sub Form_AfterUpdate()
Me![Form_pribor_proverka].Form.Requery
Form_pribor_proverka.Recordset.MoveLast
DoCmd.GoToRecord , , acLast
End Sub
соответно у подформы и главная форма, но в первом случае (Me.Recordset.MoveLast) , дает резултат только на первом записе т.е. при началном загрузке подформой, а потом указател у подформе при выборе следующем запписе(прибора) снова указывает первом записе у подформы!
Шлите у кого есть идеи на trtanev@abv.bg или trusev@neochim.bg !
Заранее спосибо!

Обсуждение

Неизвестный
21.10.2010, 13:31
общий
это ответ
Здравствуйте, Tancho!
А если не мудрить, а просто в запросе указать сортировку по дате DESC т.е по убыванию и тогда последняя запись станет первой и на нее будет смотреть указатель.
2
Неизвестный
21.10.2010, 15:57
общий
Нет!Вопрос не в этом - показать последная проверка, а надо показать -ПОСЛЕДНИЙ ЗАПИС!
ЗДЕСЬ ЗАРыТА СОБАКА - ПОНИМАЕТЕ!!!
Все таки спосибо о сопричастием!
давно
Профессионал
848
1596
21.10.2010, 16:04
общий
попробуйте использовать событие формы
Private Sub Form__Activate()
Неизвестный
21.10.2010, 17:52
общий
Tancho:
В подчиненой форме

Private Sub Form_Load()
Dim rst As DAO.Recordset
Set rst = Me.Recordset
rst.MoveLast
End Sub
Неизвестный
21.10.2010, 18:17
общий
Спосибо о предложение PsySex , но это пробовал - не дает результат!Как между впрочем и Private Sub Form_AfterUpdate()
и Private Sub Form_BeforeUpdate(Cancel As Integer)
Неизвестный
21.10.2010, 20:20
общий
Tancho:
Цитата: 339173
надо показать -ПОСЛЕДНИЙ ЗАПИС!

Ну а как Вы определяете что запись была "последней"? по какому критерию? Вот по тому критерию и стройте запрос с сортировкой или условием.
давно
Академик
320937
2216
21.10.2010, 20:30
общий
Tancho:
Добрый вечер! Если Вы выложите проект на сервер RFPRO и дадите ссылку в мини-форум, наглядней будет.
Неизвестный
21.10.2010, 23:31
общий
Здраствуйте lamed !
Вот ссылку https://rfpro.ru/upload/3372 , когда откроете форма 'pribor' и выберите кажды последующий запис, указател записи в подформе 'pribor_proverka'
(резултати от проверката) надо указывать последний запис!
Неизвестный
22.10.2010, 13:14
общий
[q=320937][/q]Ну а как Вы определяете что запись была "последней"? по какому критерию?

Здраствуйте Victor Pyrlik!
Зачем же туда критерий??!! Подформ изображает все проверки данного прибора - у одного 5 проверок, у другова 10, у третего 7!Для кождой проверок - 1 запис!
Они могут сортированый по чем угодно - дата проверок, имени проверителя, кода заключения, типа проверок!Дела в том что по умолчанию указател записи Table or Query из которого заполняется подформ - ВСЕГДА указываеть ПЕРВОЙ запис, но потребител хочеть он указывал ПОСЛЕДНЙ!!
В этом ВСЕ ДЕЛО!!
давно
Академик
320937
2216
22.10.2010, 15:17
общий
Tancho:
Так проовали?
1. Создайте поле НомерЗаписи, автоматически (счетчик) или "вручную" инкрементируете значение этого поля с каждой добавляемой записью
2. Создайте запрос с ... ORDER BY НомерЗаписи DESC
3. Стройте подформу
давно
Профессионал
848
1596
22.10.2010, 15:45
общий
это ответ
Здравствуйте, Tancho!
В событии Private Sub btnSaveRecord_Click() формы Form_pribor перед строкой Exit Sub добавьте строку Form_pribor_proverka.Recordset.MoveLast
Неизвестный
22.10.2010, 15:46
общий
при создании таблиц, в которых хранятся однотипные записи создание ключевого поля ОБЯЗАТЕЛЬНО. это может быть или поле типа "счетчик" - он автоматически увеличивается на 1 при создании новой записи, или типа длинного целого, но тогда увеличение нужно делать вручную. тогда можно однозначно определить, какая из записей была добавлена последней . в том числе если запись с более ранней датой была добавлена позже. сортировка тогда производится по - proverka DESC, kod DESC - .
у меня во всех используемых таблицах есть ключевые поля типа "длинное целое" , по которым я однозначно могу определить конкретную запись.
Неизвестный
22.10.2010, 17:38
общий
Здраствуйте всех!
Спосибо для сопричастии!
Разумееться что есть ключевого поля - оно даже составное - цех+ инвинтарный номер+заводский номер определяет еднозначно о какой прибор идеть слова!
Как уже сказал у разных приборов
1)количество проверок - разных!;
2)Для каждой проверок одделной запис;
3) Есть заявок, которы по цех+ инвинтарный номер+заводский номер , отбирает всех проверок о конкретном приборе;
4) В подформе 'pribor_proverka' выходить всех проверок о выбраной прибор;
5) Указатель записи устанавливается на первом записи!;
Если у подформе стоить код :

Private Sub Form_Load()
Me.Recordset.MoveLast
End Sub
При выборе ПЕРВыМ приборе, указотель записи у подформе останавливаеться на ПОСЛЕДНОМ ЗАПИСИ, но потом при выборе КАЖДОМ записе
останавливаеться снова на ПЕРВыМ записе! В ЭТОМ И ПРОБЛЕМА!!
ВСЕ ЭТО БУДЕТЕ ПОНЯТЬ ЕСЛИ СКАЧИТЕ ПРИМЕР ИЗ ссылку https://rfpro.ru/upload/3372
Так что проблем не в том что отбрат какой то из проверок с помощи разных сортировок, разных там индиксов и т.д.,
а ВСЕГДА УКАЗАТЕЛЬ У ПОДФОРМ 'pribor_proverka' УКАЗАЛ ПОСЛЕДНИЙ ЗАПИС , при выбор каком там быть прибор - как отсортированы проверок - без значении!
Неизвестный
22.10.2010, 18:38
общий
Tancho:
на главной форме разместите 2 кнопки
в модуле формы
Option Compare Database
Public rst1 As DAO.Recordset

Private Sub Form_Load()
Set rst1 = Me.Recordset
End Sub
Private Sub Кнопка6_Click()
Me.rst1.MovePrevious

Form_пф.rst_last
End Sub

Private Sub Кнопка7_Click()
Me.rst1.MoveNext
Form_пф.rst_last
End Sub


модуль подчиненной формы

Option Compare Database

Public rst As DAO.Recordset
Public Sub rst_last()
Set rst = Me.Recordset
rst.MoveLast

End Sub

Private Sub Form_Load()
Set rst = Me.Recordset
rst.MoveLast
End Sub

на главной форме можно разместить и др. кнопки и соответственно сделать их первая и последняя запись.
Форма ответа