Partilhar via


CDaoRecordset Classe

Representa um conjunto de registros selecionados de uma fonte de dados.

Observação

O Data Access Object (DAO) é suportado pelo Office 2013. DAO 3.6 é a versão final, e é obsoleto.

Sintaxe

class CDaoRecordset : public CObject

Membros

Construtores Públicos

Nome Descrição
CDaoRecordset::CDaoRecordset Constrói um objeto CDaoRecordset.

Métodos Públicos

Nome Descrição
CDaoRecordset::AddNew Prepara-se para adicionar um novo registro. Ligue para Atualização para concluir a adição.
CDaoRecordset::CanAppend Retorna diferente de zero se novos registros puderem ser adicionados ao conjunto de registros por meio da função de membro AddNew .
CDaoRecordset::CanBookmark Retorna diferente de zero se o conjunto de registros oferecer suporte a marcadores.
CDaoRecordset::CancelUpdate Cancela quaisquer atualizações pendentes devido a uma operação Edit ou AddNew .
CDaoRecordset::CanRestart Retorna diferente de zero se Requery puder ser chamado para executar a consulta do conjunto de registros novamente.
CDaoRecordset::CanScroll Retorna diferente de zero se você puder percorrer os registros.
CDaoRecordset::CanTransact Retorna diferente de zero se a fonte de dados oferecer suporte a transações.
CDaoRecordset::CanUpdate Retorna diferente de zero se o conjunto de registros puder ser atualizado (você pode adicionar, atualizar ou excluir registros).
CDaoRecordset::Fechar Fecha o conjunto de registros.
CDaoRecordset::D elete Exclui o registro atual do conjunto de registros. Você deve rolar explicitamente para outro registro após a exclusão.
CDaoRecordset::D oFieldExchange Chamado para trocar dados (em ambas as direções) entre os membros de dados de campo do conjunto de registros e o registro correspondente na fonte de dados. Implementa a troca de campo de registro DAO (DFX).
CDaoRecordset::Editar Prepara para alterações no registro atual. Ligue Update para concluir a edição.
CDaoRecordset::FillCache Preenche todo ou parte de um cache local para um objeto de conjunto de registros que contém dados de uma fonte de dados ODBC.
CDaoRecordset::Localizar Localiza o primeiro, o próximo, o anterior ou o último local de uma cadeia de caracteres específica em um conjunto de registros do tipo dynaset que satisfaz os critérios especificados e torna esse registro o registro atual.
CDaoRecordset::FindFirst Localiza o primeiro registro em um conjunto de registros do tipo dynaset ou snapshot que satisfaz os critérios especificados e torna esse registro o registro atual.
CDaoRecordset::FindLast Localiza o último registro em um conjunto de registros do tipo dynaset ou snapshot que satisfaz os critérios especificados e torna esse registro o registro atual.
CDaoRecordset::FindNext Localiza o próximo registro em um conjunto de registros do tipo dynaset ou snapshot que satisfaz os critérios especificados e torna esse registro o registro atual.
CDaoRecordset::FindPrev Localiza o registro anterior em um conjunto de registros do tipo dynaset ou snapshot que satisfaz os critérios especificados e torna esse registro o registro atual.
CDaoRecordset::GetAbsolutePosition Retorna o número de registro do registro atual de um objeto de conjunto de registros.
CDaoRecordset::GetBookmark Retorna um valor que representa o indicador em um registro.
CDaoRecordset::GetCacheSize Retorna um valor que especifica o número de registros em um conjunto de registros do tipo dynaset contendo dados a serem armazenados localmente em cache de uma fonte de dados ODBC.
CDaoRecordset::GetCacheStart Retorna um valor que especifica o indicador do primeiro registro no conjunto de registros a ser armazenado em cache.
CDaoRecordset::GetCurrentIndex Retorna um CString contendo o nome do índice usado mais recentemente em um indexado, tipo CDaoRecordsetde tabela .
CDaoRecordset::GetDateCreated Retorna a data e a hora em que a tabela base subjacente a um CDaoRecordset objeto foi criada
CDaoRecordset::GetDateLastUpdated Retorna a data e a hora da alteração mais recente feita no design de uma tabela base subjacente a um CDaoRecordset objeto.
CDaoRecordset::GetDefaultDBName Retorna o nome da fonte de dados padrão.
CDaoRecordset::GetDefaultSQL Chamado para obter a cadeia de caracteres SQL padrão para executar.
CDaoRecordset::GetEditMode Retorna um valor que indica o estado de edição do registro atual.
CDaoRecordset::GetFieldCount Retorna um valor que representa o número de campos em um conjunto de registros.
CDaoRecordset::GetFieldInfo Retorna tipos específicos de informações sobre os campos no conjunto de registros.
CDaoRecordset::GetFieldValue Retorna o valor de um campo em um conjunto de registros.
CDaoRecordset::GetIndexCount Recupera o número de índices em uma tabela subjacente a um conjunto de registros.
CDaoRecordset::GetIndexInfo Retorna vários tipos de informações sobre um índice.
CDaoRecordset::GetLastModifiedBookmark Usado para determinar o registro adicionado ou atualizado mais recentemente.
CDaoRecordset::GetLockingMode Retorna um valor que indica o tipo de bloqueio que está em vigor durante a edição.
CDaoRecordset::GetName Retorna um CString contendo o nome do conjunto de registros.
CDaoRecordset::GetParamValue Recupera o valor atual do parâmetro especificado armazenado no objeto DAOParameter subjacente.
CDaoRecordset::GetPercentPosition Devolve a posição do registo atual como uma percentagem do número total de registos.
CDaoRecordset::GetRecordCount Retorna o número de registros acessados em um objeto de conjunto de registros.
CDaoRecordset::GetSQL Obtém a cadeia de caracteres SQL usada para selecionar registros para o conjunto de registros.
CDaoRecordset::GetType Chamado para determinar o tipo de um conjunto de registros: table-type, dynaset-type ou snapshot-type.
CDaoRecordset::GetValidationRule Retorna um CString contendo o valor que valida os dados à medida que são inseridos em um campo.
CDaoRecordset::GetValidationText Recupera o texto exibido quando uma regra de validação não é satisfeita.
CDaoRecordset::IsBOF Retorna diferente de zero se o conjunto de registros tiver sido posicionado antes do primeiro registro. Não há registro atual.
CDaoRecordset::IsDeleted Retorna diferente de zero se o conjunto de registros estiver posicionado em um registro excluído.
CDaoRecordset::IsEOF Retorna diferente de zero se o conjunto de registros tiver sido posicionado após o último registro. Não há registro atual.
CDaoRecordset::IsFieldDirty Retorna diferente de zero se o campo especificado no registro atual tiver sido alterado.
CDaoRecordset::IsFieldNull Retorna diferente de zero se o campo especificado no registro atual for Nulo (sem valor).
CDaoRecordset::IsFieldNullable Retorna diferente de zero se o campo especificado no registro atual puder ser definido como Nulo (sem valor).
CDaoRecordset::IsOpen Retorna diferente de zero se Open tiver sido chamado anteriormente.
CDaoRecordset::Mover Posiciona o conjunto de registros em um número especificado de registros do registro atual em qualquer direção.
CDaoRecordset::MoveFirst Posiciona o registro atual no primeiro registro no conjunto de registros.
CDaoRecordset::MoveLast Posiciona o registro atual no último registro do conjunto de registros.
CDaoRecordset::MoveNext Posiciona o registro atual no próximo registro no conjunto de registros.
CDaoRecordset::MovePrev Posiciona o registro atual no registro anterior no conjunto de registros.
CDaoRecordset::Aberto Cria um novo conjunto de registros a partir de uma tabela, dynaset ou instantâneo.
CDaoRecordset::Requery Executa a consulta do conjunto de registros novamente para atualizar os registros selecionados.
CDaoRecordset::Procurar Localiza o registro em um objeto de conjunto de registros do tipo tabela indexada que satisfaz os critérios especificados para o índice atual e torna esse registro o registro atual.
CDaoRecordset::SetAbsolutePosition Define o número de registro do registro atual de um objeto de conjunto de registros.
CDaoRecordset::SetBookmark Posiciona o conjunto de registros em um registro que contém o marcador especificado.
CDaoRecordset::SetCacheSize Define um valor que especifica o número de registros em um conjunto de registros do tipo dynaset contendo dados a serem armazenados localmente em cache de uma fonte de dados ODBC.
CDaoRecordset::SetCacheStart Define um valor que especifica o indicador do primeiro registro no conjunto de registros a ser armazenado em cache.
CDaoRecordset::SetCurrentIndex Chamado para definir um índice em um conjunto de registros do tipo tabela.
CDaoRecordset::SetFieldDirty Marca o campo especificado no registro atual como alterado.
CDaoRecordset::SetFieldNull Define o valor do campo especificado no registro atual como Nulo (sem valor).
CDaoRecordset::SetFieldValue Define o valor de um campo em um conjunto de registros.
CDaoRecordset::SetFieldValueNull Define o valor de um campo em um conjunto de registros como Nulo. (sem valor).
CDaoRecordset::SetLockingMode Define um valor que indica o tipo de bloqueio a ser implementado durante a edição.
CDaoRecordset::SetParamValue Define o valor atual do parâmetro especificado armazenado no objeto DAOParameter subjacente
CDaoRecordset::SetParamValueNull Define o valor atual do parâmetro especificado como Null (sem valor).
CDaoRecordset::SetPercentPosition Define a posição do registro atual como um local correspondente a uma porcentagem do número total de registros em um conjunto de registros.
CDaoRecordset::Atualizar Conclui uma AddNew operação ou Edit salvando os dados novos ou editados na fonte de dados.

Membros de Dados Públicos

Nome Descrição
CDaoRecordset::m_bCheckCacheForDirtyFields Contém um sinalizador que indica se os campos são marcados automaticamente como alterados.
CDaoRecordset::m_nFields Contém o número de membros de dados de campo na classe do conjunto de registros e o número de colunas selecionadas pelo conjunto de registros da fonte de dados.
CDaoRecordset::m_nParams Contém o número de membros de dados de parâmetros na classe do conjunto de registros — o número de parâmetros passados com a consulta do conjunto de registros
CDaoRecordset::m_pDAORecordset Um ponteiro para a interface DAO subjacente ao objeto do conjunto de registros.
CDaoRecordset::m_pDatabase Banco de dados de origem para este conjunto de resultados. Contém um ponteiro para um objeto CDaoDatabase .
CDaoRecordset::m_strFilter Contém uma cadeia de caracteres usada para construir uma instrução SQL WHERE .
CDaoRecordset::m_strSort Contém uma cadeia de caracteres usada para construir uma instrução SQL ORDER BY .

Observações

Conhecidos como "conjuntos de registros", CDaoRecordset os objetos estão disponíveis nas três formas a seguir:

  • Os conjuntos de registros do tipo tabela representam uma tabela base que você pode usar para examinar, adicionar, alterar ou excluir registros de uma única tabela de banco de dados.

  • Os conjuntos de registros do tipo Dynaset são o resultado de uma consulta que pode ter registros atualizáveis. Esses conjuntos de registros são um conjunto de registros que você pode usar para examinar, adicionar, alterar ou excluir registros de uma tabela ou tabelas de banco de dados subjacente. Os conjuntos de registros do tipo Dynaset podem conter campos de uma ou mais tabelas em um banco de dados.

  • Os conjuntos de registros do tipo instantâneo são uma cópia estática de um conjunto de registros que você pode usar para localizar dados ou gerar relatórios. Esses conjuntos de registros podem conter campos de uma ou mais tabelas em um banco de dados, mas não podem ser atualizados.

Cada forma de conjunto de registros representa um conjunto de registros fixados no momento em que o conjunto de registros é aberto. Quando você rola para um registro em um conjunto de registros do tipo tabela ou em um conjunto de registros do tipo dynaset, ele reflete as alterações feitas no registro depois que o conjunto de registros é aberto, seja por outros usuários ou por outros conjuntos de registros em seu aplicativo. (Um conjunto de registros do tipo instantâneo não pode ser atualizado.) Você pode usar CDaoRecordset diretamente ou derivar uma classe de conjunto de registros específica do aplicativo de CDaoRecordset. Pode então:

  • Percorra os registos.

  • Defina um índice e procure rapidamente registros usando Seek (somente conjuntos de registros do tipo tabela).

  • Encontre registros com base em uma comparação de cadeia de caracteres: "<", "<=", "=", ">=" ou ">" (conjuntos de registros do tipo dynaset e do tipo instantâneo).

  • Atualize os registros e especifique um modo de bloqueio (exceto conjuntos de registros do tipo instantâneo).

  • Filtre o conjunto de registros para restringir quais registros ele seleciona daqueles disponíveis na fonte de dados.

  • Classifique o conjunto de registros.

  • Parametrize o conjunto de registros para personalizar sua seleção com informações desconhecidas até o tempo de execução.

A classe CDaoRecordset fornece uma interface semelhante à da classe CRecordset. A principal diferença é que a classe CDaoRecordset acessa dados por meio de um Data Access Object (DAO) baseado em OLE. A classe CRecordset acessa o DBMS por meio de ODBC (Open Database Connectivity) e um driver ODBC para esse DBMS.

Observação

As classes de banco de dados DAO são distintas das classes de banco de dados MFC baseadas em ODBC (Open Database Connectivity). Todos os nomes de classe de banco de dados DAO têm o prefixo "CDao". Você ainda pode acessar fontes de dados ODBC com as classes DAO; as classes DAO geralmente oferecem recursos superiores porque são específicas para o mecanismo de banco de dados Microsoft Jet.

Você pode usar CDaoRecordset diretamente ou derivar uma classe de CDaoRecordset. Para usar uma classe de conjunto de registros em ambos os casos, abra um banco de dados e construa um objeto de conjunto de registros, passando o construtor um ponteiro para seu CDaoDatabase objeto. Você também pode construir um CDaoRecordset objeto e permitir que o MFC crie um objeto temporário CDaoDatabase para você. Em seguida, chame a função Open member do conjunto de registros, especificando se o objeto é um conjunto de registros do tipo tabela, um conjunto de registros do tipo dynaset ou um conjunto de registros do tipo instantâneo. A chamada Open seleciona dados do banco de dados e recupera o primeiro registro.

Use as funções de membro do objeto e os membros de dados para percorrer os registros e operar neles. As operações disponíveis dependem se o objeto é um conjunto de registros do tipo tabela, um conjunto de registros do tipo dynaset ou um conjunto de registros do tipo instantâneo, e se é atualizável ou somente leitura — isso depende da capacidade do banco de dados ou da fonte de dados ODBC (Open Database Connectivity). Para atualizar registros que podem ter sido alterados ou adicionados desde a Open chamada, chame a função de membro Requery do objeto. Chame a função de membro do Close objeto e destrua o objeto quando terminar com ele.

CDaoRecordset usa a troca de campos de registro DAO (DFX) para dar suporte à leitura e atualização de campos de registro por meio de membros C++ seguros para tipos de sua CDaoRecordset classe ou CDaoRecordsetderivada. Você também pode implementar a associação dinâmica de colunas em um banco de dados sem usar o mecanismo DFX usando GetFieldValue e SetFieldValue.

Para obter informações relacionadas, consulte o tópico "Recordset Object" na Ajuda do DAO.

Hierarquia de herança

CObject

CDaoRecordset

Requerimentos

Cabeçalho:afxdao.h

CDaoRecordset::AddNew

Chame essa função de membro para adicionar um novo registro a um conjunto de registros do tipo tabela ou dynaset.

virtual void AddNew();

Observações

Os campos do registro são inicialmente Nulos. (Na terminologia do banco de dados, Null significa "sem valor" e não é o mesmo que NULL em C++.) Para concluir a operação, você deve chamar a função de membro Atualizar . Update salva as alterações na fonte de dados.

Atenção

Se você editar um registro e, em seguida, rolar para outro registro sem chamar Update, suas alterações serão perdidas sem aviso.

