CRecordset::Edit

Umożliwia dokonywanie zmian w bieżącym rekordzie.

virtual void Edit( );

Uwagi

Po wywołaniu Edytuj, można zmienić pole danych członków resetując bezpośrednio ich wartości.Operacja została wykonana, gdy następnie wywołać Aktualizacja Członkowskich funkcji, aby zapisać zmiany w źródle danych.

[!UWAGA]

Jeśli zaimplementowano pobieranie wiersza luzem, nie można wywołać Edytuj.Spowoduje to potwierdzenia nie powiodło się.Chociaż klasy CRecordset mechanizmu aktualizacji zbiorczej wierszy danych, można napisać własne funkcje za pomocą funkcji interfejsu API ODBC SQLSetPos.Aby uzyskać więcej informacji na temat Pobieranie wiersza luzem, zobacz artykuł rekordów: pobieranie rekordów luzem (ODBC).

Edytowanie zapisuje wartości elementów danych w zestawie rekordów.Rozmowy Edytuj, zmiany, następnie wywołać Edytuj ponownie wartości rekordów są przywracane były przed pierwszym Edytuj wywołania.

W niektórych przypadkach można zaktualizować kolumny przez nadanie mu wartość Null (Brak danych zawierających).Aby to zrobić, należy wywołać SetFieldNull z parametrem TRUE , aby oznaczyć pole Null; Powoduje to kolumna aktualizacji.Jeśli pole ma zapisywane do źródła danych, nawet jeśli jego wartość nie została zmieniona, call SetFieldDirty z parametrem TRUE.Działa tak, nawet jeśli pole ma wartość Null.

Jeśli źródło danych obsługuje transakcje, można utworzyć Edytuj wywołania częścią transakcji.Należy zauważyć, że należy wywołać CDatabase::BeginTrans przed wywoływaniem Edytuj i po otwarciu zestawu rekordów.Należy również zauważyć, że wywołania CDatabase::CommitTrans nie jest alternatywą dla wywołania aktualizacji do ukończenia Edytuj operacji.Aby uzyskać więcej informacji dotyczących transakcji, zobacz klasy CDatabase.

W zależności od bieżącego trybu blokowania, rekord aktualizowane mogą być zablokowane przez Edytuj wywołania aktualizacji lub przewinąć do innego rekordu lub może być zablokowana tylko podczas Edycja wywołania.Można zmienić tryb blokowania z SetLockingMode.

Poprzednią wartość bieżącego rekordu są przywracane, jeśli przewiń do nowego rekordu przed wywoływaniem Aktualizacja.A CDBException jest generowany, jeśli Edytuj dla rekordów, który nie może zostać zaktualizowane lub jeżeli brak bieżącego rekordu.

Aby uzyskać więcej informacji, zobacz artykuły Transakcji (ODBC) i rekordów: blokowanie rekordów (ODBC).

Wyjątki

Tej metody można zgłosić wyjątków typu CDBException * i CMemoryException*.

Przykład

// To edit a record, first set up the edit buffer
rsCustSet.Edit();

// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");

// Finally, complete the operation 
if(!rsCustSet.Update())
{
    // Handle the failure to update
    AfxMessageBox(_T("Couldn't update record!"));
}

Wymagania

Nagłówek: afxdb.h

Zobacz też

Informacje

Klasa CRecordset

Diagram hierarchii

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode