Compartilhar via


CDaoRecordset::em aberto

Você deve chamar essa função de membro para recuperar os registros para o conjunto de registros.

virtual void Open(
   int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
   LPCTSTR lpszSQL = NULL,
   int nOptions = 0 
);
virtual void Open(
   CDaoTableDef* pTableDef,
   int nOpenType = dbOpenTable,
   int nOptions = 0 
);
virtual void Open(
   CDaoQueryDef* pQueryDef,
   int nOpenType = dbOpenDynaset,
   int nOptions = 0 
);

Parâmetros

  • nOpenType
    Um dos seguintes valores:

    • dbOpenDynaset   Um conjunto de registros do tipo dynaset com rolagem bidirecional.Este é o padrão.

    • dbOpenTable   Um conjunto de registros do tipo tabela com rolagem bidirecional.

    • dbOpenSnapshot   Um conjunto de registros do tipo instantâneo com rolagem bidirecional.

  • lpszSQL
    Um ponteiro de seqüência de caracteres que contém um dos seguintes procedimentos:

    • A NULO ponteiro.

    • O nome de um ou mais tabledefs e/ou querydefs (separados por vírgulas).

    • A SQL SELECT statement (optionally with a SQL WHERE or ORDER BY clause).

    • Uma consulta passagem.

  • nOptions
    Uma ou mais das opções listadas abaixo.O valor padrão é 0.Os valores possíveis são sistema autônomo segue:

    • dbAppendOnly   Você só pode acrescentar novos registros (conjunto de registros de tipo dynaset).Essa opção significa literalmente registros só podem ser acrescentados.As classes de banco de dados ODBC do MFC têm uma opção de acrescentar somente que permite que os registros a serem recuperados e acrescentado.

    • dbForwardOnly   O conjunto de registros é um instantâneo de rolagem encaminhar-only.

    • dbSeeChanges   Gera uma exceção se outro usuário está mudando a dados que você está editando.

    • dbDenyWrite   Outros usuários não é possível modificar ou adicionar registros.

    • dbDenyRead   Outros usuários não podem exibir registros (conjunto de registros de tipo de tabela).

    • dbReadOnly   Você pode apenas visualizar registros; outros usuários possam modificá-los.

    • dbInconsistent   Atualizações divergente são permitidas (conjunto de registros de tipo dynaset).

    • dbConsistent   Somente atualizações consistentes são permitidas (conjunto de registros de tipo dynaset).

    Observação:

    As constantes dbConsistent and dbInconsistent são mutuamente exclusivo.Você pode usar um ou Outros, mas não ambas em uma determinada instância de em aberto.

  • pTableDef
    Um ponteiro para um CDaoTableDef objeto.Esta versão é válida somente para conjuntos de registros do tipo tabela.Ao usar essa opção, a CDaoDatabase ponteiro 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 CDaoQueryDef objeto.Esta versão é válido somente para o tipo dynaset e conjuntos de registros do tipo instantâneo.Ao usar essa opção, a CDaoDatabase ponteiro usado para construir o CDaoRecordset não é usado; em vez disso, o banco de dados no qual reside a definiçãodeconsulta é usado.

Comentários

Antes de chamar em aberto, é preciso construir o objeto de conjunto de registros.Há várias maneiras para fazer isso:

  • Quando você construir o objeto de conjunto de registros, passar um ponteiro para um CDaoDatabase objeto que já está em aberto.

  • Quando você construir o objeto de conjunto de registros, passar um ponteiro para um CDaoDatabase objeto que não está em aberto. O conjunto de registros é aberto um CDaoDatabase objeto, mas não será fechada-lo quando o objeto de conjunto de registros é fechado.

  • Quando você construir o objeto de conjunto de registros, passar um NULO ponteiro.O objeto conjunto de registros chama GetDefaultDBName Para obter o nome do arquivo .mdb do Microsoft acesso para em em aberto. O conjunto de registros, em seguida, abre um CDaoDatabase objeto e mantém ele em aberto, desde que o conjunto de registros seja aberta. Quando você telefonar Fechar no conjunto de registros, a CDaoDatabase objeto também é fechado.

    Observação:

    Quando abre o conjunto de registros a CDaoDatabase objeto, ele abre a fonte de dados com acesso não exclusivo.