Se você adicionar um registro a um conjunto de registros do tipo dynaset chamando AddNew, o registro será visível no conjunto de registros e incluído na tabela subjacente, onde se tornará visível para quaisquer novos CDaoRecordset objetos.

A posição do novo registo depende do tipo de conjunto de registos:

  • Em um conjunto de registros do tipo dynaset, onde o novo registro é inserido não é garantido. Esse comportamento mudou com o Microsoft Jet 3.0 por motivos de desempenho e simultaneidade. Se o seu objetivo for tornar o registro recém-adicionado o registro atual, obtenha o marcador do último registro modificado e vá para esse marcador:
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • Em um conjunto de registros do tipo tabela para o qual um índice foi especificado, os registros são retornados em seu lugar apropriado na ordem de classificação. Se nenhum índice tiver sido especificado, novos registros serão retornados no final do conjunto de registros.

O registro que era atual antes de você usar AddNew permanece atual. Se você quiser tornar o novo registro atual e o conjunto de registros oferecer suporte a marcadores, chame SetBookmark para o indicador identificado pela configuração da propriedade LastModified do objeto de conjunto de registros DAO subjacente. Isso é útil para determinar o valor dos campos de contador (incremento automático) em um registro adicionado. Para obter mais informações, consulte GetLastModifiedBookmark.

Se o banco de dados suportar transações, você poderá tornar sua AddNew chamada parte de uma transação. Para obter mais informações sobre transações, consulte a classe CDaoWorkspace. Você deve chamar CDaoWorkspace::BeginTrans antes de chamar AddNew.

É ilegal chamar AddNew um conjunto de registros cuja Open função de membro não tenha sido chamada. A CDaoException é lançado se você chamar AddNew um conjunto de registros que não pode ser acrescentado. Você pode determinar se o conjunto de registros é atualizável chamando CanAppend.

A estrutura marca os membros de dados de campo alterados para garantir que eles sejam gravados no registro na fonte de dados pelo mecanismo de troca de campo de registro (DFX) DAO. Alterar o valor de um campo geralmente define o campo sujo automaticamente, portanto, você raramente precisará chamar SetFieldDirty por conta própria, mas às vezes convém garantir que as colunas sejam explicitamente atualizadas ou inseridas, independentemente do valor no membro de dados do campo. O mecanismo DFX também emprega o uso de PSEUDO NULL. Para obter mais informações, consulte CDaoFieldExchange::m_nOperation.

Se o mecanismo de buffer duplo não estiver sendo usado, alterar o valor do campo não definirá automaticamente o campo como sujo. Neste caso, é necessário colocar explicitamente o campo sujo. O sinalizador contido no m_bCheckCacheForDirtyFields controla essa verificação automática de campo.

Observação

Se os registros tiverem buffer duplo (ou seja, a verificação automática de campos estiver habilitada), a chamada CancelUpdate restaurará as variáveis de membro para os valores que tinham antes AddNew ou Edit foram chamados.

Para obter informações relacionadas, consulte os tópicos "AddNew Method", "CancelUpdate Method", "LastModified Property" e "EditMode Property" na Ajuda do DAO.

CDaoRecordset::CanAppend

Chame essa função de membro para determinar se o conjunto de registros aberto anteriormente permite adicionar novos registros chamando a função de membro AddNew .

BOOL CanAppend() const;

Valor de retorno

Diferente de zero se o conjunto de registros permitir a adição de novos registros; caso contrário, 0. CanAppend Retorna 0 se você abriu o conjunto de registros como somente leitura.

Observações

Para obter informações relacionadas, consulte o tópico "Append Method" na Ajuda do DAO.

CDaoRecordset::CanBookmark

Chame essa função de membro para determinar se o conjunto de registros aberto anteriormente permite marcar registros individualmente usando marcadores.

BOOL CanBookmark();

Valor de retorno

Diferente de zero se o conjunto de registros oferecer suporte a marcadores, caso contrário, 0.

Observações

Se você estiver usando conjuntos de registros baseados inteiramente em tabelas do mecanismo de banco de dados Microsoft Jet, os marcadores poderão ser usados, exceto em conjuntos de registros do tipo instantâneo sinalizados como conjuntos de registros de rolagem somente para frente. Outros produtos de banco de dados (fontes de dados ODBC externas) podem não suportar marcadores.

Para obter informações relacionadas, consulte o tópico "Propriedade marcante" na Ajuda do DAO.

CDaoRecordset::CancelUpdate

A CancelUpdate função de membro cancela quaisquer atualizações pendentes devido a uma operação Edit ou AddNew .

virtual void CancelUpdate();

Observações

Por exemplo, se um aplicativo chamar a Edit função ou AddNew membro e não tiver chamado Update, CancelUpdate cancelará todas as alterações feitas depois Edit ou AddNew foi chamado.

Observação

Se os registros tiverem buffer duplo (ou seja, a verificação automática de campos estiver habilitada), a chamada CancelUpdate restaurará as variáveis de membro para os valores que tinham antes AddNew ou Edit foram chamados.

Se não houver nenhuma Edit operação pendente AddNew , CancelUpdate fará com que o MFC lance uma exceção. Chame a função de membro GetEditMode para determinar se há uma operação pendente que pode ser cancelada.

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

CDaoRecordset::CanRestart

Chame essa função de membro para determinar se o conjunto de registros permite reiniciar sua consulta (para atualizar seus registros) chamando a Requery função de membro.

BOOL CanRestart();

Valor de retorno

Diferente de zero se Requery pode ser chamado para executar a consulta do conjunto de registros novamente, caso contrário, 0.

Observações

Os conjuntos de registros do tipo tabela não suportam Requery.

Se Requery não for suportado, chame Fechar e Abrir para atualizar os dados. Você pode chamar Requery para atualizar a consulta de parâmetro subjacente de um objeto de conjunto de registros depois que os valores dos parâmetros tiverem sido alterados.

Para obter informações relacionadas, consulte o tópico "Propriedade reinicializável" na Ajuda do DAO.

CDaoRecordset::CanScroll

Chame essa função de membro para determinar se o conjunto de registros permite rolagem.

BOOL CanScroll() const;

Valor de retorno

Diferente de zero se você puder rolar pelos registros, caso contrário, 0.

Observações

Se você chamar Abrir com dbForwardOnly, o conjunto de registros só poderá rolar para frente.

Para obter informações relacionadas, consulte o tópico "Posicionando o ponteiro de registro atual com DAO" na Ajuda do DAO.

CDaoRecordset::CanTransact

Chame essa função de membro para determinar se o conjunto de registros permite transações.

BOOL CanTransact();

Valor de retorno

Diferente de zero se a fonte de dados subjacente suportar transações, caso contrário, 0.

Observações

Para obter informações relacionadas, consulte o tópico "Propriedade de transações" na Ajuda do DAO.

CDaoRecordset::CanUpdate

Chame essa função de membro para determinar se o conjunto de registros pode ser atualizado.

BOOL CanUpdate() const;

Valor de retorno

Diferente de zero se o conjunto de registros puder ser atualizado (adicionar, atualizar e excluir registros), caso contrário, 0.

Observações

Um conjunto de registros pode ser somente leitura se a fonte de dados subjacente for somente leitura ou se você especificou dbReadOnly para nOptions quando chamou Open para o conjunto de registros.

Para obter informações relacionadas, consulte os tópicos "AddNew Method", "Edit Method", "Delete Method", "Update Method" e "Updatable Property" na Ajuda do DAO.

CDaoRecordset::CDaoRecordset

Constrói um objeto CDaoRecordset.

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

Parâmetros

pBase de dados
Contém um ponteiro para um objeto CDaoDatabase ou o valor NULL. Se não for NULL e a CDaoDatabase função de membro do Open objeto não tiver sido chamada para conectá-lo à fonte de dados, o conjunto de registros tentará abri-lo para você durante sua própria chamada Open . Se você passar NULL, um CDaoDatabase objeto será construído e conectado para você usando as informações da fonte de dados especificadas se você derivou sua classe de conjunto de registros de CDaoRecordset.

Observações

Você pode usar CDaoRecordset diretamente ou derivar uma classe específica do aplicativo de CDaoRecordset. Você pode usar ClassWizard para derivar suas classes de conjunto de registros.

Observação

Se você derivar uma CDaoRecordset classe, sua classe derivada deve fornecer seu próprio construtor. No construtor de sua classe derivada, chame o construtor CDaoRecordset::CDaoRecordset, passando os parâmetros apropriados para ele.

Passe NULL para o construtor do conjunto de registros para ter um CDaoDatabase objeto construído e conectado para você automaticamente. Este é um atalho útil que não requer que você construa e conecte um CDaoDatabase objeto antes de construir seu conjunto de registros. Se o CDaoDatabase objeto não estiver aberto, um objeto CDaoWorkspace também será criado para você que usa o espaço de trabalho padrão. Para obter mais informações, consulte CDaoDatabase::CDaoDatabase.

CDaoRecordset::Fechar

Fechar um CDaoRecordset objeto o remove da coleção de conjuntos de registros abertos no banco de dados associado.

virtual void Close();

Observações

Como Close não destrói o CDaoRecordset objeto, você pode reutilizá-lo chamando Open a mesma fonte de dados ou uma fonte de dados diferente.

Todas as instruções AddNew ou Edit pendentes são canceladas e todas as transações pendentes são revertidas. Se quiser preservar adições ou edições pendentes, chame Update antes de chamar Close cada conjunto de registros.

Você pode ligar Open novamente depois de ligar Close. Isso permite reutilizar o objeto do conjunto de registros. Uma alternativa melhor é chamar Requery, se possível.

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

CDaoRecordset::D elete

Chame essa função de membro para excluir o registro atual em um objeto de conjunto de registros do tipo dynaset ou do tipo tabela aberto.

virtual void Delete();

Observações

Após uma exclusão bem-sucedida, os membros de dados de campo do conjunto de registros são definidos como um valor Nulo e você deve chamar explicitamente uma das funções de membro de navegação do conjunto de registros ( Move, Seek, SetBookmark e assim por diante) para sair do registro excluído. Quando você exclui registros de um conjunto de registros, deve haver um registro atual no conjunto de registros antes de chamar Delete, caso contrário, o MFC lança uma exceção.

Delete Remove o registro atual e o torna inacessível. Embora você não possa editar ou usar o registro excluído, ele permanece atual. Depois de mover para outro registro, no entanto, você não pode tornar o registro excluído atual novamente.

Atenção

O conjunto de registros deve ser atualizável e deve haver um registro válido atual no conjunto de registros quando você chamar Delete. Por exemplo, se você excluir um registro, mas não rolar para um novo registro antes de chamar Delete novamente, Delete lançará um CDaoException.

Você pode cancelar a exclusão de um registro se usar transações e chamar a função de membro CDaoWorkspace::Rollback . Se a tabela base for a tabela primária em uma relação de exclusão em cascata, excluir o registro atual também poderá excluir um ou mais registros em uma tabela estrangeira. Para obter mais informações, consulte a definição "exclusão em cascata" na Ajuda do DAO.

Ao contrário AddNew de e Edit, uma chamada para Delete não é seguida por uma chamada para Update.

Para obter informações relacionadas, consulte os tópicos "AddNew Method", "Edit Method", "Delete Method", "Update Method" e "Updatable Property" na Ajuda do DAO.

CDaoRecordset::D oFieldExchange

A estrutura chama essa função de membro para trocar dados automaticamente entre os membros de dados de campo do objeto do conjunto de registros e as colunas correspondentes do registro atual na fonte de dados.

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

Parâmetros

pFX
Contém um ponteiro para um CDaoFieldExchange objeto. A estrutura já terá configurado este objeto para especificar um contexto para a operação de troca de campo.

Observações

Ele também vincula seus membros de dados de parâmetro, se houver, a espaços reservados de parâmetro na cadeia de caracteres de instrução SQL para a seleção do conjunto de registros. A troca de dados de campo, chamada de troca de campo de registro DAO (DFX), funciona em ambas as direções: dos membros de dados de campo do objeto do conjunto de registros para os campos do registro na fonte de dados e do registro na fonte de dados para o objeto do conjunto de registros. Se você estiver vinculando colunas dinamicamente, não será necessário implementar DoFieldExchangeo .

A única ação que você normalmente deve executar para implementar DoFieldExchange sua classe de conjunto de registros derivada é criar a classe com ClassWizard e especificar os nomes e tipos de dados dos membros de dados de campo. Você também pode adicionar código ao que ClassWizard grava para especificar membros de dados de parâmetro. Se todos os campos forem vinculados dinamicamente, essa função ficará inativa, a menos que você especifique membros de dados de parâmetro.

Quando você declara sua classe de conjunto de registros derivada com ClassWizard, o assistente grava uma substituição de DoFieldExchange para você, que se assemelha ao exemplo a seguir:

void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

CDaoRecordset::Editar

Chame essa função de membro para permitir alterações no registro atual.

virtual void Edit();

Observações

Depois de chamar a Edit função de membro, as alterações feitas nos campos do registro atual são copiadas para o buffer de cópia. Depois de fazer as alterações desejadas no registro, ligue Update para salvar as alterações. Edit salva os valores dos membros de dados do conjunto de registros. Se você chamar Edit, fazer alterações e, em seguida, chamar Edit novamente, os valores do registro serão restaurados para o que eram antes da primeira Edit chamada.

Atenção

Se você editar um registro e, em seguida, executar qualquer operação que se mova para outro registro sem primeiro chamar Update, suas alterações serão perdidas sem aviso. Além disso, se você fechar o conjunto de registros ou o banco de dados pai, o registro editado será descartado sem aviso.

Em alguns casos, convém atualizar uma coluna tornando-a Nula (sem dados). Para fazer isso, chame SetFieldNull com um parâmetro de TRUE para marcar o campo Nulo, isso também faz com que a coluna seja atualizada. Se desejar que um campo seja gravado na fonte de dados mesmo que seu valor não tenha sido alterado, chame SetFieldDirty com um parâmetro TRUE. Isso funciona mesmo se o campo tiver o valor Nulo.

A estrutura marca os membros de dados de campo alterados para garantir que eles sejam gravados no registro na fonte de dados pelo mecanismo de troca de campo de registro (DFX) DAO. Alterar o valor de um campo geralmente define o campo sujo automaticamente, portanto, você raramente precisará chamar SetFieldDirty por conta própria, mas às vezes convém garantir que as colunas sejam explicitamente atualizadas ou inseridas, independentemente do valor no membro de dados do campo. O mecanismo DFX também emprega o uso de PSEUDO NULL. Para obter mais informações, consulte CDaoFieldExchange::m_nOperation.

Se o mecanismo de buffer duplo não estiver sendo usado, alterar o valor do campo não definirá automaticamente o campo como sujo. Neste caso, é necessário colocar explicitamente o campo sujo. O sinalizador contido no m_bCheckCacheForDirtyFields controla essa verificação automática de campo.

Quando o objeto recordset está pessimisticamente bloqueado em um ambiente multiusuário, o registro permanece bloqueado desde o momento Edit em que é usado até que a atualização seja concluída. Se o conjunto de registros estiver bloqueado de forma otimista, ele será bloqueado e comparado com o registro pré-editado pouco antes de ser atualizado no banco de dados. Se o registro tiver sido alterado desde que você chamou Edit, a operação falhará Update e o MFC lançará uma exceção. Você pode alterar o modo de bloqueio com SetLockingMode.

Observação

O bloqueio otimista é sempre usado em formatos de banco de dados externos, como ODBC e ISAM instalável.

O registro atual permanece atual após a chamada Edit. Para chamar Edit, deve haver um registro atual. Se não houver nenhum registro atual ou se o conjunto de registros não se referir a um objeto de conjunto de registros do tipo tabela aberta ou do tipo dynaset, ocorrerá uma exceção. A chamada Edit faz com que um CDaoException seja lançado nas seguintes condições:

  • Não há registro atual.

  • O banco de dados ou conjunto de registros é somente leitura.

  • Nenhum campo no registro é atualizável.

  • O banco de dados ou conjunto de registros foi aberto para uso exclusivo por outro usuário.

  • Outro utilizador bloqueou a página que contém o seu registo.

