CDaoRecordset:: AAbrir

virtual void Open (int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions= 0 );
lançar (CDaoException, CMemoryException);

virtual void Open (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
lançar (CDaoException, CMemoryException);

virtual void Open (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
lançar (CDaoException, CMemoryException);

Parâmetros

nOpenType

Um dos valores a seguir:

lpszSQL

Um ponteiro de Cadeia de caracteres que contém um dos seguintes:

nOptions

Uma ou mais das opções listadas abaixo. O valor padrão é 0. Valores possíveis são os seguintes:

pTableDef

 Um ponteiro para um objeto CDaoTableDef . Esta versão é válida apenas para conjuntos de registros do tipo tabela. Ao usar essa opção, o ponteiro de CDaoDatabase usado para construir o CDaoRecordset não é usado; em vez disso, o banco de dados no qual reside a definiçãodetabela é usado.

pQueryDef

Um ponteiro para um objeto de CDaoQueryDef . Esta versão só é válida para tipo dynaset e conjuntos de registros do tipo snapshot. Ao usar essa opção, o ponteiro de CDaoDatabase usado para construir o CDaoRecordset não é usado; em vez disso, o banco de dados no qual reside a definiçãodeconsulta é usado.

Observações

Você deve chamar esta função membro para recuperar os registros para o conjunto de registros. Antes de chamar Abrir, você deve criar o objeto recordset. Há várias maneiras para fazer isso:

Para a versão de Abrir que usa o parâmetro lpszSQL , uma vez que o co&njunto de registros é aberto, você pode recuperar registros de várias maneiras. A primeira opção é ter funções DFX no seu DoFieldExchange. A segunda opção é usar dinâmico ligação chamando a função de membro GetFieldValue . Essas opções podem ser implementadas separadamente ou em combinação. Se eles são combinados, você precisará passar na instrução SQL-se na chamada para Abrir. Para obter mais informações sobre vinculação dinâmica, consulte o artigo DAO Recordset: vinculação de registros dinamicamente no Guia do programador do Visual C++.nbsp;

Quando você usar a segunda versão de Abrir onde você transmitir em um objeto de CDaoTableDef , as colunas resultantes será disponíveis para você ligar via DoFieldExchange e o mecanismo DFX e/ou ligar dinamicamente via GetFieldValue.

&Notanbsp;  Você só pode chamar Abrir usando um objeto CDaoTableDef para conjuntos de registros do tipo tabela.

Quando você usa a versão terceira de Abrir onde você transmitir em um objeto de CDaoQueryDef , que a consulta será executada, e as colunas resultantes serão disponível para você ligar via DoFieldExchange e o mecanismo DFX, e/ou ligar dinamicamente via GetFieldValue.

&Notanbsp;  Você só pode chamar Abrir usando um objeto CDaoQueryDef para tipo dynaset e conjuntos de registros do tipo snapshot.

Para a primeira versão do aberto que usa o parâmetro lpszSQL , registros são selecionados com base em critérios mostrados na tabela a seguir.

Valor do parâmetro lpszSQL Registros selecionados são determinados por Exemplo
NULO A Cadeia de caracteres retornada por GetDefaultSQL.
Uma lista separada por vírgulas de um ou mais tabledefs e/ou nomes definiçãodeconsulta. Todas as colunas representadas no DoFieldExchange.
"Cliente"
Selecione lista de coluna FROM tabela-lista As colunas especificadas de tabledef(s) especificado e/ou querydef(s).
"Selecione CustId, CustName
DO cliente"

O procedimento normal é passar NULL para Abrir; Neste caso, Abrir chama GetDefaultSQL, uma função de membro substituíveis que ClassWizard gera ao criar um CDaoRecordset-derivado classe. Este valor dá os nomes tabledef(s) e/ou querydef que você especificou na ClassWizard. Em vez disso você pode especificar outras informações no parâmetro lpszSQL.

Tudo o que você passar, Abrir constrói uma Cadeia de caracteres final do SQL para a consulta (Cadeia de caracteres pode ter cláusulasBY SQL onde e ordem, acrescentadas à cadeia lpszSQL que você passou) e, em seguida, executa a consulta. Você pode examinar a Cadeia de caracteres construída chamando GetSQL após chamado aberto .

Os membros de dados de campo da sua classe de conjunto de registros são acoplados às colunas de dados selecionados. Se todos os registros são retornados, o primeiro registro se torna o registro atual.

Se você desejar definir opções para o conjunto de registros, como um filtro ou classificar, definir m_strSort ou m_strFilter após você criar o objeto recordset, mas antes você chamar Abrir. Se você deseja atualizar os registros no conjunto de registros após o conjunto de registros já está aberto, chamar RepetirConsulta.

Se você chamar Abrir em um tipo dynaset ou um recordset do tipo snapshot, ou se a fonte de dados refere-se a uma instrução SQL ou uma tabledef que representa uma tabela anexada, você não pode usar dbOpenTable para o argumento de tipo; Se o fizer, MFC lança uma exceção. Para determinar se um objeto tabledef representa uma tabela anexada, criar um objeto de CDaoTableDef e chamar a função de membro GetConnect.

Use o sinalizador dbSeeChanges se quiser interceptar as alterações feitas por outro usuário ou outro programa no seu computador quando você está editando ou excluindo o mesmo registro. Por exemplo, se dois usuários começar a editar o mesmo registro, o primeiro usuário para chamar a função de membro Update terá êxito. Quando a atualização é chamado pelo segundo usuário, um CDaoException é lançada. Da mesma forma, se o segundo usuário tenta chamar Excluir para excluir o registro, e ele já foi alterado pelo usuário primeiro, um CDaoException ocorre.

Normalmente, se o usuário recebe esta CDaoException durante a atualização, seu código deve atualizar o conteúdo dos campos e recuperar os valores modificados recentemente. Se a exceção ocorre no processo de exclusão, seu código pode exibir os dados do registro novos para o usuário e uma mensagem indicando que os dados foi alterado recentemente. Neste ponto, seu código pode solicitar uma confirmação de que o usuário ainda deseja excluir o registro.

Dica Uso a Avançar-only rolagem (dbForwardOnly) opção para melhorar o desempenho quando seu aplicativo faz uma única passagem através de um conjunto de registros aberto a partir de uma fonte de dados ODBC.

Para obter mais informações sobre abrir conjuntos de registros, consulte os artigos DAO Recordset: Criando conjuntos de registros e DAO: Criando, abrindo e fechando objetos DAO no Guia do programador do Visual C++. Para obter informações relacionadas, consulte o tópico "Método OpenRecordset" na Ajuda do DAO.

Visão geral de CDaoRecordsetMembros de classe | Gráfico de hierarquia

Co&nsulte tambémnbsp;CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index