powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как грамотней пробегаться по записям!
6 сообщений из 6, страница 1 из 1
Как грамотней пробегаться по записям!
    #32060844
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2000, mdb, DAO
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim dbs As DAO.Database
Set dbs = CurrentDb
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim rst As DAO.Recordset
strSQL =  "PARAMETERS [CONTRACT_ID:] Integer; "  & _
   "SELECT * FROM CONTRACT WHERE CONTRACT_ID = [CONTRACT_ID:] ; " 

Set qdf = dbs.CreateQueryDef( "", strSQL)
qdf(" CONTRACT_ID: ") = CNTR_ID

Set rst = qdf.OpenRecordset(dbOpenSnapshot)

If rst.RecordCount = 0  Then
  MsgBox "No records found! "
Else
  MsgBox " Contract found"
  rst.MoveFirst
  While not rst.EOF
    rst.MoveNext
  Wend

  rst.MoveFirst
  While not rst.EOF
    rst.MoveNext
  Wend
End If


В примере я два раза пробегаюсь по всем записям
Но, может быть придется и больше!
Внимание, вопрос:
У меня на каждом моменте rst.MoveNext будут данные запрашиваться с сервера или они уже все в оперативке будут висеть?
...
Рейтинг: 0 / 0
Как грамотней пробегаться по записям!
    #32060875
Buxxter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как по мне, то присоздании объекта RecordSet выполняется запрос к БД и все записи помещаются в этот RecordSet. Так что должно быть они с БД вытягиваются все. Или вернее, сколько скажешь, столько и закачает.
P.S. А что имеется в виду под названием "Сервер". Если присутствуют слова mdb и CurrentDB, то что это? Но это не важно. К сути вопроса не имеет отношения.
...
Рейтинг: 0 / 0
Как грамотней пробегаться по записям!
    #32060877
ALK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALK
Гость
бегай хоть сто раз.
снимок данных у тебя в оперативке.

только это не так быстро как с массивом.

кстати как альтернатива если нужно многократно обрабатывать набор записей можно предварительно его загнать в массив
...
Рейтинг: 0 / 0
Как грамотней пробегаться по записям!
    #32060890
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Buxxter:
По поводу - сервер, не сервер!
И впрямь, какая разница. Хотелось просто узнать где данные находятся?! :)

To ALK:
Дык я вот и думал загонять в массив или нет?! :)
...
Рейтинг: 0 / 0
Как грамотней пробегаться по записям!
    #32060943
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из хелпа для А97:

Объект Recordset типа статического набора записей содержит необновляемый набор записей, которые используются для просмотра данных в основной таблице или таблицах.

Для создания объекта Recordset типа статического набора записей следует применить метод OpenRecordset к открытой базе данных, к другому объекту Recordset типа динамического или статического набора записей или к объекту QueryDef.
Статический набор записей может содержать поля из одной или из нескольких таблиц базы данных. В рабочей области Microsoft Jet статический набор записей является необновляемым. В рабочей области ODBCDirect допускается обновление статического набора записей, если такая операция поддерживается драйвером ODBC.

При создании статического объекта Recordset в память из файлов .mdb загружаются значения полей всех типов кроме полей Memo и объектов ActiveX (Long Binary). Изменения в основных таблицах, сделанные после загрузки набора записей, не отражаются в содержимом статического объекта Recordset. Для того чтобы привести статический объект Recordset в соответствие с измененными данными следует вызвать метод Requery или повторно выполнить метод OpenRecordset.

Порядок записей в статическом объекте Recordset не подчиняется каким-либо определенным правилам. Для того чтобы упорядочить данные следует при создании объекта Recordset использовать инструкцию SQL с предложением ORDER BY. Этот способ используют также при отборе записей с помощью фильтра. Применение данного приема вместо использования свойств Filter и Sort или вместо проверки значений в каждой записи обычно обеспечивает более быстрый доступ к данным.

Объект Recordset типа статического набора записей обычно создаются быстрее и обеспечивают более быстрый доступ к данным, чем объекты Recordset типа динамического набора записей, поскольку содержащиеся в них записи сохраняются либо в оперативной памяти, либо в каталоге временных файлов на диске (см. переменную среды TEMP). В результате от ядра базы данных Microsoft Jet не требуется блокировка страниц или выполнения других сетевых операций. Однако объекты Recordset типа статических наборов записей требуют больше ресурсов, чем объекты Recordset типа динамического набора записей, поскольку в оперативную память загружается целая запись.

----------------------------------------------------
Если есть возможность, RecordSet полностью грузится в основную память. Иначе часть данных подгружается с диска. Насколько я понял
...
Рейтинг: 0 / 0
Как грамотней пробегаться по записям!
    #32061045
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то так! Сэм, восэм!
А на самом деле спасибо! :) Будем надеятся что для A2000 ничего не поменялось!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как грамотней пробегаться по записям!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]