Diferente de zero se o objeto CRecordset foi aberto com êxito; caso contrário 0 se CDatabase:: AAbrir (se chamado) retornará 0.
Parâmetros
nOpenType
Aceite o valor padrão, AFX_DB_USE_DEFAULT_TYPE, ou use um dos seguintes valores de enumOpenType:
CRecordset:: dy&nasetnbsp; Um recordset com rolagem bidirecional. A participação e ordenação dos registros são determinadas quando o conjunto de registros é aberto, mas as alterações feitas por outros usuários para os valores de dados são visíveis após uma operação de busca. Dynasets são também conhecidos como conjuntos de registros controlado.
CRecordset:: s&napshotnbsp; Um estático recordset com rolagem bidirecional. A participação e ordenação dos registros são determinadas quando o conjunto de registros é aberto; os valores de dados são determinados quando os registros são obtidos. Alterações feitas por outros usuários não serão visíveis até que o conjunto de registros for fechado e, em seguida, reaberto.
CRecordset::dynamicnbsp; Um recordset com rolagem bidirecional. As alterações feitas por outros usuários para os valores de adesão, ordenação e dados são visíveis após uma operação de busca. &Note que muitos drivers ODBC não suporta este tipo de conjunto de registros.
CRecordset:: forwardO&nlynbsp; Um conjunto de registros somente leitura com apenas encaminhar rolagem.
Para CRecordset, o valor padrão é CRecordset:: snapshot. O mecanismo de valor padrão permite que os assistentes do Visual C++ interagir com ODBC CRecordset tanto DAO CDaoRecordset, que têm padrões diferentes.
Para obter mais informações sobre esses tipos de conjunto de registros, consulte o artigo Conjunto de registros (ODBC) no Guia do programador do Visual C++. Para obter informações relacionadas, consulte o artigo "Using e rolável cursores de bloco" na Referência do programador ODBC SDK.
Cuidado Se o tipo solicitado não é suportado, o framework lança uma exceção.
lpszSQL
Um ponteiro de Cadeia de caracteres que contém um dos seguintes:
Um ponteiro Nulo.
O nome de uma tabela.
Uma instrução SQL Selecionar (opcionalmente com um SQL onde ou ORDEMER BY cláusula).
Uma instrução CALL especificando o nome de uma consulta predefinida (procedimento armazenado). Seja cuidadoso que você não inserir espaço em branco entre a chave e a palavra-chave CALL.
Para obter mais informações sobre essa Cadeia de caracteres, consulte a tabela e a discussão do papel do ClassWizard sob observações.
&Notanbsp; A ordem das colunas no conjunto de resultados deve corresponder a ordem dos RFX ou Bulk RFX função chama em seu DoFieldExchange ou DoBulkFieldExchange função substituir.
dwOptions
Uma máscara de bits que pode especificar uma combinação dos valores listados abaixo. Alguns destes são mutuamente exclusivos. O valor padrão é none.
CRecordset::nonenbsp; &Nenhum conjunto de opções. Esse valor de parâmetro é mutuamente com todos os outros valores. Por padrão, o conjunto de registros pode ser atualizado com Editar ou Excluir e permite anexar novos registros com AddNew. Capacidade de atualização depende da fonte de dados como bem como a opção nOpenType que você especifica. Otimização para inclusões em massa não estará disponível. Em massa linha buscando não será implementado. Registros excluídos não serão ignorados durante a navegação de conjunto de registros. Indicadores não estão disponíveis. Verificação automático de campo sujo é implementado.
CRecordset::appendOnlynbsp; &Não permitir Editar ou Excluir registros. Permitir AddNew somente. Esta opção é mutuamente exclusiva com CRecordset:: ReadOnly.
CRecordset:: ReadO&nlynbsp; Abra o conjunto de registros como somente leitura. Esta opção é mutuamente exclusiva com CRecordset::appendOnly.
CRecordset::optimizeBulkAdd Use uma instrução SQL preparada para otimizar a adição de muitos registros ao mesmo tempo. Só se aplica se você não estiver usando a função de API de ODBC SQLSetPos para atualizar o conjunto de registros. A primeira atualização determina quais campos são marcados com problemas. Esta opção é mutuamente exclusiva com CRecordset:: useMultiRowFetch.
CRecordset:: useMultiRowFetch Implemente em massa linha buscando para permitir várias linhas a serem recuperados em uma operação de busca única. Este é um recurso avançado projetado para melhorar o desempenho; no entanto, a troca de campo de registro em massa não é suportada pelo ClassWizard. Esta opção é mutuamente exclusiva com CRecordset::optimizeBulkAdd. Observe que se você especificar CRecordset:: useMultiRowFetch, em seguida, a opção CRecordset:: noDirtyFieldCheck será ativada automaticamente (buffer duplo não estará disponível); em conjuntos de registros somente de avançar, a opção CRecordset:: useExtendedFetch será ativada automaticamente. Para obter mais informações sobre a linha em massa buscando, consulte o artigo Recordset: Buscar registros em massa (ODBC) no Guia do programador do Visual C++.
CRecordset:: skipDeletedRecordsnbsp; Ignore os registros excluídos de tudo quando estiver navegando pelo conjunto de registros. Isso irá diminuir o desempenho em determinadas buscas relativos. Esta opção não é válida em conjuntos de registros somente de Avançar. Anotação que CRecordset:: skipDeletedRecords é semelhante ao driver de remessa, que significa que linhas excluídas são removidas do conjunto de registros. &No entanto, se seu driver packs registros, em seguida, ele ignorará somente os registros que você excluir; Ele não ignorará registros excluídos por outros usuários enquanto o conjunto de registros é aberto. CRecordset:: skipDeletedRecords ignorará linhas excluídas por outros utilizadores.
UseBookmarksnbsp; Pode usar marcadores no conjunto de registros, se houver suporte. Indicadores lenta recuperação de dados, mas melhorar o desempenho de navegação de dados. &Não é válido em conjuntos de registros somente de Avançar. Para obter mais informações, consulte o artigo Recordset: indicadores e absoluto posições (ODBC) no Guia do programador do Visual C++.
CRecordset:: noDirtyFieldChecknbsp; Desative o campo sujo automático verificando (buffer duplo). Isso melhorará o desempenho; no entanto, você deve manualmente Marcar campos como sujo chamando o SetFieldDirty e SetField&Null membro funções.Observação Esse buffer duplo na classe que CRecordset é semelhante ao buffer duplo na classe CDaoRecordset. No entanto, no CRecordset, você não pode habilitar o buffer duplo em campos individuais; você ativá-lo para Tudo campos ou desativá-lo para Tudo campos. Para obter mais informações sobre buffer duplo, consulte o artigo DAO DAO registro campo Exchange: Double Buffering Records no Guia do programador do Visual C++. Observe que se você especificar a opção CRecordset:: useMultiRowFetch, em seguida, CRecordset:: noDirtyFieldCheck será ativado automaticamente; no entanto, SetFieldDirty e SetFieldNull não podem ser usado em conjuntos de registros que implementar em massa linha buscando.
CRecordset::executeDirectnbsp; &Não use uma instrução SQL preparada. Para melhorar o desempenho, especificar essa opção se a função de membro RepetirConsulta nunca será chamada.
CRecordset:: useExte&ndedFetchnbsp; Implemente SQLExtendedFetch em vez de SQLFetch. Isto é projetado para implementar em massa linha buscar em conjuntos de registros somente de Avançar. Se você especificar a opção CRecordset:: useMultiRowFetch em um conjunto de registros somente de avançar, em seguida, CRecordset:: useExtendedFetch será ativado automaticamente.
CRecordset:: userAllocMultiRowBuffers O usuário será alocar buffers de armazenamento para os dados. Use esta opção em conjunto com CRecordset:: useMultiRowFetch se desejar alocar seu próprio armazenamento; caso contrário, o quadro será automaticamente alocar o armazenamento necessário. Para obter mais informações, consulte o artigo Recordset: Buscar registros em massa (ODBC) no Guia do programador do Visual C++. Observe que especificar CRecordset:: userAllocMultiRowBuffers sem especificar CRecordset:: useMultiRowFetch irá resultar em uma declaração falha.
Observações
Você deve chamar esta função membro para executar a consulta definida pelo conjunto de registros. Antes de chamar Abrir, você deve criar o objeto recordset.
Conexão do conjunto de registros para o Origem de dados depende de como você construir o conjunto de registros antes de chamar Abrir. Se você passar um objeto de CDatabase para o Construtor de conjunto de registros que não tenha sido conectado à fonte de dados, esta função de membro usa GetDefaultConnect para tentar abrir o objeto de banco de dados. Se você passar NULL para o Construtor de conjunto de registros, o construtor constrói um objeto de CDatabase para você e Abrir tenta conectar o objeto de banco de dados. Para obter detalhes sobre como fechar o conjunto de registros e a conexão sob essas circunstâncias diferentes, consulte Fechar.
&Notanbsp; Acesso a uma fonte de dados por meio de um objeto CRecordset sempre é compartilhado. Ao contrário da classe de CDaoRecordset , você não pode usar um objeto de CRecordset abrir uma origem de dados com acesso exclusivo.
Quando você chama Abrir, uma consulta, geralmente uma instrução SQL Selecionar , seleciona registros 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.
Nome da tabela SQL
Todas as colunas da tabela-lista DoFieldExchange ou DoBulkFieldExchange.
"Cliente"
Nome da consulta predefinidos (procedimento armazenado)
As colunas que da consulta é definida para retornar.
"{chamada OverDueAccts}"
Selecione lista de coluna FROM tabela-lista
As colunas especificadas da tabela especificada (s).
"Selecione CustId, CustName do cliente"
! Aviso Certifique-se de que você não inserir espaço em branco extra em sua cadeia de caracteres SQL. Por exemplo, se você inserir espaço em branco entre a chave e a palavra-chave CALL , MFC irá interpretar erroneamente a Cadeia de caracteres SQL como um nome de tabela e incorporá-lo em uma instrução SELECT , que resultará em uma exceção sendo lançada. Da mesma forma, se sua consulta predefinida usa um parâmetro de saída, não inserir espaço em branco entre a chave e o '?' símbolo. Finalmente, você não deve inserir espaço em branco antes da chave em uma instrução CALL ou antes a palavra-chave Selecionar em um statment de Selecionar.
O procedimento normal é passar NULL para Abrir; Neste caso, Abrir chama GetDefaultSQL. Se você estiver usando uma classe derivada CRecordset , GetDefualtSQL dá os nomes de tabela 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áusulas SQL onde e ORDER BY 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 a chamada aberta. Para obter detalhes adicionais sobre como o conjunto de registros constrói uma instrução SQL e seleciona registros, consulte o artigo Recordset: como conjuntos de registros selecionar registros (ODBC) no Guia do programador do Visual C++.
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, especifica esses após você criar o objeto recordset, mas antes de chamar Abrir. Se você deseja atualizar os registros no conjunto de registros após o conjunto de registros já está aberto, chamar RepetirConsulta.
Os seguinte apresentação exemplos codificar diferentes formas da chamada de AAbrir.
/ / rs é um CRecordset ou
/ / CRecordset-derivado objeto
/ / Rs abertos utilizando a instrução SQL padrão,
/ / implementar indicadores e desligar
/ / verificação automático de campo sujo
RS.Abrir (CRecordset:: snapshot, &NULL,
nbsp; UseBookmarks |
CRecordset:: noDirtyFieldCheck);
/ / Passar uma instrução SELECT completa
/ / e aberto como um dynaset
RS.Abrir (CRecordset:: dynaset,
T ("Selecione L_Name de cliente"));
/ / Aceitar todos os padrões
RS.(Aberto)