Операция не поддерживается для объектов данного типа

FindFirst
Дата: 17.02.2016 21:12:23
Dim db As DAO.Database
Dim rst As Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("tblPath")
rst.MoveFirst
rst.FindFirst "[PathName] = 'Base'"
rst.Edit
rst.Fields("PathName") = "Base"
rst.Fields("PathValue") = "D:\DataBase"
rst.Fields("PathNote") = "Путь к базе данных программы"
rst.Update
rst.Close


Собственно на строке rst.FindFirst "[PathName] = 'Base'" отладка и останавливается с ошибкой Операция не поддерживается для объектов данного типа. Что не так?
guest_rusimport
Дата: 17.02.2016 21:15:52
FindFirst,
Set rst = db.OpenRecordset("select * from tblPath")
guest_rusimport
Дата: 17.02.2016 21:22:10
FindFirst,
или так 1183872
mds_world
Дата: 17.02.2016 22:35:05
Возможно ошибка в том, что не указан тип рекордсета и он по умолчанию ADODB. Пробуйте
Dim rst As DAO.Recordset
Анатолий ( Киев )
Дата: 18.02.2016 10:23:48
Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("select * from tblPath")
Еще совет - Метод rst.FindFirst может и не найти запись, поэтому рекомендуется проверить rst.NoMatch.
studieren
Дата: 19.02.2016 12:56:01
mds_world
Возможно ошибка в том, что не указан тип рекордсета и он по умолчанию ADODB. Пробуйте
Dim rst As DAO.Recordset

Подозреваю, что проблема не в этом, иначе вот в этой строке произошла бы ошибка:
Set rst = db.OpenRecordset("tblPath")

Наверное проблема вот в этом.
автор
If you open a Recordset in a Microsoft Access workspace and you don't specify a type, OpenRecordset creates a table-type Recordset, if possible. If you specify a linked table or query, OpenRecordset creates a dynaset-type Recordset.

Возможно "table-type Recordset" для данной таблице (надо внимательно посмотреть на свойства таблицы) не поддерживает операцию FindFirst.
studieren
Дата: 19.02.2016 12:58:22
FindFirst
Dim db As DAO.Database
Dim rst As Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("tblPath")
rst.MoveFirst
rst.FindFirst "[PathName] = 'Base'"
rst.Edit
rst.Fields("PathName") = "Base"
rst.Fields("PathValue") = "D:\DataBase"
rst.Fields("PathNote") = "Путь к базе данных программы"
rst.Update
rst.Close


Собственно на строке rst.FindFirst "[PathName] = 'Base'" отладка и останавливается с ошибкой Операция не поддерживается для объектов данного типа. Что не так?

Зачем Вам MoveFirst и FindFirst? Не проще ли сразу отфильтровать?
Set rst = db.OpenRecordset("SELECT * FROM tblPath WHERE [PathName] = 'Base'")

Ну и потом проверить свойство RecordCount.
mds_world
Дата: 19.02.2016 15:54:28
studieren
mds_world
Возможно ошибка в том, что не указан тип рекордсета и он по умолчанию ADODB. Пробуйте
Dim rst As DAO.Recordset


Подозреваю, что проблема не в этом, иначе вот в этой строке произошла бы ошибка:
Set rst = db.OpenRecordset("tblPath")
Конечно ошибка будет. Но на этапе выполнения. А FindFirst у ADO-рекордсета даст ошибку на этапе компиляции. До ошибки Set rst = db.OpenRecordset(...) дело просто не дойдет.