Se a fonte de dados oferecer suporte a transações, você poderá tornar a Edit chamada parte de uma transação. Você deve ligar CDaoWorkspace::BeginTrans antes de ligar Edit e depois que o conjunto de registros for aberto. Chamar CDaoWorkspace::CommitTrans não Update substitui chamar para concluir a Edit operação. Para obter mais informações sobre transações, consulte classe CDaoWorkspace.

Para obter informações relacionadas, consulte os tópicos "AddNew Method", "Edit Method", "Delete Method", "Update Method" e "Updatable Property" na Ajuda do DAO.

CDaoRecordset::FillCache

Chame essa função de membro para armazenar em cache um número especificado de registros do conjunto de registros.

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

Parâmetros

pTamanho
Especifica o número de linhas a serem preenchidas no cache. Se você omitir esse parâmetro, o valor será determinado pela configuração da propriedade CacheSize do objeto DAO subjacente.

pMarcador
Um COleVariant especificando um marcador. O cache é preenchido a partir do registro indicado por este marcador. Se você omitir esse parâmetro, o cache será preenchido a partir do registro indicado pela propriedade CacheStart do objeto DAO subjacente.

Observações

O cache melhora o desempenho de um aplicativo que recupera ou busca dados de um servidor remoto. Um cache é um espaço na memória local que contém os dados mais recentemente buscados do servidor na suposição de que os dados provavelmente serão solicitados novamente enquanto o aplicativo estiver em execução. Quando os dados são solicitados, o mecanismo de banco de dados Microsoft Jet verifica o cache para os dados primeiro, em vez de buscá-los no servidor, o que leva mais tempo. O uso de cache de dados em fontes de dados não ODBC não tem efeito, pois os dados não são salvos no cache.

Em vez de esperar que o cache seja preenchido com registros à medida que eles são buscados, você pode preencher explicitamente o cache a qualquer momento chamando a FillCache função de membro. Essa é uma maneira mais rápida de preencher o cache porque FillCache busca vários registros ao mesmo tempo, em vez de um de cada vez. Por exemplo, enquanto cada triagem de registros está sendo exibida, você pode fazer com que sua chamada FillCache de aplicativo busque a próxima tela de registros.

Qualquer banco de dados ODBC acessado com objetos de conjunto de registros pode ter um cache local. Para criar o cache, abra um objeto de conjunto de registros da fonte de dados remota e chame as SetCacheSize funções e SetCacheStart membro do conjunto de registros. Se lSize e lBookmark criarem um intervalo parcial ou totalmente fora do intervalo especificado por SetCacheSize e SetCacheStart, a parte do conjunto de registros fora desse intervalo será ignorada e não será carregada no cache. Se FillCache solicitar mais registros do que permanecem na fonte de dados remota, somente os registros restantes serão buscados e nenhuma exceção será lançada.

Os registros obtidos no cache não refletem as alterações feitas simultaneamente nos dados de origem por outros usuários.

FillCache Obtém apenas registos ainda não armazenados em cache. Para forçar uma atualização de todos os dados armazenados em cache, chame a SetCacheSize função de membro com um parâmetro lSize igual a 0, chame SetCacheSize novamente com o parâmetro lSize igual ao tamanho do cache que você solicitou originalmente e, em seguida, chame FillCache.

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

CDaoRecordset::Localizar

Chame essa função de membro para localizar uma cadeia de caracteres específica em um conjunto de registros do tipo dynaset ou snapshot usando um operador de comparação.

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

Parâmetros

lFindType
Um valor que indica o tipo de operação Find desejada. Os valores possíveis são:

  • AFX_DAO_NEXT Encontre o próximo local de uma cadeia de caracteres correspondente.

  • AFX_DAO_PREV Encontre o local anterior de uma cadeia de caracteres correspondente.

  • AFX_DAO_FIRST Encontre o primeiro local de uma cadeia de caracteres correspondente.

  • AFX_DAO_LAST Encontre o último local de uma cadeia de caracteres correspondente.

lpszFilter
Uma expressão de cadeia de caracteres (como a cláusula WHERE em uma instrução SQL sem a palavra WHERE) usada para localizar o registro. Por exemplo:

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

Você pode encontrar a primeira, a próxima, a anterior ou a última instância da cadeia de caracteres. Find é uma função virtual, para que você possa substituí-la e adicionar sua própria implementação. As FindFirstfunções , FindLast, FindNexte FindPrev member chamam a Find função member, para que você possa usar Find para controlar o comportamento de todas as operações Find.

Para localizar um registro em um conjunto de registros do tipo tabela, chame a função Procurar membro.

Sugestão

Quanto menor o conjunto de registros que você tem, mais eficaz Find é. Em geral, e especialmente com dados ODBC, é melhor criar uma nova consulta que recupere apenas os registros desejados.

Para obter informações relacionadas, consulte o tópico "FindFirst, FindLast, FindNext, FindPrevious Methods" na Ajuda do DAO.

CDaoRecordset::FindFirst

Chame essa função de membro para localizar o primeiro registro que corresponde a uma condição especificada.

BOOL FindFirst(LPCTSTR lpszFilter);

Parâmetros

lpszFilter
Uma expressão de cadeia de caracteres (como a cláusula WHERE em uma instrução SQL sem a palavra WHERE) usada para localizar o registro.

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

A FindFirst função de membro inicia sua pesquisa desde o início do conjunto de registros e pesquisas até o final do conjunto de registros.

Se você quiser incluir todos os registros em sua pesquisa (não apenas aqueles que atendem a uma condição específica), use uma das operações Mover para mover de registro para registro. Para localizar um registro em um conjunto de registros do tipo tabela, chame a Seek função membro.

Se um registro correspondente aos critérios não for localizado, o ponteiro do registro atual será indeterminado e FindFirst retornará zero. Se o conjunto de registros contiver mais de um registro que satisfaça os critérios, FindFirst localizará a primeira ocorrência, FindNext localizará a próxima ocorrência e assim por diante.

Atenção

Se você editar o registro atual, salve as alterações chamando a Update função de membro antes de passar para outro registro. Se você mudar para outro registro sem atualizar, suas alterações serão perdidas sem aviso.

As Find funções de membro pesquisam a partir do local e na direção especificada na tabela a seguir:

Encontrar operações Começar Direção da pesquisa
FindFirst Início do conjunto de registros Fim do conjunto de registos
FindLast Fim do conjunto de registos Início do conjunto de registros
FindNext Recorde atual Fim do conjunto de registos
FindPrevious Recorde atual Início do conjunto de registros

Observação

Quando você chama FindLasto , o mecanismo de banco de dados Microsoft Jet preenche totalmente seu conjunto de registros antes de iniciar a pesquisa, se isso ainda não tiver sido feito. A primeira pesquisa pode demorar mais do que as pesquisas subsequentes.

Usar uma das operações Find não é o mesmo que chamar MoveFirst ou MoveNext, no entanto, que simplesmente torna o primeiro ou o próximo registro atual sem especificar uma condição. Você pode seguir uma operação Localizar com uma operação Mover.

Tenha em mente o seguinte ao usar as operações Localizar:

  • Se Find retornar diferente de zero, o registro atual não será definido. Nesse caso, você deve posicionar o ponteiro do registro atual de volta para um registro válido.

  • Não é possível usar uma operação Localizar com um conjunto de registros do tipo instantâneo de rolagem somente para frente.

  • Você deve usar o formato de data dos EUA (mês-dia-ano) ao pesquisar campos contendo datas, mesmo que não esteja usando a versão dos EUA do mecanismo de banco de dados Microsoft Jet; caso contrário, os registros correspondentes podem não ser encontrados.

  • Ao trabalhar com bancos de dados ODBC e grandes dynasets, você pode descobrir que o uso das operações Find é lento, especialmente ao trabalhar com grandes conjuntos de registros. Você pode melhorar o desempenho usando consultas SQL com cláusulas ORDERBY ou WHERE personalizadas, consultas de parâmetros ou CDaoQuerydef objetos que recuperam registros indexados específicos.

Para obter informações relacionadas, consulte o tópico "FindFirst, FindLast, FindNext, FindPrevious Methods" na Ajuda do DAO.

CDaoRecordset::FindLast

Chame essa função de membro para localizar o último registro que corresponde a uma condição especificada.

BOOL FindLast(LPCTSTR lpszFilter);

Parâmetros

lpszFilter
Uma expressão de cadeia de caracteres (como a cláusula WHERE em uma instrução SQL sem a palavra WHERE) usada para localizar o registro.

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

A FindLast função de membro inicia sua pesquisa no final do conjunto de registros e pesquisa para trás em direção ao início do conjunto de registros.

Se você quiser incluir todos os registros em sua pesquisa (não apenas aqueles que atendem a uma condição específica), use uma das operações Mover para mover de registro para registro. Para localizar um registro em um conjunto de registros do tipo tabela, chame a Seek função membro.

Se um registro correspondente aos critérios não for localizado, o ponteiro do registro atual será indeterminado e FindLast retornará zero. Se o conjunto de registros contiver mais de um registro que satisfaça os critérios, FindFirst localizará a primeira ocorrência, FindNext localizará a próxima ocorrência após a primeira ocorrência e assim por diante.

Atenção

Se você editar o registro atual, salve as alterações chamando a Update função de membro antes de passar para outro registro. Se você mudar para outro registro sem atualizar, suas alterações serão perdidas sem aviso.

Usar uma das operações Find não é o mesmo que chamar MoveFirst ou MoveNext, no entanto, que simplesmente torna o primeiro ou o próximo registro atual sem especificar uma condição. Você pode seguir uma operação Localizar com uma operação Mover.

Tenha em mente o seguinte ao usar as operações Localizar:

  • Se Find retornar diferente de zero, o registro atual não será definido. Nesse caso, você deve posicionar o ponteiro do registro atual de volta para um registro válido.

  • Não é possível usar uma operação Localizar com um conjunto de registros do tipo instantâneo de rolagem somente para frente.

  • Você deve usar o formato de data dos EUA (mês-dia-ano) ao pesquisar campos contendo datas, mesmo que não esteja usando a versão dos EUA do mecanismo de banco de dados Microsoft Jet; caso contrário, os registros correspondentes podem não ser encontrados.

  • Ao trabalhar com bancos de dados ODBC e grandes dynasets, você pode descobrir que o uso das operações Find é lento, especialmente ao trabalhar com grandes conjuntos de registros. Você pode melhorar o desempenho usando consultas SQL com cláusulas ORDERBY ou WHERE personalizadas, consultas de parâmetros ou CDaoQuerydef objetos que recuperam registros indexados específicos.

Para obter informações relacionadas, consulte o tópico "FindFirst, FindLast, FindNext, FindPrevious Methods" na Ajuda do DAO.

CDaoRecordset::FindNext

Chame essa função de membro para localizar o próximo registro que corresponda a uma condição especificada.

BOOL FindNext(LPCTSTR lpszFilter);

Parâmetros

lpszFilter
Uma expressão de cadeia de caracteres (como a cláusula WHERE em uma instrução SQL sem a palavra WHERE) usada para localizar o registro.

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

A FindNext função de membro inicia sua pesquisa no registro atual e pesquisa até o final do conjunto de registros.

Se você quiser incluir todos os registros em sua pesquisa (não apenas aqueles que atendem a uma condição específica), use uma das operações Mover para mover de registro para registro. Para localizar um registro em um conjunto de registros do tipo tabela, chame a Seek função membro.

Se um registro correspondente aos critérios não for localizado, o ponteiro do registro atual será indeterminado e FindNext retornará zero. Se o conjunto de registros contiver mais de um registro que satisfaça os critérios, FindFirst localizará a primeira ocorrência, FindNext localizará a próxima ocorrência e assim por diante.

Atenção

Se você editar o registro atual, salve as alterações chamando a Update função de membro antes de passar para outro registro. Se você mudar para outro registro sem atualizar, suas alterações serão perdidas sem aviso.

Usar uma das operações Find não é o mesmo que chamar MoveFirst ou MoveNext, no entanto, que simplesmente torna o primeiro ou o próximo registro atual sem especificar uma condição. Você pode seguir uma operação Localizar com uma operação Mover.

Tenha em mente o seguinte ao usar as operações Localizar:

  • Se Find retornar diferente de zero, o registro atual não será definido. Nesse caso, você deve posicionar o ponteiro do registro atual de volta para um registro válido.

  • Não é possível usar uma operação Localizar com um conjunto de registros do tipo instantâneo de rolagem somente para frente.

  • Você deve usar o formato de data dos EUA (mês-dia-ano) ao pesquisar campos contendo datas, mesmo que não esteja usando a versão dos EUA do mecanismo de banco de dados Microsoft Jet; caso contrário, os registros correspondentes podem não ser encontrados.

  • Ao trabalhar com bancos de dados ODBC e grandes dynasets, você pode descobrir que o uso das operações Find é lento, especialmente ao trabalhar com grandes conjuntos de registros. Você pode melhorar o desempenho usando consultas SQL com cláusulas ORDERBY ou WHERE personalizadas, consultas de parâmetros ou CDaoQuerydef objetos que recuperam registros indexados específicos.

Para obter informações relacionadas, consulte o tópico "FindFirst, FindLast, FindNext, FindPrevious Methods" na Ajuda do DAO.

CDaoRecordset::FindPrev

Chame essa função de membro para localizar o registro anterior que corresponde a uma condição especificada.

BOOL FindPrev(LPCTSTR lpszFilter);

Parâmetros

lpszFilter
Uma expressão de cadeia de caracteres (como a cláusula WHERE em uma instrução SQL sem a palavra WHERE) usada para localizar o registro.

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

A FindPrev função de membro inicia sua pesquisa no registro atual e pesquisa para trás em direção ao início do conjunto de registros.

Se você quiser incluir todos os registros em sua pesquisa (não apenas aqueles que atendem a uma condição específica), use uma das operações Mover para mover de registro para registro. Para localizar um registro em um conjunto de registros do tipo tabela, chame a Seek função membro.

Se um registro correspondente aos critérios não for localizado, o ponteiro do registro atual será indeterminado e FindPrev retornará zero. Se o conjunto de registros contiver mais de um registro que satisfaça os critérios, FindFirst localizará a primeira ocorrência, FindNext localizará a próxima ocorrência e assim por diante.

Atenção

Se você editar o registro atual, salve as alterações chamando a Update função de membro antes de passar para outro registro. Se você mudar para outro registro sem atualizar, suas alterações serão perdidas sem aviso.

Usar uma das operações Find não é o mesmo que chamar MoveFirst ou MoveNext, no entanto, que simplesmente torna o primeiro ou o próximo registro atual sem especificar uma condição. Você pode seguir uma operação Localizar com uma operação Mover.

Tenha em mente o seguinte ao usar as operações Localizar:

  • Se Find retornar diferente de zero, o registro atual não será definido. Nesse caso, você deve posicionar o ponteiro do registro atual de volta para um registro válido.

  • Não é possível usar uma operação Localizar com um conjunto de registros do tipo instantâneo de rolagem somente para frente.

  • Você deve usar o formato de data dos EUA (mês-dia-ano) ao pesquisar campos contendo datas, mesmo que não esteja usando a versão dos EUA do mecanismo de banco de dados Microsoft Jet; caso contrário, os registros correspondentes podem não ser encontrados.

  • Ao trabalhar com bancos de dados ODBC e grandes dynasets, você pode descobrir que o uso das operações Find é lento, especialmente ao trabalhar com grandes conjuntos de registros. Você pode melhorar o desempenho usando consultas SQL com cláusulas ORDERBY ou WHERE personalizadas, consultas de parâmetros ou CDaoQuerydef objetos que recuperam registros indexados específicos.

