CRecordset::Edit

wirtualne nieważne Edit( );
rzut ( CDBException, CMemoryException );

Uwagi

Wywołanie tej funkcji Państwa, aby umożliwić zmiany dokonane w bieżącym rekordzie. Po wywołaniu, edytować, można zmienić pole danych członków, resetując bezpośrednio ich wartości. Operacja została wykonana podczas następnie wywołania funkcji Państwa aktualizacji , aby zapisać zmiany w źródle danych.

Uwaga   Jeśli zostaną wdrożone, pobieranie wiersza luzem, nie można wywołać, edytować. Spowoduje to twierdzenie nie powiodło się. Chociaż klasa CRecordset nie zapewniają mechanizm aktualizacji zbiorczej wierszy danych, można napisać własne funkcje za pomocą funkcji interfejsu API ODBC SQLSetPos. Aby zapoznać się z przykładem tego, jak to zrobić, zobacz próbki DBFETCH. Aby uzyskać więcej informacji na temat pobierania wierszy zbiorczej, zobacz artykuł rekordów: pobieranie rekordów w masowych (ODBC) w Visual C++ Programmer's Guide.

Edytuj zapisuje wartości w zestawie rekordów danych członków. Jeśli wywołanie, edytować, zmiany następnie ponownie wywołać edytować wartości rekordu są przywracane były przed pierwszym wywołaniem edycji.

W niektórych przypadkach może chcesz zaktualizować kolumny dzięki Null (zawierających dane). Aby to zrobić, wywołanie SetFieldNull z parametrem TRUE aby oznaczyć pole Null; powoduje to także kolumny mają być aktualizowane. Jeśli chcesz, aby pola są zapisywane w źródle danych, nawet jeśli jego wartość nie zmieniła się, wywołania SetFieldDirty z parametrem true. Ta procedura działa, nawet gdyby wartość Null pole.

Jeśli źródło danych obsługuje transakcje, można wprowadzać, edytować wywołania częścią transakcji. Należy zauważyć, że powinna wywołać CDatabase::BeginTrans przed wywołaniem, edytować i po otwarciu zestawu rekordów. Należy również zauważyć, że wywołanie CDatabase::CommitTrans nie jest substytutem do wywoływania aktualizacji , aby zakończyć operację edycji . Aby uzyskać więcej informacji o transakcjach zobacz klasy CDatabase.

W zależności od bieżącego trybu blokowania, rekord jest aktualizowany mogą być zablokowane przez edycję , aż do wywołania aktualizacji lub przewijania do innego rekordu lub może być zablokowana tylko podczas edytowania wywołanie. Aby zmienić tryb blokowania z SetLockingMode.

Poprzednią wartość bieżącego rekordu są przywracane, jeśli podczas przewijania do nowego rekordu przed wywołaniem aktualizacji. CDBException jest generowany, Jeśli zadzwonisz Edytowanie zestawu rekordów, który nie może zostać zaktualizowany, lub jeśli nie istnieje żaden bieżący rekord.

Aby uzyskać więcej informacji, zobacz artykuły Transakcji (ODBC) i rekordów: blokowanie rekordów (ODBC) w Visual C++ Programmer's Guide.

Przykład

 / / Przykład CRecordset::Edit
/ / Do edytowania rekordu,
/ / &Najpierw skonfigurować buforu Edycja
rsCustSet.Edit ();

/ / Następnie edytować pola danych członków dla rekordu
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = "Jones Mfg";

/ / Ostatecznie zakończyć operację
Jeżeli (! rsCustSet.Update ())
 nbsp;  / / Obsługi niemożność aktualizacji

Omówie&nie CRecordset |nbsp; Klasa członków | Wykres hierarchii

Zobacz teżnbsp;CRecordset::Update, CRecordset::Add&New, CRecordset::Delete, CRecordset::SetFieldDirty, CRecordset::SetFieldNull, CRecordset::CanUpdate, CRecordset::CanTransact, CRecordset::SetLockingMode

Index