Ненулевое значение, если объект CRecordset был успешно открыт; в противном случае 0 Если CDatabase::Open (если под названием) возвращает 0.
Параметры
nOpenType
Примите значение по умолчанию, AFX_DB_USE_DEFAULT_TYPE, или использовать одно из следующих значений из перечисленияOpenType:
CRecordset::dy&nasetnbsp; Набор записей с двунаправленным прокрутки. Членский состав и упорядочивание записей определяется при открытии набора записей, но изменения, внесенные другими пользователями к значениям данных являются видимыми после операции выборки. Динамические подмножества данных являются также известен как курсоры наборы записей.
CRecordset::s&napshotnbsp; Статический набор записей с двунаправленным прокрутки. Членство и порядок записей определяются при открытии набора записей; значения данных определяются при записи будут выбраны. Изменения, внесенные другими пользователями не отображаются, пока не будет закрыт и затем снова открыт набор записей.
CRecordset::dy&namicnbsp; Набор записей с двунаправленным прокрутки. Изменения, внесенные другими пользователями в членство, упорядочение и данные значения являются видимыми после операции выборки. Обратите внимание, что многие драйверы ODBC не поддерживают этот тип набора записей.
CRecordset::forwardO&nlynbsp; Только для чтения записей с только вперед прокрутки.
Для класса CRecordsetзначение по умолчанию — CRecordset::snapshot. Значение по умолчанию механизм позволяет мастера Visual C++ для взаимодействия с ODBC CRecordset и DAO CDaoRecordset, которые имеют различные значения по умолчанию.
Для получения дополнительных сведений об этих типах записей, см. статью Набора записей (ODBC) в Руководстве Visual C++ программист. Соответствующая информация содержится в статье «С помощью блока и Прокручиваемые курсоры» в справочнике программиста ODBC SDK.
Осторожно Если запрашиваемый тип не поддерживается, платформа создает исключения.
lpszSQL
Указателем на строку с одним из следующих действий.:
Нуль -указатель.
Имя таблицы.
Инструкция SQL, выберите (при необходимости с предложением SQL где или ORDER ).
Оператор CALL , указание имени предопределенного запроса (хранимая процедура). Будьте внимательны, не вставлять пробелы между фигурная скобка и ВЫЗЫВАТЬ ключевое слово.
Для получения дополнительных сведений об этой строке см. в таблице и обсуждение роли ClassWizard в рубрике примечания.
Примечание Порядок столбцов в результирующем наборе должен соответствовать порядку RFX или переопределить вызовы функций Bulk RFX в функции DoFieldExchange или DoBulkFieldExchange.
dwOptions
Битовая маска, который можно указать комбинацию значений, перечисленных ниже. Некоторые из них являются взаимно исключающими. Значением по умолчанию является none.
CRecordset::nonenbsp; Задать параметры не. Это значение параметра является взаимоисключающим с всеми другими ценностями. По умолчанию набор записей может обновляться с редактировать или удалять и позволяет добавление новых записей с Add&New. Возможности обновления зависит от источника данных, а также указанный параметр nOpenType . Оптимизация для массовых дополнений не доступен. Выборка строк не будут реализованы. Удаленные записи не быть пропущены во время навигации набора записей. Закладки не доступны. Реализована автоматическая грязный поле Проверка.
CRecordset::appendOnlynbsp; Не позволяют редактировать или удалять набор записей. Разрешить только Add&New . Этот параметр является взаимоисключающим с CRecordset::readOnly.
CRecordset::readO&nlynbsp; Откройте набор записей как доступное только для чтения. Этот параметр является взаимоисключающим с CRecordset::appendOnly.
CRecordset::optimizeBulkAdd Используйте подготовленную инструкцию SQL для оптимизации, добавив множество записей в одно время. Применяется только в том случае, если вы не используете функцию интерфейса API ODBC SQLSetPos для обновления набора записей. Первое обновление определяет, какие поля помечены как изменившиеся. Этот параметр является взаимоисключающим с CRecordset::useMultiRowFetch.
CRecordset::useMultiRowFetch Реализация пакетной выборки строк разрешить несколько строк для извлечения в операции единой выборки. Это является дополнительным, предназначенных для повышения производительности; Однако блочный обмен полей записей не поддерживается ClassWizard. Этот параметр является взаимоисключающим с CRecordset::optimizeBulkAdd. Обратите внимание, что если указать CRecordset::useMultiRowFetch, то параметр CRecordset::noDirtyFieldCheck будет включен автоматически (двойная буферизация не будет доступен); на только наборы записей параметр CRecordset::useExtendedFetch будет включена автоматически. Дополнительные сведения о групповой выборки строк, найти в статье набор записей: выборка записей (ODBC) в Руководстве по Visual C++ программист.
CRecordset::skipDeletedRecords Пропустите все удаленные записи при навигации по набору записей. Это будет замедляться в некоторых относительной выборках. Этот параметр не поддерживается на только наборы записей. Обратите внимание, что CRecordset::skipDeletedRecords похож на водителя по упаковке, что означает, что удаленные строки удаляются из набора записей. Однако если ваш драйвер пакеты записи, то он будет пропускать только те записи, которые вы удаляете; Он не будет пропускать записи удалены другими пользователями при открытом набор записей. CRecordset::skipDeletedRecords будет пропускать строки, удаленные другими пользователями.
CRecordset::useBookmarks Могут использовать закладки на набор записей, если эта функция поддерживается. Закладки медленный поиск данных, но повысить производительность для навигации данных. Не действительно на только наборы записей. Для получения дополнительных сведений см. статью набор записей: закладки и абсолютной позиции (ODBC) в Руководстве по Visual C++ программист.
CRecordset::noDirtyFieldChecknbsp; Выключите автоматическое грязный поля, проверка (двойной буферизации). Это увеличит производительность; Однако необходимо вручную пометить поля как грязный, вызвав SetFieldDirty и метод SetField&Null -членов функций.Обратите внимание, что двойной буферизации в классе CRecordset похож на двойной буферизации в классе CDaoRecordset. Однако в CRecordset, нельзя включить двойную буферизацию на отдельных полях; Вы не включите ее для всех полей или отключить его для всех полей. Для получения дополнительных сведений о двойной буферизации, см. статью Дао обмен полей записей DAO: двойная буферизация записей в Руководстве по Visual C++ программист. Обратите внимание, что если задан параметр CRecordset::useMultiRowFetch, то CRecordset::noDirtyFieldCheck будет включена автоматически; Однако SetFieldDirty и метод SetFieldNull не могут использоваться на наборы записей, реализации групповой выборки строк.
CRecordset::executeDirect Не использовать подготовленную инструкцию SQL. Для повышения производительности укажите этот параметр, если функции-члена Requery никогда не будет вызван.
CRecordset::useExte&ndedFetchnbsp; Реализация SQLExtendedFetch вместо того, чтобы SQLFetch. Это предназначено для реализации пакетной выборки строк на только наборы записей. Если задан параметр CRecordset::useMultiRowFetch на только набор записей, то CRecordset::useExtendedFetch будет включен автоматически.
CRecordset::userAllocMultiRowBuffers Пользователь выделит буферы хранения для данных. Используйте этот параметр в сочетании с CRecordset::useMultiRowFetch , если вы хотите выделить свой собственный хранения; в противном случае рамки автоматически выделит необходимые хранения. Для получения дополнительных сведений см. статью набор записей: выборка записей (ODBC) в Руководстве по Visual C++ программист. Обратите внимание, что указание CRecordset::userAllocMultiRowBuffers без указания CRecordset::useMultiRowFetch приведет к неудачной утверждение.
Примечания
Необходимо вызвать эту функцию-член для запуска запроса, определенные в наборе записей. Прежде чем предоставить открытым, необходимо создать объект набора записей.
Этот набор записей подключение к источнику данных зависит как вы собрать набор записей перед вызовом открытым. Если объект CDatabase передается в конструктор набора записей, который не подключен к источнику данных, эта функция-член использует GetDefaultConnect для попытке открыть объект базы данных. Если значение NULL передается в конструктор набора записей, конструктор создает объект CDatabase для вас, и открытые попытки подключить объект базы данных. Для подробной информации о закрытия набора записей и связь этих различных обстоятельствах смотрите тесного.
Примечание Доступ к источнику данных через объект CRecordset всегда разделяла. В отличие от класса CDaoRecordset нельзя использовать объект CRecordset для открытия источника данных с монопольным доступом.
При вызове открытым, запрос, обычно инструкцию SQL выберите , выбирает записи, основанные на критериях, указанных в следующей таблице.
Значение параметра lpszSQL
Выбранных записей, определяется
Пример
ЗНАЧЕНИЕ NULL
Строка, возвращаемая GetDefaultSQL.
Имя таблицы SQL
Все столбцы списка таблицы в DoFieldExchange или DoBulkFieldExchange.
«Клиента»
Имя предопределенного запроса (хранимая процедура)
Столбцы запроса определяется вернуться.
«{call OverDueAccts»}
- Выберите список столбцов из таблицы лист
Указанные столбцы из указанной таблицы.
«ВЫБРАТЬ CustId, CustName от клиента»
! Предупреждение Будьте внимательны, не вставить дополнительные пробелы в строке SQL. Например если вставить пробел между фигурная скобка и ВЫЗЫВАТЬ ключевое слово, MFC неправильно интерпретировать строку SQL как имя таблицы и включить его в инструкцией SELECT, который приведет к созданию исключения . Аналогично, если ваш предопределенный запрос использует параметр output, не вставлять пробелы между фигурных скобок и '?' символ. И наконец не добавьте пробел перед фигурная скобка в инструкции CALL или выберите ключевое слово в выбрать заявления.
Обычная процедура является передать NULLоткрытым; в этом случае открытый вызывает GetDefaultSQL. Если вы используете производного класса CRecordset , GetDefualtSQL дает имена таблицы, указанной в ClassWizard. Вместо этого можно указать другие сведения в параметре lpszSQL.
Все, что вы проходите, открытый создает окончательную строку SQL для запроса (строка может иметь предложения SQL где и ORDER BY , добавится к строке lpszSQL вы прошли), а затем выполняет запрос. Сконструированный строку можно проверить путем вызова GetSQL после вызова открытым. Для дополнительных сведений о том, как набор записей создает инструкцию SQL и выбирает записи, обратитесь к статье набор записей: как наборы записей выберите записей (ODBC) в Руководстве по Visual C++ программист.
Члены данных полей класса набора записей привязаны к столбцам данных, выбранных. Если возвращаются все записи, первая запись становится текущей записи.
Если требуется задать параметры для набора записей, таких как фильтра или сортировки, их укажите после создания объекта набора записей, но перед вызовом открытым. Для обновления записей в наборе записей, после того, как набор записей уже открыт, вызовите Requery.
В следующих примерах кода показаны различные формы открытый вызов.
/ / rs является CRecordset или
/ / Производного от CRecordset объект
/ / Открыть rs, используя инструкцию SQL по умолчанию
/ / осуществить закладки и выключить
/ / Проверка автоматической грязный поля
RS.Открытый (CRecordset::snapshot, &NULL,
nbsp; CRecordset::useBookmarks |
CRecordset::noDirtyFieldCheck);
/ / Пройти полный инструкции SELECT
/ / и открытыми как динамическое подмножество
RS.Открыть (CRecordset::dynaset,
_T ("select L_Name от клиента"));
/ / Принимают все значения по умолчанию
RS.(Открытый)