Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Rs.Close




Set db=Nothing

Использование SQL вместо DAO

Работать с наборами записей рекомендуется только втом случае, если нет другой альтернативы. Механизм баз данных Jet для манипуляций над данными и структурами данных оптимизирован на исполь­зование SQL. При каждой возможности вместо DAO следует использовать запросы SQL. Очень редко DAO работает быстрее, чем правильно составленный запрос. В отличие от DAO, запросы имеют план выпол­нения и используют преимущества индексации.

Если необходимо адресовать данные через объектную модель, рекомендуется вместо DAO использовать ADO. ADO — новый стандарт для манипуляций с адресацией данных и определением данных через объек­тную модель. Разработка дальнейших версий DAO прекращена, и никаких улучшений или расширений в будущем не последует.

Использование номеров индексов коллекций

При работе с коллекциями рекомендуется по возможности пользоваться их индексами. Номера индекса представляют собой внутреннюю идентификацию коллекции. Их использование приводит к гораздо более быстрому выполнению по сравнению с использованием любого другого свойства (например, имени) объекта коллекции. Приведенный ниже пример иллюстрирует два разных способа обращения к текущей базе данных. Ссылка на Currentdb() автоматически обновляет коллекции базы данных, что занимает определенное время. Первая ссылка (dbEngine(0)(0)) не обновляет коллекцию.

Set db=DBEngine(0)(0)

работает быстрее, чем

Set db=Currentdb()

Выражение

Set cntl=Forms!frmMyForm(O)

работает быстрее, чем

Set cntl=Forms![frmMyForm]![myControl]

Использование номера индекса элементаколлекции особенно полезно в циклах.

Создание быстрых циклов

При работе с циклами по коллекции рекомендуется использоватьFor...Each вместо For...Next. При работе с циклами по элементам управления на форме код

For Each cnti on fcm

Next

выполняется быстрее, чем простой циклFor...Each.

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

При использовании циклаFor—Next можно сэкономить время, не повторяя переменную в строке Next.

For i=l to 100

.... .необходимый код

Next

Преимущества такого подхода особенно заметны при использовании вложенных циклов. Кроме того, не следует пересчитывать предельное значение для строкиFor. Верхнее предельное значение должно быть установлено перед входом в цикл.

reccount=rs.recordcount/2

For i=l to reccount

Next

Если не установить заранее значение верхнего предела, цикл пересчитывает значение при каждом проходе, а это — потеря времени.

Исключение IIF() из кода

Не рекомендуется использовать в коде функцию IIF(). Данная функция перед выдачей результата должна оценить вес выражения, содержащиеся в ней. Стандартная конструкцияIf...Then...Else работает быстрее.

Построение конструкции Select Case

При использовании конструкции SelectCase наиболее часто встречающиеся случаи следует разместить в верхней части структуры. Поскольку проверяется каждый случай по порядку, такая компоновка позво­ляет обеспечить максимально быстрый выход из структуры.

Использование .Execute вместо RunSQL

По возможности следует избегать кодирования в стилеDoCmd. DoCmd представляет собой высший уровень кода VBA, — потомок макросов. В тех случаях, когда имеется альтернатива, ею следует обязательно воспользоваться.

Выражение


Поделиться:

Дата добавления: 2015-04-04; просмотров: 71; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты