powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
8 сообщений из 8, страница 1 из 1
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316715
JinP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть форма на основе запроса, записи в запросе никем и никогда не сортируются. Мне требуется сделать так, чтобы по двойному клику на мышку в текущее поле попадали значения из этого же поля предыдущей записи. Для случая, когда идет последовательный ввод новых данных я это при помощи кода сделал. А вот, если юзеру нужно воспользоваться этой функцией среди уже введенных записей, то возникает проблема. Просто не понятно как быть. При последовательном вводе данных, т.е. при работе с последней вводимой записью формы я использую следующий код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub Pole1_DblClick(Cancel As Integer)

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strPole1 As String

Set db = CurrentDb()

If Me.CurrentRecord >  1  Then

Set rs = db.OpenRecordset( "SELECT * FROM tblTable1 WHERE tblTable1.PoleOtbora Is Null ORDER BY tblTable1.PoleDate;" , dbOpenDynaset)

On Error Resume Next

rs.MoveLast
On Error GoTo  0 

strPole1 = rs![Pole1]
Me.Pole1 = strPole1

End If

End Sub

Тут вроде все нормально работает.
Как сделать чтобы двойной клик вставлял поле из предыдущей записи и внутри формы? Пытался приспособить FindRecord - ничего не получилось. Me.MovePrevios - такого и в помине нет. Причем Me.CurrentRecord совпадает с соответствующей по порядку записью в рекордсете rs. Но как к ней обратиться? rs.FindRecord - такого ведь тоже нет...

Что бы такое придумать или где посмотреть? На форуме все честно прошерстил, но ничего не нашел.
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316723
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То же самое делает комбинация "Ctrl-Э". Можно попробовать отсылать ее sendkey'ем.

А можно примерно так (проверять не буду):

dim rs as dao.recordset

set rs = me.recordsetclone
on error goto EndProc
rs.bookmark=me.bookmark
rs.moveprevious
me.ActiveControl.value=rs.fields(me.activecontrol.controlsource)
EndProc:
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316732
JinP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что такое "Ctrl-Э"??? Чего-то я давил и так и эдак, ничего не получается.
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316820
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть возможность сливать данные из рекордсета в массив и с массивом работать. получается двумерный массив с параметрами номер строки номер поля и значение - значение поля рекодсета

Dim MYARR

MYARR = me.recordset.getrows
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316890
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гео правильно сказал, только я такую комбинацию клавиш называю Ctrl+'
' - это одиночный апостроф, т.е. клавиша <" ' э>
Работает при включении любой раскладки клавиатуры
У меня версия Access XP (на предыдущих не знаю действует ли)

Имхо, программировать ничего не нужно, достаточно сказать пользователю (написать в справке) о такой возможности и все. Ведь юзеры используют буфер обмена, и никто его не программирует...хотя наверное есть извращенцы
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316907
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub MyField_DblClick(Cancel As Integer)
Dim val As Variant
DoCmd.GoToRecord acActiveDataObject, , acPrevious
val = Me.Controls( "MyField" ).Value
DoCmd.GoToRecord acActiveDataObject, , acNext
Me.Controls( "MyField" ).Value = val
End Sub

(Variant можно заменить на тип нужного поля)
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316915
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
incold писал:хотя наверное есть извращенцы
...которые вместо Ctrl + C нажимают кнопку "Копировать"? ;)
Та же разница :)
...
Рейтинг: 0 / 0
Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
    #32316940
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice
Изврещенцы - я имел ввиду программистов, которые программируют в своих разработках те функции, которые встроены в операционную систему, или в оболочку на которой ведется разработка.

Например: есть функция копирования/вставки в/из буфер(а) обмена (комбинацией клавиш, либо кнопкой на панели инструментов).
Некоторые рисуют свои кнопки для реализации того же.

То же самое с этой задачей, зачем программировать то, что уже реализовано в аксесе?!
Даже с точки зрения юзера, ведь юзер не мышкой набирает текст, а на клавиатуре. Т.е. если программировать двойной клик, то юзер пишет текст, переходит на новую запись, тянется к мыши, два раза кликает, обратно лезет к клавиатуре и продолжает набирать следующую запись. И все это вместо того, что при наборе текста один раз нажать комбинацию клавиш (к тому же очень важный момент - не нужно переключать раскладку клавиатуры).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вытащить предыдущую запись в форме. Честно просмотрел форум, но не нашел чего требуется.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]