Para obter informações relacionadas, consulte o tópico "FindFirst, FindLast, FindNext, FindPrevious Methods" na Ajuda do DAO.

CDaoRecordset::GetAbsolutePosition

Retorna o número de registro do registro atual de um objeto de conjunto de registros.

long GetAbsolutePosition();

Valor de retorno

Um número inteiro de 0 até o número de registros no conjunto de registros. Corresponde à posição ordinal do registro atual no conjunto de registros.

Observações

O valor da propriedade AbsolutePosition do objeto DAO subjacente é baseado em zero; Uma definição de 0 refere-se ao primeiro registo no conjunto de registos. Você pode determinar o número de registros preenchidos no conjunto de registros chamando GetRecordCount. A chamada GetRecordCount pode levar algum tempo porque deve acessar todos os registros para determinar a contagem.

Se não houver nenhum registro atual, como quando não houver registros no conjunto de registros, - 1 será retornado. Se o registro atual for excluído, o valor da propriedade AbsolutePosition não será definido e o MFC lançará uma exceção se for referenciado. Para conjuntos de registros do tipo dynaset, novos registros são adicionados ao final da sequência.

Observação

Esta propriedade não se destina a ser usada como um número de registro substituto. Os marcadores ainda são a maneira recomendada de reter e retornar a uma determinada posição e são a única maneira de posicionar o registro atual em todos os tipos de objetos de conjunto de registros. Em especial, a posição de um dado registo muda quando o(s) registo(s) anterior(es) é(são) suprimido(s). Também não há garantia de que um determinado registro terá a mesma posição absoluta se o conjunto de registros for recriado novamente porque a ordem dos registros individuais dentro de um conjunto de registros não é garantida, a menos que ele seja criado com uma instrução SQL usando uma cláusula ORDERBY .

Observação

Essa função de membro é válida apenas para conjuntos de registros do tipo dynaset e do tipo snapshot.

Para obter informações relacionadas, consulte o tópico "Propriedade AbsolutePosition" na Ajuda do DAO.

CDaoRecordset::GetBookmark

Chame essa função de membro para obter o valor do marcador em um registro específico.

COleVariant GetBookmark();

Valor de retorno

Retorna um valor que representa o indicador no registro atual.

Observações

Quando um objeto de conjunto de registros é criado ou aberto, cada um de seus registros já tem um marcador exclusivo se oferecer suporte a eles. Ligue CanBookmark para determinar se um conjunto de registros oferece suporte a marcadores.

Você pode salvar o indicador para o registro atual atribuindo o valor do indicador a um COleVariant objeto. Para retornar rapidamente a esse registro depois de mover para um registro diferente, chame SetBookmark com um parâmetro correspondente ao valor desse COleVariant objeto.

Observação

Chamar Requery altera os marcadores DAO.

Para obter informações relacionadas, consulte o tópico "Propriedade de favorito" na Ajuda do DAO.

CDaoRecordset::GetCacheSize

Chame essa função de membro para obter o número de registros armazenados em cache.

long GetCacheSize();

Valor de retorno

Um valor que especifica o número de registros em um conjunto de registros do tipo dynaset contendo dados a serem armazenados localmente em cache de uma fonte de dados ODBC.

Observações

O cache de dados melhora o desempenho de um aplicativo que recupera dados de um servidor remoto por meio de objetos de conjunto de registros do tipo dynaset. Um cache é um espaço na memória local que contém os dados recuperados mais recentemente do servidor, caso os dados sejam solicitados novamente enquanto o aplicativo está em execução. Quando os dados são solicitados, o mecanismo de banco de dados Microsoft Jet verifica o cache para os dados solicitados primeiro, em vez de recuperá-los do servidor, o que leva mais tempo. Os dados que não vêm de uma fonte de dados ODBC não são salvos no cache.

Qualquer fonte de dados ODBC, como uma tabela anexada, pode ter um cache local.

Para obter informações relacionadas, consulte o tópico "CacheSize, CacheStart Properties" na Ajuda do DAO.

CDaoRecordset::GetCacheStart

Chame essa função de membro para obter o valor do indicador do primeiro registro no conjunto de registros a ser armazenado em cache.

COleVariant GetCacheStart();

Valor de retorno

A COleVariant que especifica o indicador do primeiro registro no conjunto de registros a ser armazenado em cache.

Observações

O mecanismo de banco de dados Microsoft Jet solicita registros dentro do intervalo de cache do cache e solicita registros fora do intervalo de cache do servidor.

Observação

Os registros recuperados do cache não refletem as alterações feitas simultaneamente nos dados de origem por outros usuários.

Para obter informações relacionadas, consulte o tópico "CacheSize, CacheStart Properties" na Ajuda do DAO.

CDaoRecordset::GetCurrentIndex

Chame essa função de membro para determinar o índice atualmente em uso em um objeto do tipo CDaoRecordset tabela indexada.

CString GetCurrentIndex();

Valor de retorno

A CString contendo o nome do índice atualmente em uso com um conjunto de registros do tipo tabela. Retorna uma cadeia de caracteres vazia se nenhum índice tiver sido definido.

Observações

Esse índice é a base para ordenar registros em um conjunto de registros do tipo tabela e é usado pela função de membro Seek para localizar registros.

Um CDaoRecordset objeto pode ter mais de um índice, mas pode usar apenas um índice de cada vez (embora um objeto CDaoTableDef possa ter vários índices definidos nele).

Para obter informações relacionadas, consulte o tópico "Objeto de índice" e a definição "índice atual" na Ajuda do DAO.

CDaoRecordset::GetDateCreated

Chame essa função de membro para recuperar a data e a hora em que uma tabela base foi criada.

COleDateTime GetDateCreated();

Valor de retorno

Um objeto COleDateTime contendo a data e a hora em que a tabela base foi criada.

Observações

As configurações de data e hora são derivadas do computador no qual a tabela base foi criada.

Para obter informações relacionadas, consulte o tópico "DateCreated, LastUpdated Properties" na Ajuda do DAO.

CDaoRecordset::GetDateLastUpdated

Chame essa função de membro para recuperar a data e a hora em que o esquema foi atualizado pela última vez.

COleDateTime GetDateLastUpdated();

Valor de retorno

Um objeto COleDateTime contendo a data e a hora em que a estrutura da tabela base (esquema) foi atualizada pela última vez.

Observações

As configurações de data e hora são derivadas do computador no qual a estrutura da tabela base (esquema) foi atualizada pela última vez.

Para obter informações relacionadas, consulte o tópico "DateCreated, LastUpdated Properties" na Ajuda do DAO.

CDaoRecordset::GetDefaultDBName

Chame essa função de membro para determinar o nome do banco de dados para esse conjunto de registros.

virtual CString GetDefaultDBName();

Valor de retorno

A CString que contém o caminho e o nome do banco de dados do qual esse conjunto de registros é derivado.

Observações

Se um conjunto de registros for criado sem um ponteiro para um CDaoDatabase, esse caminho será usado pelo conjunto de registros para abrir o banco de dados padrão. Por padrão, essa função retorna uma cadeia de caracteres vazia. Quando o ClassWizard deriva um novo conjunto de registros do CDaoRecordset, ele criará essa função para você.

O exemplo a seguir ilustra o uso da barra invertida dupla (\\) na cadeia de caracteres, como é necessário para que a cadeia de caracteres seja interpretada corretamente.

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

A estrutura chama essa função de membro para obter a instrução SQL padrão na qual o conjunto de registros se baseia.

virtual CString GetDefaultSQL();

Valor de retorno

A CString que contém a instrução SQL padrão.

Observações

Isso pode ser um nome de tabela ou uma instrução SQL SELECT .

Você define indiretamente a instrução SQL padrão declarando sua classe de conjunto de registros com ClassWizard e ClassWizard executa essa tarefa para você.

Se você passar uma cadeia de caracteres SQL nula para Open, essa função será chamada para determinar o nome da tabela ou SQL para seu conjunto de registros.

CDaoRecordset::GetEditMode

Chame essa função de membro para determinar o estado da edição, que é um dos seguintes valores:

short GetEditMode();

Valor de retorno

Retorna um valor que indica o estado de edição do registro atual.

Observações

Valor Descrição
dbEditNone Nenhuma operação de edição está em andamento.
dbEditInProgress Edit foi chamado.
dbEditAdd AddNew foi chamado.

Para obter informações relacionadas, consulte o tópico "Propriedade EditMode" na Ajuda do DAO.

CDaoRecordset::GetFieldCount

Chame essa função de membro para recuperar o número de campos (colunas) definidos no conjunto de registros.

short GetFieldCount();

Valor de retorno

O número de campos no conjunto de registros.

Observações

Para obter informações relacionadas, consulte o tópico "Contar propriedade" na Ajuda do DAO.

CDaoRecordset::GetFieldInfo

Chame essa função de membro para obter informações sobre os campos em um conjunto de registros.

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parâmetros

nÍndice
O índice baseado em zero do campo predefinido na coleção Fields do conjunto de registros, para pesquisa por índice.

informações de campo
Uma referência a uma estrutura CDaoFieldInfo .

dwInfoOptions
Opções que especificam quais informações sobre o conjunto de registros devem ser recuperadas. As opções disponíveis estão listadas aqui, juntamente com o que fazem com que a função retorne. Para obter o melhor desempenho, recupere apenas o nível de informações de que precisa:

  • AFX_DAO_PRIMARY_INFO (Padrão) Nome, Tipo, Tamanho, Atributos

  • AFX_DAO_SECONDARY_INFO Informações primárias, mais: Posição ordinal, Obrigatório, Permitir comprimento zero, Ordem de agrupamento, Nome estrangeiro, Campo de origem, Tabela de origem

  • AFX_DAO_ALL_INFO Informações primárias e secundárias, mais: Valor padrão, Regra de validação, Texto de validação

lpszName
O nome do campo.

Observações

Uma versão da função permite pesquisar um campo por índice. A outra versão permite que você procure um campo pelo nome.

Para obter uma descrição das informações retornadas, consulte a estrutura CDaoFieldInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição de dwInfoOptions. Quando você solicita informações em um nível, você obtém informações para quaisquer níveis anteriores também.

Para obter informações relacionadas, consulte o tópico "Propriedade de atributos" na Ajuda do DAO.

CDaoRecordset::GetFieldValue

Chame essa função de membro para recuperar dados em um conjunto de registros.

virtual void GetFieldValue(
    LPCTSTR lpszName,
    COleVariant& varValue);

virtual void GetFieldValue(
    int nIndex,
    COleVariant& varValue);

virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);

Parâmetros

lpszName
Um ponteiro para uma cadeia de caracteres que contém o nome de um campo.

varValue
Uma referência a um COleVariant objeto que armazenará o valor de um campo.

nÍndice
Um índice baseado em zero do campo na coleção Fields do conjunto de registros, para pesquisa por índice.

Valor de retorno

As duas versões desse GetFieldValue valor retornam um objeto COleVariant que contém o valor de um campo.

Observações

Você pode procurar um campo pelo nome ou pela posição ordinal.

Observação

É mais eficiente chamar uma das versões dessa função de membro que usa uma COleVariant referência de objeto como parâmetro, em vez de chamar uma versão que retorna um COleVariant objeto. As últimas versões desta função são mantidas para compatibilidade com versões anteriores.

Use GetFieldValue e SetFieldValue para vincular dinamicamente campos em tempo de execução em vez de vincular estaticamente colunas usando o mecanismo DoFieldExchange .

GetFieldValue e o mecanismo pode ser combinado para melhorar o DoFieldExchange desempenho. Por exemplo, use GetFieldValue para recuperar um valor que você precisa apenas sob demanda e atribua essa chamada a um botão "Mais informações" na interface.

Para obter informações relacionadas, consulte os tópicos "Objeto de campo" e "Propriedade de valor" na Ajuda do DAO.

CDaoRecordset::GetIndexCount

Chame essa função de membro para determinar o número de índices disponíveis no conjunto de registros do tipo tabela.

short GetIndexCount();

Valor de retorno

O número de índices no conjunto de registros do tipo tabela.

Observações

GetIndexCount é útil para percorrer todos os índices no conjunto de registros. Para esse efeito, utilize GetIndexCount com GetIndexInfo. Se você chamar essa função de membro em conjuntos de registros do tipo dynaset ou snapshot, o MFC lançará uma exceção.

Para obter informações relacionadas, consulte o tópico "Propriedade de atributos" na Ajuda do DAO.

CDaoRecordset::GetIndexInfo

Chame essa função de membro para obter vários tipos de informações sobre um índice definido na tabela base subjacente a um conjunto de registros.

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parâmetros

nÍndice
O índice baseado em zero na coleção Indexes da tabela, para pesquisa por posição numérica.

indexinfo
Uma referência a uma estrutura CDaoIndexInfo .

dwInfoOptions
Opções que especificam quais informações sobre o índice devem ser recuperadas. As opções disponíveis estão listadas aqui, juntamente com o que fazem com que a função retorne. Para obter o melhor desempenho, recupere apenas o nível de informações de que precisa:

  • AFX_DAO_PRIMARY_INFO (Padrão) Nome, Informações do Campo, Campos

  • AFX_DAO_SECONDARY_INFO Informações primárias, mais: Principal, Exclusivo, Clusterizado, IgnoreNulls, Obrigatório, Estrangeiro

  • AFX_DAO_ALL_INFO Informações primárias e secundárias, mais: Contagem distinta

lpszName
Um ponteiro para o nome do objeto de índice, para pesquisa por nome.

Observações

Uma versão da função permite que você procure um índice por sua posição na coleção. A outra versão permite que você procure um índice pelo nome.

Para obter uma descrição das informações retornadas, consulte a estrutura CDaoIndexInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição de dwInfoOptions. Quando você solicita informações em um nível, você obtém informações para quaisquer níveis anteriores também.

Para obter informações relacionadas, consulte o tópico "Propriedade de atributos" na Ajuda do DAO.

CDaoRecordset::GetLastModifiedBookmark

Chame essa função de membro para recuperar o marcador do registro adicionado ou atualizado mais recentemente.

COleVariant GetLastModifiedBookmark();

Valor de retorno

A COleVariant que contém um marcador que indica o registo adicionado ou alterado mais recentemente.

Observações

Quando um objeto de conjunto de registros é criado ou aberto, cada um de seus registros já tem um marcador exclusivo se oferecer suporte a eles. Chame GetBookmark para determinar se o conjunto de registros oferece suporte a marcadores. Se o conjunto de registros não oferecer suporte a favoritos, um CDaoException será lançado.

Quando você adiciona um registro, ele aparece no final do conjunto de registros e não é o registro atual. Para tornar o novo registro atual, chame GetLastModifiedBookmark e ligue SetBookmark para retornar ao registro recém-adicionado.

Para obter informações relacionadas, consulte o tópico "LastModified Property" na Ajuda do DAO.

CDaoRecordset::GetLockingMode

Chame essa função de membro para determinar o tipo de bloqueio em vigor para o conjunto de registros.

BOOL GetLockingMode();

Valor de retorno

Diferente de zero se o tipo de bloqueio for pessimista, caso contrário, 0 para bloqueio de registro otimista.

Observações

Quando o bloqueio pessimista está em vigor, a página de dados que contém o registro que você está editando é bloqueada assim que você chama a função Editar membro. A página é desbloqueada quando você chama a função Atualizar ou Fechar membro ou qualquer uma das operações Mover ou Localizar.

Quando o bloqueio otimista está em vigor, a página de dados que contém o registro é bloqueada somente enquanto o registro está sendo atualizado com a Update função de membro.

Ao trabalhar com fontes de dados ODBC, o modo de bloqueio é sempre otimista.

Para obter informações relacionadas, consulte os tópicos "Propriedade LockEdits" e "Comportamento de bloqueio em aplicativos multiusuário" na Ajuda do DAO.

CDaoRecordset::GetName

Chame essa função de membro para recuperar o nome do conjunto de registros.

CString GetName();

Valor de retorno

A CString contendo o nome do conjunto de registros.

Observações

