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
Проблема такая. Есть некая форма, которая лежит на другой формае. К форме привязан запрос. В форме в полях отображаются данные из запроса.
В одно из полей выводятся ID записей из запроса. Нужно, чтобы после определённых осбытий фокус получала строка, имеющая определённый ID.
В переменную NewIndex, имеющую тип Variant (к сожалению, тут иначе никак :-(), сохраняется интересующий ID. Затем идёт код:
Код:
Так вот, на
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
НЕ ПОМОГАЕТ!!!
Цитата:
Originally posted by mhaturov
Народ, кто знаком с VBA под Access?
Проблема такая. Есть некая форма, которая лежит на другой формае. К форме привязан запрос. В форме в полях отображаются данные из запроса.
В одно из полей выводятся ID записей из запроса. Нужно, чтобы после определённых осбытий фокус получала строка, имеющая определённый ID.
В переменную NewIndex, имеющую тип Variant (к сожалению, тут иначе никак :-(), сохраняется интересующий ID. Затем идёт код:
Так вот, на
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
НЕ ПОМОГАЕТ!!!
Народ, кто знаком с 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
'МАХ Проверка на действительность полученного 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
А во-вторых, рекомендуется скрывать по максимуму форм, которые поверх той, в которой поиск, могут оказаться...
Универсальное решение - через закладки, Bookmark.
Dim rst As DAO.Recordset
Set rst=Me.RecordsetClone
rst.FindFirst .... на нужную запись
Me.Bookmark = rst.Bookmark