Снимок
Обновлен: Ноябрь 2007
Моментальный снимок — это набор записей, отображающий статическое представление данных в том виде, в котором они существовали на момент создания моментального снимка. При открытии снимка и переходу ко всем записям, набор записей и их значения не изменятся, пока снимок не будет построен заново с помощью вызова метода Requery.
Примечание. |
---|
Данный раздел относится к классам ODBC библиотеки MFC. Если используются классы DAO библиотеки MFC, а не классы ODBC, описание наборов записей типа снимка см. в описании метода CDaoRecordset::Open. |
Можно создавать моментальные снимки с возможностью записи или снимки только для чтения, используя классы базы данных. В отличие от динамического подмножества данных обновляемый моментальный снимок не отражает изменения значений записей, сделанных другими пользователями, но отражает обновления и удаления, выполненные собственной программой. Добавленные в снимок записи становятся видимыми только после вызова метода Requery.
Совет. |
---|
Моментальный снимок является статическим курсором ODBC. Статические курсоры не получают строку данных, пока пользователь не переместится к этой записи. Чтобы получать записи незамедлительно, необходимо переместиться к концу набора записей и затем перейти к первой записи, которую следует отобразить. Обратите внимание, что перемещение в конец набора записей приводит к дополнительным издержкам и может снизить производительность. |
Моментальные снимки наиболее полезны, когда требуется, чтобы данные не изменялись во время операций, например при создании отчета или выполнении расчетов. Но так или иначе источник данных может значительно отличаться от снимка, поэтому время от времени его следует обновлять.
Поддержка моментальных снимков основана на использовании библиотеки курсоров ODBC, предоставляющей статические курсоры и позиционированные обновления (необходимые для возможности обновления данных) для всех драйверов уровня 1. Для этого DLL-библиотека курсоров должна быть загружена в память. При конструировании объекта CDatabase и вызове его функции-члена OpenEx необходимо указать параметр CDatabase::useCursorLib параметра dwOptions. При вызове функции-члена Open библиотека курсоров загружается по умолчанию. Если вместо моментальных снимков используются динамические подмножества данных, нет необходимости загружать библиотеку курсоров.
Снимки доступны, только если библиотека курсоров ODBC была загружена при создании объекта CDatabase или используемый драйвер ODBC поддерживает статические курсоры.
Примечание. |
---|
Для некоторых драйверов ODBC моментальные снимки (статические курсоры) могут не поддерживать возможность обновления. Поддерживаемые типы курсоров и поддерживаемые ими типы одновременного доступа см. в документации драйвера. Чтобы снимки поддерживали обновление данных, необходимо загрузить библиотеку курсоров в память при создании объекта CDatabase. Дополнительные сведения см. в разделе ODBC. Библиотека курсоров ODBC. |
Примечание. |
---|
Если требуется использовать и моментальные снимки, и динамические подмножества данных, необходимо основываться на двух разных объектах CDatabase (двух отдельных подключениях). |
Дополнительные сведения о свойствах моментальных снимков, общих со всеми наборами записей, см. раздел Набор записей (ODBC). Дополнительные сведения об ODBC и моментальных снимках*,* включая библиотеку курсоров ODBC, см. раздел ODBC.