Не могу присвоить рекордсет форме

Простоинтересующийся
Дата: 04.03.2008 17:00:18
Делаю так:
Dim RS As DAO.Recordset 'Это все работает
Dim CurDb As Database   'Это все работает
Dim wspCon1 As Workspace 'Это все работает
Set wspCon1 = DBEngine.Workspaces(0) 'Это все работает
Set CurDb = wspCon1.OpenDatabase("C:\A.mdb") 'Это все работает
Set RS = CurDb.OpenRecordset("tbl1") 'Это все работает
'RS.AddNew
'RS.Fields(1) = "Просто проба"
'RS.Update
 Do Until RS.EOF
    If RS.Fields(1) = "Просто проба" Then
       Me.Поле1.Value = RS.Fields(0)
    End If
    RS.MoveNext
 Loop
Set Me.Recordset = RS
Me.Поле1.ControlSource = RS.Fields(1)
RS.Close
Set RS = Nothing
Set CurDb = Nothing
Set wspCon1 = Nothing
End Sub
Получаю
Указанный объект не может являться значением свойства "Набор записей" (Recordset).
Простоинтересующийся
Дата: 04.03.2008 17:03:19
И ещё попутный вопрос, чт будет быстрее?
1. Открыть рекордсет с SELECT, где будет условие для отбора записей
2. Открыть Рекордсет=Таблицы, поиском по рекордсету выбрать нужные записи и присвоить их форме
Если последнее, то как можно наполнить пустой DAO рекордсет, значениямя, выбранными в результате поиска по первоначальному рекордсету!
RodionAT
Дата: 04.03.2008 17:24:40
Простоинтересующийся
И ещё попутный вопрос, чт будет быстрее?
1. Открыть рекордсет с SELECT, где будет условие для отбора записей
2. Открыть Рекордсет=Таблицы, поиском по рекордсету выбрать нужные записи и присвоить их форме
Если последнее, то как можно наполнить пустой DAO рекордсет, значениямя, выбранными в результате поиска по первоначальному рекордсету!

Не буду гадать что будет быстрее, но у формы (и соответственно поля ) ИСТОЧНИКОМ ДАННЫХ ДОЛЖНА БЫТЬ ТАБЛИЦА ИЛИ ЗАПРОС ИЛИ ИНСТРУКЦИЯ SQL/
Rivkin Dmitry
Дата: 04.03.2008 17:24:46
Начать с теории. Книжку открыть...
1. Похерить код (ннаахх)
2. Прилинуовать базу данных (C:\A.mdb). File->GetExternalData->Link Tables
3. Визардом построить форму с соурсом tbl1
4. Предпочтительно пользоваться запросами, а не поисками по рекордсету и не фильтрами по ним же. Особенно, если база данных серверная
Простоинтересующийся
Дата: 04.03.2008 18:23:08
Rivkin Dmitry
Начать с теории. Книжку открыть...
1. Похерить код (ннаахх)
2. Прилинуовать базу данных (C:\A.mdb). File->GetExternalData->Link Tables
3. Визардом построить форму с соурсом tbl1
4. Предпочтительно пользоваться запросами, а не поисками по рекордсету и не фильтрами по ним же. Особенно, если база данных серверная


Спасибо, но...

Rivkin Dmitry
2. Прилинуовать базу данных (C:\A.mdb). File->GetExternalData->Link Tables


Мне надо обращаться именно без линковки таблиц!

Rivkin Dmitry
4. Предпочтительно пользоваться запросами, а не поисками по рекордсету и не фильтрами по ним же. Особенно, если база данных серверная

Вы уверенны? Неужели при открытии dbOpenDynaset и использования метода Find у меня будет медленнее работать чем выполнения запроса, с формированным динамическим предикатом?
Анатолий ( Киев )
Дата: 04.03.2008 19:00:46
1. На какой строке ошибка?
Set Me.Recordset = RS - работает, начиная с А2000, если ваша БД - не ADP.
RS.Close - ЗРЯ
Set RS = Nothing - может быть и это зря. В примере у Гетса этой строчки нет.

2. В А97 это не работает.

3. Можно и не линковать. Подставить в RecordSource формы запрос вида:
SELECT...FROM...IN 'C:\A.mdb';
Вот если бы использовался другой MDW, или другой USER с паролем, или внутри транзакции, или синхронизировать 2 формы на одном источнике - тогда нужно подставляеть Recordset.