O nome do conjunto de registros deve começar com uma letra e pode conter no máximo 40 caracteres. Pode incluir números e caracteres sublinhados, mas não pode incluir pontuação ou espaços.

Para obter informações relacionadas, consulte o tópico "Name Property" na Ajuda do DAO.

CDaoRecordset::GetParamValue

Chame essa função de membro para recuperar o valor atual do parâmetro especificado armazenado no objeto DAOParameter subjacente.

virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);

Parâmetros

nÍndice
A posição numérica do parâmetro no objeto DAOParameter subjacente.

lpszName
O nome do parâmetro cujo valor você deseja.

Valor de retorno

Um objeto da classe COleVariant que contém o valor do parâmetro.

Observações

Você pode acessar o parâmetro pelo nome ou por sua posição numérica na coleção.

Para obter informações relacionadas, consulte o tópico "Parameter Object" na Ajuda do DAO.

CDaoRecordset::GetPercentPosition

Ao trabalhar com um conjunto de registros do tipo dynaset ou snapshot, se você ligar GetPercentPosition antes de preencher totalmente o conjunto de registros, a quantidade de movimento será relativa ao número de registros acessados, conforme indicado chamando GetRecordCount.

float GetPercentPosition();

Valor de retorno

Um número entre 0 e 100 que indica o local aproximado do registro atual no objeto do conjunto de registros com base em uma porcentagem dos registros no conjunto de registros.

Observações

Você pode mover para o último registro chamando MoveLast para concluir a população de todos os conjuntos de registros, mas isso pode levar uma quantidade significativa de tempo.

Você pode chamar GetPercentPosition todos os três tipos de objetos de conjunto de registros, incluindo tabelas sem índices. No entanto, você não pode chamar GetPercentPosition instantâneos de rolagem somente para encaminhamento ou em um conjunto de registros aberto a partir de uma consulta de passagem em um banco de dados externo. Se não houver nenhum registro atual, ou se o registro atual tiver sido excluído, um CDaoException será lançado.

Para obter informações relacionadas, consulte o tópico "Propriedade PercentPosition" na Ajuda do DAO.

CDaoRecordset::GetRecordCount

Chame essa função de membro para descobrir quantos registros em um conjunto de registros foram acessados.

long GetRecordCount();

Valor de retorno

Retorna o número de registros acessados em um objeto de conjunto de registros.

Observações

GetRecordCount não indica quantos registros estão contidos em um conjunto de registros do tipo dynaset ou instantâneo até que todos os registros tenham sido acessados. Esta chamada de função de membro pode levar um tempo significativo para ser concluída.

Depois que o último registro tiver sido acessado, o valor de retorno indica o número total de registros não excluídos no conjunto de registros. Para forçar o último registro a ser acessado, chame a MoveLast função ou FindLast membro para o conjunto de registros. Você também pode usar uma contagem SQL para determinar o número aproximado de registros que sua consulta retornará.

À medida que seu aplicativo exclui registros em um conjunto de registros do tipo dynaset, o valor de retorno de GetRecordCount diminui. No entanto, os registros excluídos por outros usuários não são refletidos até que o registro atual seja posicionado como GetRecordCount um registro excluído. Se você executar uma transação que afete a contagem de registros e, posteriormente, reverter a transação, GetRecordCount não refletirá o número real de registros restantes.

O valor de de um conjunto de registros do GetRecordCount tipo instantâneo não é afetado por alterações nas tabelas subjacentes.

O valor de de um conjunto de registros do tipo tabela reflete o número aproximado de registros na tabela e é afetado imediatamente à medida que os registros de GetRecordCount tabela são adicionados e excluídos.

Um conjunto de registros sem registros retorna um valor de 0. Ao trabalhar com tabelas anexadas ou bancos de dados ODBC, GetRecordCount sempre retorna - 1. Chamar a Requery função de membro em um conjunto de registros redefine o valor de como se a consulta fosse executada GetRecordCount novamente.

Para obter informações relacionadas, consulte o tópico "Propriedade RecordCount" na Ajuda do DAO.

CDaoRecordset::GetSQL

Chame essa função de membro para obter a instrução SQL que foi usada para selecionar os registros do conjunto de registros quando ele foi aberto.

CString GetSQL() const;

Valor de retorno

A CString que contém a instrução SQL.

Observações

Isso geralmente será uma instrução SQL SELECT .

A cadeia de caracteres retornada por GetSQL normalmente é diferente de qualquer cadeia de caracteres que você possa ter passado para o conjunto de registros no parâmetro lpszSQL para a função de membro Open . Isso ocorre porque o conjunto de registros constrói uma instrução SQL completa com base no que você passou para Open, o que você especificou com ClassWizard e o que você pode ter especificado no m_strFilter e m_strSort membros de dados.

Observação

Chame essa função de membro somente depois de chamar Open.

Para obter informações relacionadas, consulte o tópico "Propriedade SQL" na Ajuda do DAO.

CDaoRecordset::GetType

Chame essa função de membro depois de abrir o conjunto de registros para determinar o tipo do objeto do conjunto de registros.

short GetType();

Valor de retorno

Um dos seguintes valores que indica o tipo de um conjunto de registros:

  • dbOpenTable Conjunto de registros tipo tabela

  • dbOpenDynaset Conjunto de registros do tipo Dynaset

  • dbOpenSnapshot Conjunto de registros do tipo instantâneo

Observações

Para obter informações relacionadas, consulte o tópico "Type Property" na Ajuda do DAO.

CDaoRecordset::GetValidationRule

Chame essa função de membro para determinar a regra usada para validar dados.

CString GetValidationRule();

Valor de retorno

Um CString objeto que contém um valor que valida os dados em um registro à medida que são alterados ou adicionados a uma tabela.

Observações

Esta regra é baseada em texto e é aplicada sempre que a tabela subjacente é alterada. Se os dados não forem legais, o MFC lançará uma exceção. A mensagem de erro retornada é o texto da propriedade ValidationText do objeto field subjacente, se especificado, ou o texto da expressão especificada pela propriedade ValidationRule do objeto field subjacente. Você pode chamar GetValidationText para obter o texto da mensagem de erro.

Por exemplo, um campo em um registro que requer o dia do mês pode ter uma regra de validação, como "DIA ENTRE 1 E 31".

Para obter informações relacionadas, consulte o tópico "Propriedade ValidationRule" na Ajuda do DAO.

CDaoRecordset::GetValidationText

Chame essa função de membro para recuperar o texto da propriedade ValidationText do objeto de campo subjacente.

CString GetValidationText();

Valor de retorno

Um CString objeto que contém o texto da mensagem que é exibido se o valor de um campo não satisfizer a regra de validação do objeto de campo subjacente.

Observações

Para obter informações relacionadas, consulte o tópico "Propriedade ValidationText" na Ajuda do DAO.

CDaoRecordset::IsBOF

Chame essa função de membro antes de rolar de registro em registro para saber se você foi antes do primeiro registro do conjunto de registros.

BOOL IsBOF() const;

Valor de retorno

Diferente de zero se o conjunto de registros não contiver registros ou se você tiver rolado para trás antes do primeiro registro; caso contrário, 0.

Observações

Você também pode ligar IsBOF para IsEOF determinar se o conjunto de registros contém registros ou está vazio. Imediatamente após a chamada Open, se o conjunto de registros não contiver registros, IsBOF retornará diferente de zero. Quando você abre um conjunto de registros que tem pelo menos um registro, o primeiro registro é o registro atual e IsBOF retorna 0.

Se o primeiro registro for o registro atual e você chamar MovePrev, IsBOF retornará posteriormente diferente de zero. Se IsBOF retornar diferente de zero e você chamar MovePrev, uma exceção será lançada. Se IsBOF retornar diferente de zero, o registro atual será indefinido e qualquer ação que exija um registro atual resultará em uma exceção.

Efeito de métodos específicos e IsBOFIsEOF configurações:

  • Chamar Open* internamente faz com que o primeiro registro no conjunto de registros seja o registro atual chamando MoveFirst. Portanto, chamar Open um conjunto vazio de registros causa IsBOF e IsEOF retornar diferente de zero. (Consulte a tabela a seguir para o comportamento de uma chamada ou MoveFirst falhaMoveLast.)

  • Todas as operações Move que localizam com êxito um registro causam e IsBOFIsEOF retornam 0.

  • Uma AddNew chamada seguida por uma Update chamada que insere com êxito um novo registro fará com IsBOF que retorne 0, mas somente se IsEOF já estiver diferente de zero. O estado de IsEOF vontade permanecerá sempre inalterado. Conforme definido pelo mecanismo de banco de dados Microsoft Jet, o ponteiro de registro atual de um conjunto de registros vazio está no final de um arquivo, portanto, qualquer novo registro é inserido após o registro atual.

  • Qualquer Delete chamada, mesmo que remova o único registro restante de um conjunto de registros, não alterará o valor de IsBOF ou IsEOF.

Esta tabela mostra quais operações Move são permitidas com diferentes combinações de IsBOF/ IsEOF.

Estado MoveFirst, MoveLast MovePrev,

Mover < 0
Mover 0 MoveNext,

Mover > 0
IsBOF=diferente de zero,

IsEOF=0
Permitido Exceção Exceção Permitido
IsBOF=0,

IsEOF=diferente de zero
Permitido Permitido Exceção Exceção
Ambos diferentes de zero Exceção Exceção Exceção Exceção
Ambos 0 Permitido Permitido Permitido Permitido

Permitir uma operação Move não significa que a operação localizará um registro com êxito. Ele apenas indica que uma tentativa de executar a operação Move especificada é permitida e não gerará uma exceção. O valor das IsBOF funções e IsEOF membro pode mudar como resultado da tentativa de movimento.

O efeito das operações Move que não localizam um registro no valor de IsBOF e IsEOF configurações é mostrado na tabela a seguir.

Operações IsBOF IsEOF
MoveFirst, MoveLast Diferente de zero Diferente de zero
Move 0 Sem alteração Sem alteração
MovePrev, Move< 0 Diferente de zero Sem alteração
MoveNext, Move> 0 Sem alteração Diferente de zero

Para obter informações relacionadas, consulte o tópico "BOF, EOF Properties" na Ajuda do DAO.

CDaoRecordset::IsDeleted

Chame essa função de membro para determinar se o registro atual foi excluído.

BOOL IsDeleted() const;

Valor de retorno

Diferente de zero se o conjunto de registros estiver posicionado em um registro excluído; caso contrário, 0.

Observações

Se você rolar para um registro e IsDeleted retornar TRUE (diferente de zero), deverá rolar para outro registro antes de poder executar qualquer outra operação de conjunto de registros.

Observação

Não é necessário verificar o status excluído dos registros em um conjunto de registros instantâneo ou do tipo tabela. Como os registros não podem ser excluídos de um instantâneo, não há necessidade de chamar IsDeleted. Para conjuntos de registros do tipo tabela, os registros excluídos são realmente removidos do conjunto de registros. Depois que um registro for excluído, seja por você, outro usuário ou em outro conjunto de registros, você não poderá voltar para esse registro. Portanto, não há necessidade de ligar IsDeletedpara .

Quando você exclui um registro de um dynaset, ele é removido do conjunto de registros e você não pode voltar para esse registro. No entanto, se um registro em um dynaset for excluído por outro usuário ou em outro conjunto de registros com base na mesma tabela, IsDeleted retornará TRUE quando você rolar posteriormente para esse registro.

Para obter informações relacionadas, consulte os tópicos "Delete Method", "LastModified Property" e "EditMode Property" na Ajuda do DAO.

CDaoRecordset::IsEOF

Chame essa função de membro enquanto rola de registro em registro para saber se você foi além do último registro do conjunto de registros.

BOOL IsEOF() const;

Valor de retorno

Diferente de zero se o conjunto de registros não contiver registros ou se você tiver rolado além do último registro; caso contrário, 0.

Observações

Você também pode ligar IsEOF para determinar se o conjunto de registros contém registros ou está vazio. Imediatamente após a chamada Open, se o conjunto de registros não contiver registros, IsEOF retornará diferente de zero. Quando você abre um conjunto de registros que tem pelo menos um registro, o primeiro registro é o registro atual e IsEOF retorna 0.

Se o último registro for o registro atual quando você chamar MoveNext, IsEOF retornará posteriormente diferente de zero. Se IsEOF retornar diferente de zero e você chamar MoveNext, uma exceção será lançada. Se IsEOF retornar diferente de zero, o registro atual será indefinido e qualquer ação que exija um registro atual resultará em uma exceção.

Efeito de métodos específicos e IsBOFIsEOF configurações:

  • Chamar Open internamente faz com que o primeiro registro no conjunto de registros seja o registro atual chamando MoveFirst. Portanto, chamar Open um conjunto vazio de registros causa IsBOF e IsEOF retornar diferente de zero. (Consulte a tabela a seguir para obter o comportamento de uma chamada com falha MoveFirst .)

  • Todas as operações Move que localizam com êxito um registro causam e IsBOFIsEOF retornam 0.

  • Uma AddNew chamada seguida por uma Update chamada que insere com êxito um novo registro fará com IsBOF que retorne 0, mas somente se IsEOF já estiver diferente de zero. O estado de IsEOF vontade permanecerá sempre inalterado. Conforme definido pelo mecanismo de banco de dados Microsoft Jet, o ponteiro de registro atual de um conjunto de registros vazio está no final de um arquivo, portanto, qualquer novo registro é inserido após o registro atual.

  • Qualquer Delete chamada, mesmo que remova o único registro restante de um conjunto de registros, não alterará o valor de IsBOF ou IsEOF.

Esta tabela mostra quais operações Move são permitidas com diferentes combinações de IsBOF/ IsEOF.

Estado MoveFirst, MoveLast MovePrev,

Mover < 0
Mover 0 MoveNext,

Mover > 0
IsBOF=diferente de zero,

IsEOF=0
Permitido Exceção Exceção Permitido
IsBOF=0,

IsEOF=diferente de zero
Permitido Permitido Exceção Exceção
Ambos diferentes de zero Exceção Exceção Exceção Exceção
Ambos 0 Permitido Permitido Permitido Permitido

Permitir uma operação Move não significa que a operação localizará um registro com êxito. Ele apenas indica que uma tentativa de executar a operação Move especificada é permitida e não gerará uma exceção. O valor das IsBOF funções e IsEOF membro pode mudar como resultado da tentativa de Mover.

O efeito das operações Move que não localizam um registro no valor de IsBOF e IsEOF configurações é mostrado na tabela a seguir.

Operações IsBOF IsEOF
MoveFirst, MoveLast Diferente de zero Diferente de zero
Move 0 Sem alteração Sem alteração
MovePrev, Move< 0 Diferente de zero Sem alteração
MoveNext, Move> 0 Sem alteração Diferente de zero

Para obter informações relacionadas, consulte o tópico "BOF, EOF Properties" na Ajuda do DAO.

CDaoRecordset::IsFieldDirty

Chame essa função de membro para determinar se o membro de dados de campo especificado de um dynaset foi sinalizado como "sujo" (alterado).

BOOL IsFieldDirty(void* pv);

Parâmetros

PV
Um ponteiro para o membro de dados de campo cujo status você deseja verificar ou NULL para determinar se algum dos campos está sujo.

Valor de retorno

Diferente de zero se o membro de dados de campo especificado estiver sinalizado como sujo; caso contrário, 0.

Observações

Os dados em todos os membros de dados de campo sujo são transferidos para o registro na fonte de dados quando o registro atual é atualizado por uma chamada para a Update função de membro de CDaoRecordset (após uma chamada para Edit ou AddNew). Com esse conhecimento, você pode executar outras etapas, como desmarcar o membro de dados de campo para marcar a coluna para que ela não seja gravada na fonte de dados.

IsFieldDirty é implementado através do DoFieldExchange.

CDaoRecordset::IsFieldNull

Chame essa função de membro para determinar se o membro de dados de campo especificado de um conjunto de registros foi sinalizado como Nulo.

