O conjunto de registros: Adicionar, atualizar e excluir registros (ODBC)
Este tópico se aplica às classes MFC ODBC.
Observação |
---|
Agora você pode adicionar registros em massa com mais eficiência. Para obter mais informações, consulte Recordset: A adição de registros em massa (ODBC). |
Observação |
---|
Este tópico se aplica aos objetos derivados de CRecordset no qual linha em massa buscando não foi implementada. Se você estiver usando a busca de linha em massa, consulte Recordset: Buscar registros em massa (ODBC). |
Dynasets atualizáveis snapshots permitem que você adicione, edite (atualização) e excluir registros. Este tópico explica:
Como determinar se o seu conjunto de registros é atualizável.
Como adicionar um novo registro.
Como editar um registro existente.
Como excluir um registro de.
Para obter mais informações sobre como as atualizações são transferidas para fora e como as atualizações aparecem a outros usuários, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC). Normalmente, quando você adicionar, editar ou excluir um registro, o recordset altera a fonte de dados imediatamente. Em vez disso, você pode lote grupos de atualizações relacionados em transações. Se uma transação está em andamento, a atualização não se torne final até que você confirmar a transação. Isso lhe permite voltar ou reverter as alterações. Para obter informações sobre transações, consulte Transação (ODBC).
A tabela a seguir resume as opções disponíveis para os conjuntos de registros com características de atualização diferente.
Opções de leitura/atualização do conjunto de registros
Type |
Read |
Editar registro |
Excluir registro |
Adicionar novo (acrescentar) |
---|---|---|---|---|
Somente leitura |
Y |
N |
N |
N |
Acrescentar apenas |
Y |
N |
N |
Y |
Totalmente atualizável |
Y |
Y |
Y |
Y |
Determinando se O Recordset é Updateable
Se a fonte de dados for atualizável e você abriu o conjunto de registros atualizável, um objeto recordset é atualizável. Seu atualizabilidade também depende da instrução SQL usar, os recursos do seu driver de ODBC, e se a biblioteca de cursores ODBC está na memória. É possível atualizar uma fonte de dados ou conjunto de registros somente leitura.
Para determinar se o seu conjunto de registros é atualizável
Chamar o objeto de conjunto de registros CanUpdate a função de membro.
CanUpdateRetorna um valor diferente de zero se o conjunto de registros é atualizável.
Por padrão, os conjuntos de registros são totalmente atualizáveis (você pode executar AddNew, Editar, e Excluir operações). Mas você também pode usar o appendOnly opção para abrir os conjuntos de registros atualizáveis. Um conjunto de registros aberto dessa maneira permite apenas a adição de novos registros com AddNew. É possível editar ou excluir registros existentes. Você pode testar se um conjunto de registros é aberto somente para acrescentar chamando o CanAppend a função de membro. CanAppendRetorna um valor diferente de zero se o conjunto de registros é totalmente atualizável ou aberto somente para acrescentar.
O código a seguir mostra como você pode usar CanUpdate para um objeto recordset chamado rsStudentSet:
if( !rsStudentSet.Open( ) )
return FALSE;
if( !rsStudentSet.CanUpdate( ) )
{
AfxMessageBox( "Unable to update the Student recordset." );
return;
}
Aviso
Quando você se prepara para atualizar um conjunto de registros chamando atualização, tome cuidado com o que o seu conjunto de registros inclui todas as colunas que compõem a chave primária da tabela (ou todas as colunas de qualquer índice exclusivo na tabela). Em alguns casos, a estrutura pode usar somente as colunas selecionadas no seu conjunto de registros para identificar qual registro na tabela a ser atualizada. Sem todas as colunas necessárias, vários registros podem ser atualizados na tabela, possivelmente, danificar a integridade referencial da tabela. Nesse caso, o framework lança exceções ao chamar atualização.
A adição de um registro a um conjunto de registros.
Você pode adicionar novos registros para um conjunto de registros, se sua CanAppend a função de membro retorna um valor diferente de zero.
Para adicionar um novo registro a um conjunto de registros.
Verifique se que o conjunto de registros é appendable.
Chamar o objeto de conjunto de registros AddNew a função de membro.
AddNewprepara o conjunto de registros para atuar como um buffer de edição. Todos os membros de dados de campo são definidos como o valor especial Null e marcados como inalterado, portanto, somente alterado (sujos) os valores são gravados para a fonte de dados quando você chamar atualização.
Defina os valores de membros de dados de campo do novo registro.
Atribua valores a membros de dados do campo. Aqueles que não atribua não são gravadas para a fonte de dados.
Chamar o objeto de conjunto de registros atualização a função de membro.
Atualização concluir a adição, escrevendo o novo registro à fonte de dados. Para informações sobre acontece se você não conseguir chamar atualização, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).
Para obter informações sobre como adicionar registros works e quando os registros adicionados são visíveis no seu conjunto de registros, consulte Recordset: Como AddNew, editar e excluir o trabalho (ODBC).
O exemplo a seguir mostra como adicionar um novo registro:
if( !rsStudent.Open( ) )
return FALSE;
if( !rsStudent.CanAppend( ) )
return FALSE; // no field values were set
rsStudent.AddNew( );
rsStudent.m_strName = strName;
rsStudent.m_strCity = strCity;
rsStudent.m_strStreet = strStreet;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not added; no field values were set." );
return FALSE;
}
Dica
Para cancelar uma AddNew ou Editar chamar, simplesmente fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro. Membros de dados são redefinidos para seus valores anteriores e você ainda em Editar ou Add modo.
Edição de um registro em um conjunto de registros.
Você pode editar registros existentes, se seu conjunto de registros CanUpdate a função de membro retorna um valor diferente de zero.
Para editar um registro existente em um conjunto de registros.
Verifique se que o conjunto de registros é atualizável.
Role para o registro que você deseja atualizar.
Chamar o objeto de conjunto de registros Editar a função de membro.
Editar prepara o conjunto de registros para atuar como um buffer de edição. Todos os membros de dados de campo são marcados para que o conjunto de registros pode informar posteriormente se foram alteradas. Os novos valores para membros de dados de campo alterado são gravados para a fonte de dados ao chamar atualização.
Defina os valores de membros de dados de campo do novo registro.
Atribua valores a membros de dados do campo. Aqueles que você não atribuir valores permanecem inalteradas.
Chamar o objeto de conjunto de registros atualização a função de membro.
Atualização conclui a edição, escrevendo o registro alterado à fonte de dados. Para informações sobre acontece se você não conseguir chamar atualização, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).
Depois de editar um registro, o registro editado permanece o registro atual.
A exemplo a seguir mostra um Editar operação. Ele supõe que o usuário foi movido para um registro que deseja editar.
rsStudent.Edit( );
rsStudent.m_strStreet = strNewStreet;
rsStudent.m_strCity = strNewCity;
rsStudent.m_strState = strNewState;
rsStudent.m_strPostalCode = strNewPostalCode;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not updated; no field values were set." );
return FALSE;
}
Dica
Para cancelar uma AddNew ou Editar chamar, simplesmente fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro. Membros de dados são redefinidos para seus valores anteriores e você ainda em Editar ou Add modo.
Excluir um registro de um conjunto de registros.
Você pode excluir registros, se seu conjunto de registros CanUpdate a função de membro retorna um valor diferente de zero.
Para excluir um registro
Verifique se que o conjunto de registros é atualizável.
Role para o registro que você deseja atualizar.
Chamar o objeto de conjunto de registros Excluir a função de membro.
Excluir marca imediatamente o registro, como excluídos, tanto no conjunto de registros na fonte de dados.
Ao contrário de AddNew e Editar, Excluir não tem correspondente atualização de chamada.
Role para outro registro.
Observação Ao mover-se pelo conjunto de registros, registros excluídos não poderão ser ignorados. Para obter mais informações, consulte o IsDeleted a função de membro.
A exemplo a seguir mostra um Excluir operação. Ele pressupõe que o usuário foi movido para um registro que o usuário deseja excluir. Depois de Excluir é chamado, é importante mover para um novo registro.
rsStudent.Delete( );
rsStudent.MoveNext( );
Para obter mais informações sobre os efeitos do AddNew, Editar, e Excluir funções de membro, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).