Para obter a versão do em aberto que usa o lpszSQL parâmetro, uma vez em aberto o conjunto de registros, você poderá recuperar registros de várias maneiras. A primeira opção é ter funções DFX no seu DoFieldExchange. A segunda opção é usar ligação dinâmica chamando o GetFieldValue função de membro. Essas opções podem ser implementadas separadamente ou em conjunto.Se eles são combinados, você terá que passar o demonstrativo SQL sozinho na telefonar para em aberto.

Quando você usa a segunda versão do em aberto onde você passar um CDaoTableDef o objeto, as colunas resultantes estarão disponível para BIND DoFieldExchange e o mecanismo DFX e/ou BIND dinamicamente via GetFieldValue.

Observação:

Você só pode telefonar em aberto using a CDaoTableDef objeto para conjuntos de registros do tipo tabela.

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

Observação:

Você só pode telefonar em aberto using a CDaoQueryDef objeto de tipo dynaset e conjuntos de registros do tipo instantâneo.

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

Valor do lpszSQL parâmetro

Registros selecionados são determinados pela

Exemplo

NULL

A seqüência de caracteres retornada pelo GetDefaultSQL.

 

Uma lista separada por vírgulas de tabledefs um ou mais e/ou definiçãodeconsulta nomes.

Todas as colunas representadas no DoFieldExchange.

"Customer"

selecionar lista de colunas de DElista de tabela

As colunas especificadas da tabledef(s) especificado e/ou querydef(s).

"SELECT CustId, CustName

FROM Customer"

O procedimento habitual é passar NULO to em aberto; nesse caso, em aberto calls GetDefaultSQL, uma função de membro substituível que ClassWizard gera durante a criação de um CDaoRecordset-classe derivada. Este valor oferece os nomes dos tabledef(s) e/ou definiçãodeconsulta especificado no ClassWizard.Em vez disso, você pode especificar outras informações no lpszSQL parâmetro.

Whatever you pass, Open constructs a final SQL string for the query (the string may have SQL WHERE and ORDER BY clauses appended to the lpszSQL string you passed) and then executes the query.Você pode examinar a seqüência construída chamando GetSQL Após a chamada em aberto.

Os membros de dados do campo de sua classe de conjunto de registros são vinculados às colunas de dados selecionado.Se todos os registros são retornados, o primeiro registro se tornará o registro corrente.

Se você desejar definir opções para o conjunto de registros, sistema autônomo um filtro ou classificar, defina m_strSort ou m_strFilter após você construir o objeto de conjunto de registros, mas antes de você telefonar em aberto.Se você desejar atualizar os registros no conjunto de registros depois que o conjunto de registros já estiver em aberto, telefonar Repetir a consulta.

If you telefonar em aberto em um tipo dynaset ou conjunto de registros tipo instantâneo, ou se a fonte de dados se refere a uma demonstrativo SQL ou uma definiçãodetabela representa um índice anexado, não é possível usar dbOpenTable para o argumento de tipo; se você fizer isso, o MFC lança uma exceção.Para determinar se um objeto definiçãodetabela representa uma tabela anexada, crie um CDaoTableDef objeto e telefonar seus GetConnectfunção de membro .

Use o dbSeeChanges sinalizar se desejar ajustar o registro de 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 telefonar o Atualizaçãofunção de membro é bem-sucedida.Quando Atualização chamado pelo segundo usuário, um CDaoException é lançada. Da mesma forma, se o segundo usuário tentar chamar Excluir para excluir o registro e já foram alterados pelo usuário primeiro, um CDaoException ocorre.

Normalmente, se o usuário obtém esse CDaoException durante a atualização, seu código deve atualizar o Sumário dos campos e recuperar os valores recém-modificados. Se a exceção ocorre no processo de exclusão, seu código pode exibir os novos dados de registros ao 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:

Use o (opção de rolagem encaminhar-only dbForwardOnly) para melhorar o desempenho quando seu aplicativo faz com que uma única passagem por meio de um conjunto de registros aberto a partir de uma fonte de dados ODBC.

Para obter informações relacionadas, consulte o tópico "Método OpenRecordset" na Ajuda do DAO.

Requisitos

Cabeçalho: afxdao.h

Consulte também

Referência

Classe CDaoRecordset

Gráfico de hierarquia

CDaoRecordset::fechar

CDaoRecordset::CDaoRecordset

Outros recursos

CDaoRecordset membros