BOOL IsFieldNull(void* pv);

Parâmetros

PV
Um ponteiro para o membro de dados de campo cujo status você deseja verificar ou NULL para determinar se algum dos campos é Nulo.

Valor de retorno

Diferente de zero se o membro de dados de campo especificado estiver sinalizado como Nulo; caso contrário, 0.

Observações

(Na terminologia do banco de dados, Null significa "sem valor" e não é o mesmo que NULL em C++.) Se um membro de dados de campo for sinalizado como Nulo, ele será interpretado como uma coluna do registro atual para a qual não há valor.

Observação

Em determinadas situações, o uso IsFieldNull pode ser ineficiente, como ilustra o exemplo de código a seguir:

COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;

// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
   rs.GetFieldValue(nField, varValue);

// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
   varValue.Attach(varNewVal); // do something

Observação

Se você estiver usando a vinculação dinâmica de registros, sem derivar do , certifique-se de CDaoRecordsetusá VT_NULL como mostrado no exemplo.

CDaoRecordset::IsFieldNullable

Chame essa função de membro para determinar se o membro de dados de campo especificado é "anulável" (pode ser definido como um valor Nulo; C++ NULL não é o mesmo que Null, que, na terminologia do banco de dados, significa "sem valor").

BOOL IsFieldNullable(void* pv);

Parâmetros

PV
Um ponteiro para o membro de dados de campo cujo status você deseja verificar ou NULL para determinar se algum dos campos é Nulo.

Valor de retorno

Diferente de zero se o membro de dados de campo especificado puder ser tornado Nulo; caso contrário, 0.

Observações

Um campo que não pode ser Nulo deve ter um valor. Se você tentar definir esse campo como Nulo ao adicionar ou atualizar um registro, a fonte de dados rejeitará a adição ou atualização e Update lançará uma exceção. A exceção ocorre quando você chama Update, não quando você chama SetFieldNull.

CDaoRecordset::IsOpen

Chame essa função de membro para determinar se o conjunto de registros está aberto.

BOOL IsOpen() const;

Valor de retorno

Diferente de zero se a função do objeto ou Open membro do conjunto de Requery registros tiver sido chamada anteriormente e o conjunto de registros não tiver sido fechado; caso contrário, 0.

Observações

CDaoRecordset::m_bCheckCacheForDirtyFields

Contém um sinalizador que indica se os campos armazenados em cache são automaticamente marcados como sujos (alterados) e Nulos.

Observações

O sinalizador assume como padrão TRUE. A configuração neste membro de dados controla todo o mecanismo de buffer duplo. Se você definir o sinalizador como TRUE, poderá desativar o cache campo a campo usando o mecanismo DFX. Se você definir a bandeira como FALSE, você deve ligar SetFieldDirty e SetFieldNull você mesmo.

Defina este membro de dados antes de chamar Open. Este mecanismo destina-se principalmente à facilidade de utilização. O desempenho pode ser mais lento devido ao buffer duplo de campos à medida que as alterações são feitas.

CDaoRecordset::m_nFields

Contém o número de membros de dados de campo na classe do conjunto de registros e o número de colunas selecionadas pelo conjunto de registros da fonte de dados.

Observações

O construtor da classe recordset deve inicializar m_nFields com o número correto de campos ligados estaticamente. ClassWizard grava essa inicialização para você quando você usá-lo para declarar sua classe de conjunto de registros. Você também pode escrevê-lo manualmente.

A estrutura usa esse número para gerenciar a interação entre os membros de dados de campo e as colunas correspondentes do registro atual na fonte de dados.

Observação

Esse número deve corresponder ao número de colunas de saída registradas após DoFieldExchange uma chamada para SetFieldType com o parâmetro CDaoFieldExchange::outputColumn.

Você pode vincular colunas dinamicamente por meio de CDaoRecordset::GetFieldValue e CDaoRecordset::SetFieldValue. Se você fizer isso, não precisará incrementar a contagem para m_nFields refletir o número de chamadas de função DFX em sua DoFieldExchange função de membro.

CDaoRecordset::m_nParams

Contém o número de membros de dados de parâmetros na classe de conjunto de registros — o número de parâmetros passados com a consulta do conjunto de registros.

Observações

Se sua classe de conjunto de registros tiver quaisquer membros de dados de parâmetro, o construtor da classe deverá inicializá m_nParams com o número correto. O valor de m_nParams assume como padrão 0. Se você adicionar membros de dados de parâmetro — o que deve ser feito manualmente — também deverá adicionar manualmente uma inicialização no construtor de classe para refletir o número de parâmetros (que deve ser pelo menos tão grande quanto o número de espaços reservados '' em sua cadeia de caracteres m_strFilter ou m_strSort ).

A estrutura usa esse número quando parametriza a consulta do conjunto de registros.

Observação

Este número deve corresponder ao número de "params" registados após DoFieldExchange uma chamada para SetFieldType com o parâmetro CFieldExchange::param.

Para obter informações relacionadas, consulte o tópico "Parameter Object" na Ajuda do DAO.

CDaoRecordset::m_pDAORecordset

Contém um ponteiro para a interface OLE para o objeto do conjunto de registros DAO subjacente ao CDaoRecordset objeto.

Observações

Use esse ponteiro se precisar acessar a interface DAO diretamente.

Para obter informações relacionadas, consulte o tópico "Recordset Object" na Ajuda do DAO.

CDaoRecordset::m_pDatabase

Contém um ponteiro para o objeto através do CDaoDatabase qual o conjunto de registros está conectado a uma fonte de dados.

Observações

Esta variável é definida de duas maneiras. Normalmente, você passa um ponteiro para um objeto já aberto CDaoDatabase quando constrói o objeto do conjunto de registros. Se você passar NULL em vez disso, CDaoRecordset cria um CDaoDatabase objeto para você e o abre. Em ambos os casos, CDaoRecordset armazena o ponteiro nessa variável.

Normalmente, você não precisará usar diretamente o ponteiro armazenado no m_pDatabase. Se você escrever suas próprias extensões para CDaoRecordset, no entanto, talvez seja necessário usar o ponteiro. Por exemplo, você pode precisar do ponteiro se lançar o(s) seu(s) próprio CDaoException(s).

Para obter informações relacionadas, consulte o tópico "Objeto de banco de dados" na Ajuda do DAO.

CDaoRecordset::m_strFilter

Contém uma cadeia de caracteres que é usada para construir a cláusula WHERE de uma instrução SQL.

Observações

Ele não inclui a palavra reservada WHERE para filtrar o conjunto de registros. O uso desse membro de dados não é aplicável a conjuntos de registros do tipo tabela. O uso de não tem efeito ao abrir um conjunto de m_strFilter registros usando um CDaoQueryDef ponteiro.

Use o formato de data dos EUA (mês-dia-ano) ao filtrar campos contendo datas, mesmo que não esteja usando a versão dos EUA do mecanismo de banco de dados Microsoft Jet; caso contrário, os dados podem não ser filtrados como esperado.

Para obter informações relacionadas, consulte o tópico "Propriedade de filtro" na Ajuda do DAO.

CDaoRecordset::m_strSort

Contém uma cadeia de caracteres que contém a cláusula ORDERBY de uma instrução SQL sem as palavras reservadas ORDERBY.

Observações

Você pode classificar em objetos de conjunto de registros do tipo dynaset e snapshot.

Não é possível classificar objetos de conjunto de registros do tipo tabela. Para determinar a ordem de classificação de um conjunto de registros do tipo tabela, chame SetCurrentIndex.

O uso de m_strSort não tem efeito ao abrir um conjunto de registros usando um CDaoQueryDef ponteiro.

Para obter informações relacionadas, consulte o tópico "Classificar propriedade" na Ajuda do DAO.

CDaoRecordset::Mover

Chame essa função de membro para posicionar os registros lRows do conjunto de registros do registro atual.

virtual void Move(long lRows);

Parâmetros

lLinhas
O número de registros para avançar ou retroceder. Os valores positivos avançam, no final do conjunto de registros. Os valores negativos andam para trás, para o início.

Observações

Você pode avançar ou retroceder. Move( 1 ) é equivalente a MoveNext, e Move( -1 ) é equivalente a MovePrev.

Atenção

Chamar qualquer uma das funções gera uma exceção se o conjunto de Move registros não tiver registros. Em geral, chame ambos IsBOF e IsEOF antes de uma operação Move para determinar se o conjunto de registros tem algum registro. Depois de ligar Open ou Requery, ligue para um ou IsBOFIsEOF.

Observação

Se você tiver passado pelo início ou fim do conjunto de registros (IsBOF ou IsEOF retornar diferente de zero), uma chamada para Move lançar um CDaoExceptionarquivo .

Observação

Se você chamar qualquer uma das Move funções enquanto o registro atual está sendo atualizado ou adicionado, as atualizações serão perdidas sem aviso.

Quando você chama Move um instantâneo de rolagem somente para frente, o parâmetro lRows deve ser um inteiro positivo e os marcadores não são permitidos, para que você possa avançar somente.

Para tornar o primeiro, último, próximo ou anterior registro em um conjunto de registros o registro atual, chame a MoveFirstfunção , MoveLastMoveNext, ou MovePrev membro.

Para obter informações relacionadas, consulte os tópicos "Método Move" e "MoveFirst, MoveLast, MoveNext, Métodos MovePrevious " na Ajuda do DAO.

CDaoRecordset::MoveFirst

Chame essa função de membro para tornar o primeiro registro no conjunto de registros (se houver) o registro atual.

void MoveFirst();

Observações

Você não precisa ligar MoveFirst imediatamente depois de abrir o conjunto de registros. Nesse momento, o primeiro registro (se houver) é automaticamente o registro atual.

Atenção

Chamar qualquer uma das funções gera uma exceção se o conjunto de Move registros não tiver registros. Em geral, chame ambos IsBOF e IsEOF antes de uma operação Move para determinar se o conjunto de registros tem algum registro. Depois de ligar Open ou Requery, ligue para um ou IsBOFIsEOF.

Observação

Se você chamar qualquer uma das Move funções enquanto o registro atual está sendo atualizado ou adicionado, as atualizações serão perdidas sem aviso.

Use as Move funções para passar de registro em registro sem aplicar uma condição. Use as operações Find para localizar registros em um objeto de conjunto de registros do tipo dynaset ou snapshot que satisfaçam uma determinada condição. Para localizar um registro em um objeto de conjunto de registros do tipo tabela, chame Seek.

Se o conjunto de registros se referir a um conjunto de registros do tipo tabela, o movimento seguirá o índice atual da tabela. Você pode definir o índice atual usando a propriedade Index do objeto DAO subjacente. Se você não definir o índice atual, a ordem dos registros retornados será indefinida.

Se você chamar MoveLast um objeto de conjunto de registros com base em uma consulta SQL ou querydef, a consulta será forçada a ser concluída e o objeto de conjunto de registros será totalmente preenchido.

Não é possível chamar a MoveFirst função ou MovePrev membro com um instantâneo de rolagem somente para frente.

Para mover a posição do registro atual em um objeto de conjunto de registros um número específico de registros para frente ou para trás, chame Move.

Para obter informações relacionadas, consulte os tópicos "Método Move" e "MoveFirst, MoveLast, MoveNext, Métodos MovePrevious " na Ajuda do DAO.

CDaoRecordset::MoveLast

Chame essa função de membro para tornar o último registro (se houver) no conjunto de registros o registro atual.

void MoveLast();

Observações

Atenção

Chamar qualquer uma das funções gera uma exceção se o conjunto de Move registros não tiver registros. Em geral, chame ambos IsBOF e IsEOF antes de uma operação Move para determinar se o conjunto de registros tem algum registro. Depois de ligar Open ou Requery, ligue para um ou IsBOFIsEOF.

Observação

Se você chamar qualquer uma das Move funções enquanto o registro atual está sendo atualizado ou adicionado, as atualizações serão perdidas sem aviso.

Use as Move funções para passar de registro em registro sem aplicar uma condição. Use as operações Find para localizar registros em um objeto de conjunto de registros do tipo dynaset ou snapshot que satisfaçam uma determinada condição. Para localizar um registro em um objeto de conjunto de registros do tipo tabela, chame Seek.

Se o conjunto de registros se referir a um conjunto de registros do tipo tabela, o movimento seguirá o índice atual da tabela. Você pode definir o índice atual usando a propriedade Index do objeto DAO subjacente. Se você não definir o índice atual, a ordem dos registros retornados será indefinida.

Se você chamar MoveLast um objeto de conjunto de registros com base em uma consulta SQL ou querydef, a consulta será forçada a ser concluída e o objeto de conjunto de registros será totalmente preenchido.

Para mover a posição do registro atual em um objeto de conjunto de registros um número específico de registros para frente ou para trás, chame Move.

Para obter informações relacionadas, consulte os tópicos "Método Move" e "MoveFirst, MoveLast, MoveNext, Métodos MovePrevious " na Ajuda do DAO.

CDaoRecordset::MoveNext

Chame essa função de membro para tornar o próximo registro no conjunto de registros o registro atual.

void MoveNext();

Observações

É recomendável que você ligue IsBOF antes de tentar mover para o registro anterior. Uma chamada para MovePrev lançar um if CDaoException retorna diferente IsBOF de zero, indicando que você já rolou antes do primeiro registro ou que nenhum registro foi selecionado pelo conjunto de registros.

Atenção

Chamar qualquer uma das funções gera uma exceção se o conjunto de Move registros não tiver registros. Em geral, chame ambos IsBOF e IsEOF antes de uma operação Move para determinar se o conjunto de registros tem algum registro. Depois de ligar Open ou Requery, ligue para um ou IsBOFIsEOF.

Observação

Se você chamar qualquer uma das Move funções enquanto o registro atual está sendo atualizado ou adicionado, as atualizações serão perdidas sem aviso.

Use as Move funções para passar de registro em registro sem aplicar uma condição. Use as operações Find para localizar registros em um objeto de conjunto de registros do tipo dynaset ou snapshot que satisfaçam uma determinada condição. Para localizar um registro em um objeto de conjunto de registros do tipo tabela, chame Seek.

Se o conjunto de registros se referir a um conjunto de registros do tipo tabela, o movimento seguirá o índice atual da tabela. Você pode definir o índice atual usando a propriedade Index do objeto DAO subjacente. Se você não definir o índice atual, a ordem dos registros retornados será indefinida.

Para mover a posição do registro atual em um objeto de conjunto de registros um número específico de registros para frente ou para trás, chame Move.

Para obter informações relacionadas, consulte os tópicos "Método Move" e "MoveFirst, MoveLast, MoveNext, Métodos MovePrevious " na Ajuda do DAO.

CDaoRecordset::MovePrev

Chame essa função de membro para tornar o registro anterior no conjunto de registros o registro atual.

void MovePrev();

Observações

É recomendável que você ligue IsBOF antes de tentar mover para o registro anterior. Uma chamada para MovePrev lançar um if CDaoException retorna diferente IsBOF de zero, indicando que você já rolou antes do primeiro registro ou que nenhum registro foi selecionado pelo conjunto de registros.

Atenção

Chamar qualquer uma das funções gera uma exceção se o conjunto de Move registros não tiver registros. Em geral, chame ambos IsBOF e IsEOF antes de uma operação Move para determinar se o conjunto de registros tem algum registro. Depois de ligar Open ou Requery, ligue para um ou IsBOFIsEOF.

Observação

Se você chamar qualquer uma das Move funções enquanto o registro atual está sendo atualizado ou adicionado, as atualizações serão perdidas sem aviso.

Use as Move funções para passar de registro em registro sem aplicar uma condição. Use as operações Find para localizar registros em um objeto de conjunto de registros do tipo dynaset ou snapshot que satisfaçam uma determinada condição. Para localizar um registro em um objeto de conjunto de registros do tipo tabela, chame Seek.

Se o conjunto de registros se referir a um conjunto de registros do tipo tabela, o movimento seguirá o índice atual da tabela. Você pode definir o índice atual usando a propriedade Index do objeto DAO subjacente. Se você não definir o índice atual, a ordem dos registros retornados será indefinida.

Não é possível chamar a MoveFirst função ou MovePrev membro com um instantâneo de rolagem somente para frente.

Para mover a posição do registro atual em um objeto de conjunto de registros um número específico de registros para frente ou para trás, chame Move.

Para obter informações relacionadas, consulte os tópicos "Método Move" e "MoveFirst, MoveLast, MoveNext, Métodos MovePrevious " na Ajuda do DAO.

CDaoRecordset::Aberto

Você deve chamar essa função de membro para recuperar os registros do 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 cadeia de caracteres contendo um dos seguintes:

  • Um ponteiro NULL.

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

  • Uma instrução SQL Select (opcionalmente com uma cláusula SQL WHERE ou ORDERBY ).

  • Uma consulta de passagem.

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

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

  • dbForwardOnly O conjunto de registros é um instantâneo de rolagem somente para frente.

  • dbSeeChanges Gere uma exceção se outro usuário estiver alterando os dados que você está editando.

  • dbDenyWrite Outros usuários não podem modificar ou adicionar registros.

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

  • dbReadOnly Você só pode visualizar registros; outros usuários podem modificá-los.

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

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

Observação

As constantes dbConsistent e dbInconsistent são mutuamente exclusivas. Você pode usar um ou outro, mas não ambos em uma determinada instância do Open.

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 CDaoDatabase ponteiro usado para construir o CDaoRecordset não é usado, em vez disso, o banco de dados no qual o tabledef reside é usado.

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

Observações

Antes de chamar Open, você deve construir o objeto recordset. Há várias maneiras de fazer isso:

  • Ao construir o objeto recordset, passe um ponteiro para um CDaoDatabase objeto que já está aberto.

  • Ao construir o objeto do conjunto de registros, passe um ponteiro para um CDaoDatabase objeto que não está aberto. O conjunto de registros abre um CDaoDatabase objeto, mas não o fecha quando o objeto do conjunto de registros é fechado.

  • Ao construir o objeto do conjunto de registros, passe um ponteiro NULL. O objeto recordset chama GetDefaultDBName para obter o nome do Microsoft Access . MDB para abrir. Em seguida, o conjunto de registros abre um CDaoDatabase objeto e o mantém aberto enquanto o conjunto de registros estiver aberto. Quando você chama Close o conjunto de registros, o CDaoDatabase objeto também é fechado.

    Observação

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

Para a versão que usa o parâmetro Open, uma vez que o conjunto de registros está aberto, você pode recuperar registros de uma das várias maneiras. A primeira opção é ter funções DFX no seu DoFieldExchange. A segunda opção é usar a vinculação dinâmica chamando a GetFieldValue função de membro. Estas opções podem ser implementadas separadamente ou em combinação. Se eles forem combinados, você mesmo terá que passar a instrução SQL na chamada para Open.

Quando você usa a segunda versão de Open onde você passa em um CDaoTableDef objeto, as colunas resultantes estão disponíveis para você vincular via DoFieldExchange e o mecanismo DFX e/ou vincular dinamicamente via GetFieldValue.

Observação

Você só pode chamar Open usando um CDaoTableDef objeto para conjuntos de registros do tipo tabela.

Quando você usa a terceira versão de Open onde você passa em um CDaoQueryDef objeto, essa consulta é executada e as colunas resultantes estão disponíveis para você vincular via DoFieldExchange e o mecanismo DFX e/ou vincular dinamicamente via GetFieldValue.

Observação

Você só pode chamar Open usando um CDaoQueryDef objeto para conjuntos de registros do tipo dynaset e do tipo instantâneo.

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

Valor do lpszSQL parâmetro Os registos selecionados são determinados por Exemplo
NULO A cadeia de caracteres retornada por GetDefaultSQL.
Uma lista separada por vírgulas de um ou mais nomes tabledefs e/ou querydef. Todas as colunas representadas DoFieldExchangeno . "Customer"
SELECT column-list FROM table-list As colunas especificadas da tabledef(s) e/ou querydef(s) especificadas. "SELECT CustId, CustName

FROM Customer"

O procedimento usual é passar NULL para Open; nesse caso, Open chama GetDefaultSQL, uma função de membro substituível que ClassWizard gera ao criar uma CDaoRecordsetclasse derivada. Esse valor fornece o(s) nome(s) tabledef(s) e/ou querydef especificado(s) em ClassWizard. Em vez disso, você pode especificar outras informações no parâmetro lpszSQL .

O que quer que você passe, constrói uma cadeia de caracteres SQL final para a consulta (a cadeia de caracteres pode ter as cláusulas SQL Open e ORDERBY anexadas à cadeia de caracteres lpszSQL que você passou) e, em seguida, executa a consulta. Você pode examinar a cadeia de caracteres construída chamando depois de GetSQL chamar Open.

Os membros de dados de campo da sua classe de conjunto de registros são vinculados às colunas dos dados selecionados. Se algum registro for retornado, o primeiro registro se tornará o registro atual.

Se você quiser definir opções para o conjunto de registros, como um filtro ou classificação, defina m_strSort ou m_strFilter depois de construir o objeto do conjunto de registros, mas antes de chamar Open. Se desejar atualizar os registros no conjunto de registros depois que o conjunto de registros já estiver aberto, chame Requery.

Se você chamar Open um conjunto de registros do tipo dynaset ou snapshot, ou se a fonte de dados se referir a uma instrução SQL ou a uma tabledef que representa uma tabela anexada, não poderá usar dbOpenTable para o argumento type, se o fizer, o MFC lançará uma exceção. Para determinar se um objeto tabledef representa uma tabela anexada, crie um objeto CDaoTableDef e chame sua função de membro GetConnect .

Use o dbSeeChanges sinalizador se desejar intercetar as alterações feitas por outro usuário ou outro programa em sua máquina quando estiver editando ou excluindo o mesmo registro. Por exemplo, se dois usuários começarem a editar o mesmo registro, o primeiro usuário a chamar a Update função de membro será bem-sucedido. Quando Update é chamado pelo segundo usuário, um CDaoException é lançado. Da mesma forma, se o segundo usuário tentar chamar Delete para excluir o registro e ele já tiver sido alterado pelo primeiro usuário, ocorrerá um CDaoException .

Normalmente, se o usuário obtiver isso CDaoException durante a atualização, seu código deverá atualizar o conteúdo dos campos e recuperar os valores recém-modificados. Se a exceção ocorrer no processo de exclusão, seu código poderá exibir os novos dados de registro para o usuário e uma mensagem indicando que os dados foram alterados recentemente. Neste ponto, seu código pode solicitar uma confirmação de que o usuário ainda deseja excluir o registro.

Sugestão

Use a opção de rolagem somente para frente (dbForwardOnly) para melhorar o desempenho quando seu aplicativo fizer uma única passagem por 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.

CDaoRecordset::Requery

Chame essa função de membro para reconstruir (atualizar) um conjunto de registros.

virtual void Requery();

Observações

Se algum registro for retornado, o primeiro registro se tornará o registro atual.

Para que o conjunto de registros reflita as adições e exclusões que você ou outros usuários estão fazendo na fonte de dados, você deve reconstruir o conjunto de registros chamando Requery. Se o conjunto de registros for um dynaset, ele refletirá automaticamente as atualizações que você ou outros usuários fizerem em seus registros existentes (mas não adições). Se o conjunto de registros for um instantâneo, você deverá chamar Requery para refletir edições feitas por outros usuários, bem como adições e exclusões.

Para um dynaset ou um snapshot, chame Requery quando quiser reconstruir o conjunto de registros usando valores de parâmetro. Defina o novo filtro ou ordene por definição m_strFilter e m_strSort antes de chamar Requery. Defina novos parâmetros atribuindo novos valores aos membros de dados de parâmetros antes de chamar Requery.

Se a tentativa de reconstruir o conjunto de registros falhar, o conjunto de registros será fechado. Antes de chamar Requeryo , você pode determinar se o conjunto de registros pode ser consultado novamente chamando a CanRestart função de membro. CanRestart não garante que Requery terá sucesso.

Atenção

Ligue Requery somente depois de ter ligado Open.

Observação

Chamar Requery altera marcadores DAO.

Você não pode chamar Requery um conjunto de registros do tipo dynaset ou snapshot se a chamada CanRestart retornar 0, nem pode usá-lo em um conjunto de registros do tipo tabela.

Se ambos IsBOF retornarem IsEOF diferente de zero após a chamada Requery, a consulta não retornou nenhum registro e o conjunto de registros não conterá dados.

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

CDaoRecordset::Procurar

Chame essa função de membro para localizar o registro em um objeto de conjunto de registros do tipo tabela indexada que satisfaça os critérios especificados para o índice atual e torne esse registro o registro atual.

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

Parâmetros

lpszComparação
Uma das seguintes expressões de cadeia de caracteres: "<", "<=", "=", ">=" ou ">".

pKey1
Um ponteiro para um COleVariant cujo valor corresponde ao primeiro campo do índice. Obrigatório

pKey2
Um ponteiro para um COleVariant cujo valor corresponde ao segundo campo do índice, se houver. O padrão é NULL.

pKey3
Um ponteiro para um COleVariant cujo valor corresponde ao terceiro campo no índice, se houver. O padrão é NULL.

pKeyArray
Um ponteiro para uma matriz de variantes. O tamanho da matriz corresponde ao número de campos no índice.

nChaves
Um inteiro correspondente ao tamanho da matriz, que é o número de campos no índice.

Observação

on't especificar curingas nas chaves. Os curingas farão com que Seek nenhum registro correspondente seja retornado.

Valor de retorno

Diferente de zero se os registros correspondentes forem encontrados, caso contrário, 0.

Observações

Use a segunda versão (matriz) do Seek para manipular índices de quatro campos ou mais.

Seek Permite a pesquisa de índice de alto desempenho em conjuntos de registros do tipo tabela. Você deve definir o índice atual chamando antes de SetCurrentIndex chamar Seek. Se o índice identificar um campo ou campos de chave não exclusivos, Seek localizará o primeiro registro que satisfaz os critérios. Se você não definir um índice, uma exceção será lançada.

Se você não estiver criando um conjunto de registros UNICODE, os objetos deverão ser explicitamente declarados COleVariant ANSI. Isso pode ser feito usando a forma COleVariant::COleVariant(lpszSrc,vtSrc) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usando a COleVariant função SetString(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT.

Ao ligar Seekpara o , você passa um ou mais valores-chave e um operador de comparação ("<", "<=", "=", ">=", ou ">"). Seek pesquisa através dos campos de chave especificados e localiza o primeiro registro que satisfaz os critérios especificados por lpszComparison e pKey1. Uma vez encontrado, Seek retorna diferente de zero e torna esse registro atual. Se Seek não conseguir localizar uma correspondência, Seek retorna zero e o registro atual é indefinido. Ao usar DAO diretamente, você deve verificar explicitamente a propriedade NoMatch.

Se lpszComparison for "=", ">=" ou ">", Seek começa no início do índice. Se lpszComparison for "<" ou "<=", começa no final do índice e pesquisa para trás, Seek a menos que haja entradas de índice duplicadas no final. Nesse caso, Seek começa com uma entrada arbitrária entre as entradas de índice duplicadas no final do índice.

Não precisa haver um registro atual quando você usa Seeko .

Para localizar um registro em um conjunto de registros do tipo dynaset ou snapshot que satisfaça uma condição específica, use as operações Find. Para incluir todos os registros, não apenas aqueles que satisfazem uma condição específica, use as operações Move para mover de registro para registro.

Não é possível chamar Seek uma tabela anexada de qualquer tipo porque as tabelas anexadas devem ser abertas como conjuntos de registros do tipo dynaset ou do tipo instantâneo. No entanto, se você chamar CDaoDatabase::Open para abrir diretamente um banco de dados ISAM instalável, poderá chamar Seek tabelas nesse banco de dados, embora o desempenho possa ser lento.

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

CDaoRecordset::SetAbsolutePosition

Define o número de registro relativo do registro atual de um objeto de conjunto de registros.

void SetAbsolutePosition(long lPosition);

Parâmetros

lPosição
Corresponde à posição ordinal do registro atual no conjunto de registros.

Observações

A chamada SetAbsolutePosition permite posicionar o ponteiro de registro atual para um registro específico com base em sua posição ordinal em um conjunto de registros do tipo dynaset ou snapshot. Você também pode determinar o número de registro atual chamando GetAbsolutePosition.

Observação

Essa função de membro é válida apenas para conjuntos de registros do tipo dynaset e do tipo snapshot.

O valor da propriedade AbsolutePosition do objeto DAO subjacente é baseado em zero; Uma definição de 0 refere-se ao primeiro registo no conjunto de registos. Definir um valor maior do que o número de registros preenchidos faz com que o MFC lance uma exceção. Você pode determinar o número de registros preenchidos no conjunto de registros chamando a GetRecordCount função de membro.

Se o registro atual for excluído, o valor da propriedade AbsolutePosition não será definido e o MFC lançará uma exceção se for referenciado. Novos registros são adicionados ao final da sequência.

Observação

Esta propriedade não se destina a ser usada como um número de registro substituto. Os marcadores ainda são a maneira recomendada de reter e retornar a uma determinada posição e são a única maneira de posicionar o registro atual em todos os tipos de objetos de conjunto de registros que suportam marcadores. Em especial, a posição de um dado registo muda quando o(s) registo(s) anterior(es) é(são) suprimido(s). Também não há garantia de que um determinado registro terá a mesma posição absoluta se o conjunto de registros for recriado novamente porque a ordem dos registros individuais dentro de um conjunto de registros não é garantida, a menos que ele seja criado com uma instrução SQL usando uma cláusula ORDERBY .

Para obter informações relacionadas, consulte o tópico "Propriedade AbsolutePosition" na Ajuda do DAO.

CDaoRecordset::SetBookmark

Chame essa função de membro para posicionar o conjunto de registros no registro que contém o marcador especificado.

void SetBookmark(COleVariant varBookmark);

Parâmetros

varBookmark
Um objeto COleVariant que contém o valor do indicador para um registro específico.

Observações

Quando um objeto de conjunto de registros é criado ou aberto, cada um de seus registros já tem um marcador exclusivo. Você pode recuperar o indicador para o registro atual chamando GetBookmark e salvando o valor em um COleVariant objeto. Mais tarde, você pode retornar a esse registro chamando SetBookmark usando o valor do marcador salvo.

Observação

Chamar Requery altera os marcadores DAO.

Se você não estiver criando um conjunto de registros UNICODE, o objeto deverá ser explicitamente declarado COleVariant ANSI. Isso pode ser feito usando a forma COleVariant::COleVariant(lpszSrc,vtSrc) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usando a COleVariant função SetString(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT.

Para obter informações relacionadas, consulte os tópicos "Propriedade de favorito" e "Propriedade de marcador" na Ajuda do DAO.

CDaoRecordset::SetCacheSize

Chame essa função de membro para definir o número de registros a serem armazenados em cache.

void SetCacheSize(long lSize);

Parâmetros

lTamanho
Especifica o número de registros. Um valor típico é 100. Uma configuração de 0 desativa o cache. A configuração deve estar entre 5 e 1.200 registros. O cache pode usar uma quantidade considerável de memória.

Observações

Um cache é um espaço na memória local que contém os dados recuperados mais recentemente do servidor, caso os dados sejam solicitados novamente enquanto o aplicativo está em execução. O cache de dados melhora o desempenho de um aplicativo que recupera dados de um servidor remoto por meio de objetos de conjunto de registros do tipo dynaset. Quando os dados são solicitados, o mecanismo de banco de dados Microsoft Jet verifica o cache para os dados solicitados primeiro, em vez de recuperá-los do servidor, o que leva mais tempo. Os dados que não vêm de uma fonte de dados ODBC não são salvos no cache.

Qualquer fonte de dados ODBC, como uma tabela anexada, pode ter um cache local. Para criar o cache, abra um objeto de conjunto de registros da fonte de dados remota, chame as SetCacheSize funções e SetCacheStart membro e, em seguida, chame a FillCache função de membro ou percorra os registros usando uma das operações Mover. O parâmetro lSize da função de SetCacheSize membro pode ser baseado no número de registros com os quais seu aplicativo pode trabalhar ao mesmo tempo. Por exemplo, se você estiver usando um conjunto de registros como a fonte dos dados a serem exibidos na tela, poderá passar o SetCacheSize parâmetro lSize como 20 para exibir 20 registros de uma só vez.

Para obter informações relacionadas, consulte o tópico "CacheSize, CacheStart Properties" na Ajuda do DAO.

CDaoRecordset::SetCacheStart

Chame essa função de membro para especificar o marcador do primeiro registro no conjunto de registros a ser armazenado em cache.

void SetCacheStart(COleVariant varBookmark);

Parâmetros

varBookmark
Um COleVariant que especifica o indicador do primeiro registro no conjunto de registros a ser armazenado em cache.

Observações

Você pode usar o valor bookmark de qualquer registro para o parâmetro varBookmark da SetCacheStart função member. Faça o registro que você deseja iniciar o cache com o registro atual, estabeleça um marcador para esse registro usando SetBookmark e passe o valor do indicador como o parâmetro para a SetCacheStart função de membro.

O mecanismo de banco de dados Microsoft Jet solicita registros dentro do intervalo de cache do cache e solicita registros fora do intervalo de cache do servidor.

Os registros recuperados do cache não refletem as alterações feitas simultaneamente nos dados de origem por outros usuários.

Para forçar uma atualização de todos os dados armazenados em cache, passe o parâmetro lSize como SetCacheSize 0, chame SetCacheSize novamente com o tamanho do cache que você solicitou originalmente e, em seguida, chame a FillCache função de membro.

Se você não estiver criando um conjunto de registros UNICODE, o objeto deverá ser explicitamente declarado COleVariant ANSI. Isso pode ser feito usando a forma COleVariant::COleVariant(lpszSrc,vtSrc) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usando a COleVariant função SetString(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT.

Para obter informações relacionadas, consulte o tópico CacheSize, CacheStart Properties" na Ajuda do DAO.

CDaoRecordset::SetCurrentIndex

Chame essa função de membro para definir um índice em um conjunto de registros do tipo tabela.

void SetCurrentIndex(LPCTSTR lpszIndex);

Parâmetros

lpszIndex
Um ponteiro contendo o nome do índice a ser definido.

Observações

Os registros em tabelas base não são armazenados em nenhuma ordem específica. A definição de um índice altera a ordem dos registros retornados do banco de dados, mas não afeta a ordem em que os registros são armazenados. O índice especificado já deve estar definido. Se você tentar usar um objeto de índice que não existe, ou se o índice não estiver definido quando você chamar Seek, o MFC lançará uma exceção.

Você pode criar um novo índice para a tabela chamando CDaoTableDef::CreateIndex e anexando o novo índice à coleção Indexes da tabledef subjacente chamando CDaoTableDef::Append e reabrindo o conjunto de registros.

Os registros retornados de um conjunto de registros do tipo tabela podem ser ordenados somente pelos índices definidos para a tabela subjacente. Para classificar registros em outra ordem, você pode abrir um conjunto de registros do tipo dynaset ou snapshot usando uma cláusula SQL ORDERBY armazenada em CDaoRecordset::m_strSort.

Para obter informações relacionadas, consulte o tópico "Objeto de índice" e a definição "índice atual" na Ajuda do DAO.

CDaoRecordset::SetFieldDirty

Chame essa função de membro para sinalizar um membro de dados de campo do conjunto de registros como alterado ou inalterado.

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

Parâmetros

PV
Contém o endereço de um membro de dados de campo no conjunto de registros ou NULL. Se NULL, todos os membros de dados de campo no conjunto de registros são sinalizados. (C++ NULL não é o mesmo que Null na terminologia do banco de dados, o que significa "sem valor.")

bSujo
TRUE se o membro de dados de campo deve ser sinalizado como "sujo" (alterado). Caso contrário, FALSE se o membro de dados de campo deve ser sinalizado como "limpo" (inalterado).

Observações

Marcar campos como inalterados garante que o campo não seja atualizado.

A estrutura marca os membros de dados de campo alterados para garantir que eles sejam gravados no registro na fonte de dados pelo mecanismo de troca de campo de registro (DFX) DAO. Alterar o valor de um campo geralmente define o campo sujo automaticamente, portanto, você raramente precisará chamar SetFieldDirty a si mesmo, mas às vezes convém garantir que as colunas sejam explicitamente atualizadas ou inseridas, independentemente do valor no membro de dados do campo. O mecanismo DFX também emprega o uso de PSEUDONULL. Para obter mais informações, consulte CDaoFieldExchange::m_nOperation.

Se o mecanismo de buffer duplo não estiver sendo usado, alterar o valor do campo não definirá automaticamente o campo como sujo. Neste caso, é necessário definir explicitamente o campo como sujo. O sinalizador contido no m_bCheckCacheForDirtyFields controla essa verificação automática de campo.

Observação

Chame essa função de membro somente depois de ter chamado Edit ou AddNew.

Usar NULL para o primeiro argumento da função aplicará a função a todos os outputColumn campos, não aos campos param em CDaoFieldExchange. Por exemplo, a chamada

SetFieldDirty(NULL);

definirá apenas outputColumn campos como NULL; Os campos param não são afetados.

Para trabalhar em um param, você deve fornecer o endereço real do parâmetro individual em que deseja trabalhar, como:

SetFieldDirty(&m_strParam);

Isso significa que você não pode definir todos os campos param como NULL, como acontece com outputColumn os campos.

SetFieldDirty é implementado através do DoFieldExchange.

CDaoRecordset::SetFieldNull

Chame essa função de membro para sinalizar um membro de dados de campo do conjunto de registros como Nulo (especificamente sem valor) ou como não Nulo.

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

Parâmetros

PV
Contém o endereço de um membro de dados de campo no conjunto de registros ou NULL. Se NULL, todos os membros de dados de campo no conjunto de registros são sinalizados. (C++ NULL não é o mesmo que Null na terminologia do banco de dados, o que significa "sem valor.")

bNulo
Diferente de zero se o membro de dados de campo deve ser sinalizado como não tendo valor (Nulo). Caso contrário, 0 se o membro de dados de campo deve ser sinalizado como não-Nulo.

Observações

SetFieldNull é usado para campos vinculados no DoFieldExchange mecanismo.

Quando você adiciona um novo registro a um conjunto de registros, todos os membros de dados de campo são inicialmente definidos como um valor Nulo e sinalizados como "sujo" (alterado). Quando você recupera um registro de uma fonte de dados, suas colunas já têm valores ou são Nulas. Se não for apropriado tornar um campo Nulo, um CDaoException será lançado.

Se você estiver usando o mecanismo de buffer duplo, por exemplo, se desejar especificamente designar um campo do registro atual como não tendo um valor, chame SetFieldNull com bNull definido como TRUE para sinalizá-lo como Nulo. Se um campo foi marcado anteriormente como Nulo e agora você deseja dar a ele um valor, defina seu novo valor. Não é necessário remover o sinalizador Nulo com SetFieldNull. Para determinar se o campo pode ser Nulo, chame IsFieldNullable.

Se você não estiver usando o mecanismo de buffer duplo, alterar o valor do campo não definirá automaticamente o campo como sujo e não nulo. Você deve definir especificamente os campos sujos e não nulos. O sinalizador contido no m_bCheckCacheForDirtyFields controla essa verificação automática de campo.

O mecanismo DFX emprega o uso de PSEUDONULL. Para obter mais informações, consulte CDaoFieldExchange::m_nOperation.

Observação

Chame essa função de membro somente depois de ter chamado Edit ou AddNew.

Usar NULL para o primeiro argumento da função aplicará a função somente a campos, não a outputColumn campos param em CDaoFieldExchange. Por exemplo, a chamada

SetFieldNull(NULL);

definirá apenas outputColumn campos como NULL; Os campos param não são afetados.

CDaoRecordset::SetFieldValue

Chame essa função de membro para definir o valor de um campo, seja por posição ordinal ou alterando o valor da cadeia de caracteres.

virtual void SetFieldValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetFieldValue(
    int nIndex,
    const COleVariant& varValue);

void SetFieldValue(
    LPCTSTR lpszName,
    LPCTSTR lpszValue);

void SetFieldValue(
    int nIndex,
    LPCTSTR lpszValue);

Parâmetros

lpszName
Um ponteiro para uma cadeia de caracteres que contém o nome de um campo.

varValue
Uma referência a um objeto COleVariant que contém o valor do conteúdo do campo.

nÍndice
Um inteiro que representa a posição ordinal do campo na coleção Fields do conjunto de registros (baseado em zero).

lpszValue
Um ponteiro para uma cadeia de caracteres que contém o valor do conteúdo do campo.

Observações

Use SetFieldValue e GetFieldValue para vincular campos dinamicamente em tempo de execução em vez de vincular colunas estaticamente usando o mecanismo DoFieldExchange .

Se você não estiver criando um conjunto de registros UNICODE, deverá usar um formulário que não contenha um SetFieldValue parâmetro ou o objeto deverá ser explicitamente declarado COleVariantCOleVariant ANSI. Isso pode ser feito usando a forma COleVariant::COleVariant(lpszSrc,vtSrc) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usando a COleVariant função SetString(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT.

Para obter informações relacionadas, consulte os tópicos "Objeto de campo" e "Propriedade de valor" na Ajuda do DAO.

CDaoRecordset::SetFieldValueNull

Chame essa função de membro para definir o campo como um valor Nulo.

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

Parâmetros

nÍndice
O índice do campo no conjunto de registros, para pesquisa por índice baseado em zero.

lpszName
O nome do campo no conjunto de registros, para pesquisa por nome.

Observações

C++ NULL não é o mesmo que Null, que, na terminologia do banco de dados, significa "sem valor".

Para obter informações relacionadas, consulte os tópicos "Objeto de campo" e "Propriedade de valor" na Ajuda do DAO.

CDaoRecordset::SetLockingMode

Chame essa função de membro para definir o tipo de bloqueio para o conjunto de registros.

void SetLockingMode(BOOL bPessimistic);

Parâmetros

bPessimista
Um sinalizador que indica o tipo de bloqueio.

Observações

Quando o bloqueio pessimista está em vigor, a página 2K que contém o registro que você está editando é bloqueada assim que você chama a Edit função de membro. A página é desbloqueada quando você chama a Update função ou Close membro ou qualquer uma das operações Mover ou Localizar.

Quando o bloqueio otimista está em vigor, a página 2K que contém o registro é bloqueada apenas enquanto o registro está sendo atualizado com a Update função de membro.

Se uma página estiver bloqueada, nenhum outro usuário poderá editar registros na mesma página. Se você chamar SetLockingMode e passar um valor diferente de zero e outro usuário já tiver a página bloqueada, uma exceção será lançada quando você chamar Edit. Outros usuários podem ler dados de páginas bloqueadas.

Se você chamar SetLockingMode com um valor zero e depois chamar Update enquanto a página estiver bloqueada por outro usuário, ocorrerá uma exceção. Para ver as alterações feitas no seu registro por outro usuário (e perder as alterações), chame a SetBookmark função de membro com o valor de marcador do registro atual.

Ao trabalhar com fontes de dados ODBC, o modo de bloqueio é sempre otimista.

CDaoRecordset::SetParamValue

Chame essa função de membro para definir o valor de um parâmetro no conjunto de registros em tempo de execução.

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

Parâmetros

nÍndice
A posição numérica do parâmetro na coleção Parameters do querydef.

VAR
O valor a definir; ver Observações.

lpszName
O nome do parâmetro cujo valor você deseja definir.

Observações

O parâmetro já deve ter sido estabelecido como parte da cadeia de caracteres SQL do conjunto de registros. Você pode acessar o parâmetro pelo nome ou por sua posição de índice na coleção.

Especifique o valor a ser definido como um COleVariant objeto. Para obter informações sobre como definir o valor desejado e digitar seu COleVariant objeto, consulte classe COleVariant. Se você não estiver criando um conjunto de registros UNICODE, o objeto deverá ser explicitamente declarado COleVariant ANSI. Isso pode ser feito usando a forma COleVariant::COleVariant(lpszSrc,vtSrc) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usando a COleVariant função SetString(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT.

CDaoRecordset::SetParamValueNull

Chame essa função de membro para definir o parâmetro como um valor Nulo.

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

Parâmetros

nÍndice
O índice do campo no conjunto de registros, para pesquisa por índice baseado em zero.

lpszName
O nome do campo no conjunto de registros, para pesquisa por nome.

Observações

C++ NULL não é o mesmo que Null, que, na terminologia do banco de dados, significa "sem valor".

CDaoRecordset::SetPercentPosition

Chame essa função de membro para definir um valor que altere o local aproximado do registro atual no objeto do conjunto de registros com base em uma porcentagem dos registros no conjunto de registros.

void SetPercentPosition(float fPosition);

Parâmetros

fPosição
Um número entre 0 e 100.

Observações

Ao trabalhar com um conjunto de registros do tipo dynaset ou snapshot, primeiro preencha o conjunto de registros movendo-se para o último registro antes de chamar SetPercentPosition. Se você ligar SetPercentPosition antes de preencher totalmente o conjunto de registros, a quantidade de movimento será relativa ao número de registros acessados, conforme indicado pelo valor de GetRecordCount. Você pode ir para o último registro chamando MoveLast.

Depois de chamar SetPercentPosition, o registro na posição aproximada correspondente a esse valor torna-se atual.

Observação

Chamar SetPercentPosition para mover o registro atual para um registro específico em um conjunto de registros não é recomendado. Em vez disso, chame a função de membro SetBookmark .

Para obter informações relacionadas, consulte o tópico "Propriedade PercentPosition" na Ajuda do DAO.

CDaoRecordset::Atualizar

Chame essa função de membro após uma chamada para a AddNew função ou Edit membro.

virtual void Update();

Observações

Esta chamada é necessária para concluir a AddNew operação ou Edit .

Ambos AddNew e Edit preparar um buffer de edição no qual os dados adicionados ou editados são colocados para salvar na fonte de dados. Update salva os dados. Apenas os campos marcados ou detetados como alterados são atualizados.

Se a fonte de dados oferecer suporte a transações, você poderá tornar a Update chamada (e sua correspondente AddNew ou Edit chamada) parte de uma transação.

Atenção

Se você ligar Update sem primeiro chamar um ou AddNewEdit , Update lança um CDaoExceptionarquivo . Se você chamar AddNew ou Edit, deverá ligar Update antes de chamar MoveNext ou fechar o conjunto de registros ou a conexão da fonte de dados. Caso contrário, as alterações serão perdidas sem notificação.

Quando o objeto recordset está pessimisticamente bloqueado em um ambiente multiusuário, o registro permanece bloqueado desde o momento Edit em que é usado até que a atualização seja concluída. Se o conjunto de registros estiver bloqueado de forma otimista, ele será bloqueado e comparado com o registro pré-editado pouco antes de ser atualizado no banco de dados. Se o registro tiver sido alterado desde que você chamou Edit, a operação falhará Update e o MFC lançará uma exceção. Você pode alterar o modo de bloqueio com SetLockingMode.

Observação

O bloqueio otimista é sempre usado em formatos de banco de dados externos, como ODBC e ISAM instalável.

Para obter informações relacionadas, consulte os tópicos "AddNew Method", "CancelUpdate Method", "Delete Method", "LastModified Property", "Update Method" e "EditMode Property" na Ajuda do DAO.

Ver também

CObject Classe
Gráfico de Hierarquia
CDaoTableDef Classe
CDaoWorkspace Classe
CDaoDatabase Classe
CDaoQueryDef Classe