Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Спозиционировать форму на конкретную запись ?  [new]
RomaH
Member

Откуда:
Сообщений: 141
Ситуация - есть таблица, "работники" организации
Суть задачи - на форме есть поле со списком в котором выбираем работника,
надо что бы при выборе работника форма, источником данных у которой является таблица "работники" показывала именно запись выбранного работника для её последующего изменения
26 дек 05, 09:37    [2208260]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
RomaH
Member

Откуда:
Сообщений: 141
что-то типа этого

К сообщению приложен файл. Размер - 0Kb
26 дек 05, 10:04    [2208327]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18308
создай форму
на ней поле со списком (типа что у тебя есть)
на ней подформу с реквизитами

на событие поля "после обновления" подставляешь подформе источниу строк в котором производится отбор данных.
26 дек 05, 10:10    [2208344]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
SNiL
Member

Откуда: Ставропольский край
Сообщений: 12347
Или так:
в модуль формы добавь
Private Sub ТвойСписок_AfterUpdate()
    ' Поиск записи, соответствующей этому элементу управления.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[УсловиеОтбора] = " & Str(Nz(Me![ТвойСписок], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
26 дек 05, 15:54    [2209846]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
NevaMind
Guest
SNiL
Или так:
в модуль формы добавь
Private Sub ТвойСписок_AfterUpdate()
    ' Поиск записи, соответствующей этому элементу управления.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[УсловиеОтбора] = " & Str(Nz(Me![ТвойСписок], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub


Везде рекомендуют задавать типы переменных более конкретно, т.е. не
'Dim rs As Object' a
'Dim rs As DAO.Recordset '(ADODB.Recordset)
26 дек 05, 16:01    [2209864]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
SNiL
Member

Откуда: Ставропольский край
Сообщений: 12347
NevaMind

Везде рекомендуют задавать типы переменных более конкретно, т.е. не
'Dim rs As Object' a
'Dim rs As DAO.Recordset '(ADODB.Recordset)


Абсолютно согласен, но:
1. Думаю, что для человека не знающего как пользоваться стандартным мастером, установка References будет ещё одной проблемой :)
2. Не сказано, какой Access (похоже 2003, но всё же...). В 97 по умолчанию вроде DAO, в XP - ADO, а в 2003 - я не знаю, нету у меня его.
3. Если mdb - то тамже рекомендуют DAO использовать, для adp - ADO
Вооот
Так что думаю, пока человеку заморачиваться не стоит, похоже других проблем полно :)
26 дек 05, 21:31    [2210839]     Ответить | Цитировать Сообщить модератору
 Re: Спозиционировать форму на конкретную запись ?  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Ну все это понятно, а может просто воспользуется товарищь мастером создания поля со списком: и выберет пунктик в мастере "поиск записи в форме на основании...." и все что здесь написали само сгенерируется.
Согласен с SNil, что не стоит заморачивать голову начинающему, а то посыпяться вопросы, как и куда вставить этот код, почему это так и т.д.

При использовании мастера он сам сгенерироет какое поле использовать в качестве ключевого. Боюсь, что данные коды могут несработать из-за нашего незнания структуры таблицы, надеюсь понимаем различие в кодах:

Private Sub ПолеСоСписком54_AfterUpdate()
    ' Поиск записи, соответствующей этому элементу управления.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Номер] = '" & Me![ПолеСоСписком54] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Private Sub ПолеСоСписком54_AfterUpdate()
    ' Поиск записи, соответствующей этому элементу управления
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Код] = " & str(Nz(Me![ПолеСоСписком54], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Хотя может я не прав. Но использование мастера позволит избежать всяких там подформ...
26 дек 05, 22:18    [2210930]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить