Что такое table-type Recordset?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
nouyana
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 29.01.2016 (Пт) 17:42

Что такое table-type Recordset?

Сообщение nouyana » 01.05.2016 (Вс) 8:10

У объекта Data есть свойство RecordsetType, одно из возможных значений которого - vbRSTypeTable (table-type Recordset). Что это за табличный тип?
Тот же тип (dbOpenTable) можно передать параметру Type метода OpenRecordset объекта DAO.Database.
Про другие типы нашёл описание в главе книги по ADO. По DAO - ничего не нашёл.
Может кому пригодится:
1. ForwardOnly - максимальная производительность. Курсор может двигаться только вперёд, а изменения, вносимые другими пользователями, видны не будут
2. Snapshot (согласно справочнику по DAO 3.5 - это аналог типа Static для ODBC) - то же самое, что и ForwardOnly, за исключением того, что курсор может двигаться во всех направлениях.
3. Dynaset (согласно справочнику по DAO 3.5 - это аналог типа Keyset для ODBC) - позволяет двигаться курсору в любом направлении, вдины только изменения существующих записей другими пользователями (удаление старых записей и добавление новых - не видны).

Есть предположение, что тип Table - это аналог типа Dynamic для ODBC - обеспечивает максимальные возможности, позволяет двигаться во всех направлениях, видны любые изменения в записях, производимые другими пользователями. Может кто-нибудь подтвердить или опровергнуть это? Есть ли какая-нибудь дополнительная информация по этому типу (медленный/быстрый, подводные камни)?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Что такое table-type Recordset?

Сообщение alibek » 01.05.2016 (Вс) 15:46

Lasciate ogni speranza, voi ch'entrate.

nouyana
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 29.01.2016 (Пт) 17:42

Re: Что такое table-type Recordset?

Сообщение nouyana » 02.05.2016 (Пн) 6:17

alibek писал(а):http://alibek09.narod.ru/vb/articles/dba/index.html


Спасибо тебе, добрый человек! Отличная статья!
Table-type Recordset - набор данных отображает базовую таблицу в БД, в которой вы можете добавлять, изменять, удалять данные. Применим только в рабочем пространстве Jet. К плюсам этого типа следует отнести невысокую ресурсоемкость, большую функциональность и возможность бинарного поиска в индексированных полях (свойство .Index для выбора текущего индекса и метод .Seek для поиска). Данные отображаются в порядке ввода (если таблица не имеет индекса или индекс не выбран) и отсортированными по индексу (если индекс выбран). Точного аналога в ODBC не имеет.


В статье не дописан раздел "Сравнение". Поделюсь своим опытом (тестировал на Pentium 4 - 3 Ghz, Память DIMM DDR PC3200 800 Mhz, Жёсткий диск WD Green, WinXP).
100 000 операций запись/удаление:
DAO 3.51 / Jet 4.0 / Access 97 = 15 сек
DAO 3.6 / Jet 4.0 / Access 97 = 17 сек
DAO 3.6 / Jet 4.0 / Access 2000 = 20 сек
ACEDAO 12.0 / ACE 12.0 / Access 2000 = 22 сек
ADO 2.1 / Jet.OLEDB.4.0 / Access 2000 = 1 мин 06 сек.

nouyana
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 29.01.2016 (Пт) 17:42

Re: Что такое table-type Recordset?

Сообщение nouyana » 02.05.2016 (Пн) 12:11

Потестировал Table-type и Dynaset с DAO 3.51 и Access 97. Результаты такие:
Table-type (12сек) быстрее на 17%, чем Dynaset (15сек на том же тесте, см. выше).
Однако, для Table-type нельзя передать SQL-запрос (только имя таблицы).


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 4

    TopList