Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с DoCmd.FindRecord

266
17 февраля 2004 года
mhaturov
901 / / 23.10.2003
Народ, кто знаком с VBA под Access?
Проблема такая. Есть некая форма, которая лежит на другой формае. К форме привязан запрос. В форме в полях отображаются данные из запроса.
В одно из полей выводятся ID записей из запроса. Нужно, чтобы после определённых осбытий фокус получала строка, имеющая определённый ID.
В переменную NewIndex, имеющую тип Variant (к сожалению, тут иначе никак :-(), сохраняется интересующий ID. Затем идёт код:
Код:
If NewIndex <> 0 And Not IsNull(NewIndex) Then
'МАХ Проверка на действительность полученного ID
   'МАХ делаю видимым столбец с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.Visible = True
   'МАХ Передаю фокус полю с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.SetFocus
   'МАХ Пытаюсь искать ID
    DoCmd.FindRecord NewIndex, acStart, False, acSearchAll, False, acAll, True
   'МАх делаю невидимым столбец с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.Visible = False
    'МАХ Передаю фокус на другое поле
    Form_VseZatrati.VseZatratiList.Controls!остаток.SetFocus
  End If

Так вот, на
DoCmd.FindRecord NewIndex, acStart, False, acSearchAll, False, acAll, True
среда выдаёт ошибку:
№2162
"Сбой макроса, связанного с одним из свойств текущего поля, из-за ошибки в аргументе команды НайтиЗапись"
Пробовал и
DoCmd.FindRecord CLng(NewIndex), acStart, False, acSearchAll, False, acAll, True
и
DoCmd.FindRecord Trim(Str(NewIndex)), acStart, False, acSearchAll, False, acAll, True
NewIndex со 100% вероятностью содержит ID, имеющийся "на форме", но вот как до него добраться?

Блин. Уже попробовал даже:
DoCmd.FindRecord Chr(34) & Trim(Str(NewIndex)) & Chr(34), acEntire, False, acSearchAll, False, acCurrent, True
НЕ ПОМОГАЕТ!!!
266
17 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Народ, кто знаком с VBA под Access?
Проблема такая. Есть некая форма, которая лежит на другой формае. К форме привязан запрос. В форме в полях отображаются данные из запроса.
В одно из полей выводятся ID записей из запроса. Нужно, чтобы после определённых осбытий фокус получала строка, имеющая определённый ID.
В переменную NewIndex, имеющую тип Variant (к сожалению, тут иначе никак :-(), сохраняется интересующий ID. Затем идёт код:
Код:
If NewIndex <> 0 And Not IsNull(NewIndex) Then
'МАХ Проверка на действительность полученного ID
   'МАХ делаю видимым столбец с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.Visible = True
   'МАХ Передаю фокус полю с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.SetFocus
   'МАХ Пытаюсь искать ID
    DoCmd.FindRecord NewIndex, acStart, False, acSearchAll, False, acAll, True
   'МАх делаю невидимым столбец с ID
    Form_VseZatrati.VseZatratiList.Controls!f_id.Visible = False
    'МАХ Передаю фокус на другое поле
    Form_VseZatrati.VseZatratiList.Controls!остаток.SetFocus
  End If

Так вот, на
DoCmd.FindRecord NewIndex, acStart, False, acSearchAll, False, acAll, True
среда выдаёт ошибку:
№2162
"Сбой макроса, связанного с одним из свойств текущего поля, из-за ошибки в аргументе команды НайтиЗапись"
Пробовал и
DoCmd.FindRecord CLng(NewIndex), acStart, False, acSearchAll, False, acAll, True
и
DoCmd.FindRecord Trim(Str(NewIndex)), acStart, False, acSearchAll, False, acAll, True
NewIndex со 100% вероятностью содержит ID, имеющийся "на форме", но вот как до него добраться?

Блин. Уже попробовал даже:
DoCmd.FindRecord Chr(34) & Trim(Str(NewIndex)) & Chr(34), acEntire, False, acSearchAll, False, acCurrent, True
НЕ ПОМОГАЕТ!!!


Всё. Спасибо XTremAll'у!
Во-первых. параметры указал какие-то я "левые". Желательно:
DoCmd.FindRecord NewIndex,, False,, True
А во-вторых, рекомендуется скрывать по максимуму форм, которые поверх той, в которой поиск, могут оказаться...

258
17 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Лично я редко пользуюсь DoCmd.FindRecord потому что для этого обязательно надо чтобы форма имела фокус. Что бывает очень не удобно. Мне часто надо перейти к записе в неактивной подч. форме в соотв. с действиями пользователя в гл. форме.

Универсальное решение - через закладки, Bookmark.
Dim rst As DAO.Recordset

Set rst=Me.RecordsetClone
rst.FindFirst .... на нужную запись
Me.Bookmark = rst.Bookmark
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог