Udostępnij za pośrednictwem


Zestaw rekordów: Dodawanie, aktualizowanie i usuwanie rekordów (ODBC)

Ten temat dotyczy klas MFC ODBC.

[!UWAGA]

Rekordy można teraz dodać luzem efektywniej.Aby uzyskać więcej informacji, zobacz zestaw rekordów: dodawanie rekordów luzem (ODBC).

[!UWAGA]

Ten temat dotyczy obiekty pochodzące z CRecordset w którym wiersz luzem pobieranie nie została zaimplementowana.Jeśli używasz pobieranie wiersza luzem, zobacz zestaw rekordów: pobieranie rekordów luzem (ODBC).

Migawki można aktualizować i zestawy dynamiczne umożliwiają dodawanie, edytowanie (aktualizacja) i usuwania rekordów.W tym temacie wyjaśniono:

  • Jak ustalić, czy Twój zestaw rekordów jest aktualizowalna.

  • Jak dodać nowy rekord.

  • Jak edytować istniejący rekord.

  • Jak usunąć rekord.

Aby uzyskać więcej informacji dotyczących sposobu aktualizacji są przewożone out i aktualizacje są wyświetlane dla innych użytkowników, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).Normalnie Dodawanie, edytowanie lub usuwanie rekordu zestawu rekordów zmienia źródła danych natychmiast.Można zamiast tego zadania wsadowego grup odpowiednich aktualizacji do transakcji.Jeśli transakcja jest w toku, aktualizacja nie ostatecznie do momentu zatwierdzenia transakcji.Pozwala na przyjęcie z powrotem lub wycofywanie zmian.Informacje o transakcji, zobacz Transakcji (ODBC).

W poniższej tabeli zestawiono opcje dostępne dla zestawów rekordów za pomocą właściwości różnych aktualizacji.

Opcje odczytu/aktualizacji rekordów

Typ

Odczyt

Edytowanie rekordu

Usuń rekord

Dodawanie nowego (Dołącz)

Tylko do odczytu

Y

N

N

N

Tylko Dołącz

Y

N

N

Y

Pełni aktualizowalna

Y

Y

Y

Y

Określające czy swój zestaw rekordów jest Updateable

Obiektu recordset jest można aktualizować, jeśli źródło danych jest można aktualizować i otwarty zestaw rekordów, jak można aktualizować.Jego updateability również zależy od instrukcji SQL, można użyć możliwości sterownik ODBC oraz czy Biblioteka kursorów ODBC jest w pamięci.Nie można zaktualizować tylko do odczytu źródła rekordów lub danych.

Aby ustalić, czy Twój zestaw rekordów jest aktualizowalna

  • Wywołanie obiektu recordset CanUpdate funkcji składowej.

    CanUpdateZwraca wartość różną od zera, jeśli zestaw rekordów jest można aktualizować.

Domyślnie, zestawy rekordów są całkowicie można aktualizować (można wykonywać AddNew, Edytuj, i usunąć operacji).Ale może również używać TylkoDołącz opcję, aby otworzyć zestawy rekordów można aktualizować.Zestaw rekordów, otwarty w ten sposób pozwala na dodawanie nowych rekordów z AddNew.Nie można edytować ani usuwać istniejących rekordów.Można sprawdzić, czy zestaw rekordów jest otwarty tylko do dołączania, wywołując CanAppend funkcji składowej.CanAppendZwraca wartość różną od zera, jeśli zestaw rekordów jest w pełni można aktualizować lub otwarty tylko do dołączania.

Poniższy kod ilustruje, jak można użyć CanUpdate dla obiektu zestaw rekordów o nazwie rsStudentSet:

if( !rsStudentSet.Open( ) )
    return FALSE;
if( !rsStudentSet.CanUpdate( ) )
{
    AfxMessageBox( "Unable to update the Student recordset." );
    return;
}
Informacje dotyczące przestrogiPrzestroga

Podczas przygotowania do aktualizacji zestawu rekordów, wywołując Aktualizacja, zadbać, aby Twój zestaw rekordów zawiera wszystkich kolumn tworzących klucz podstawowy tabeli (lub wszystkie kolumny wszelkich unikatowego indeksu na tabeli).W niektórych przypadkach ramach można użyć tylko kolumny wybrane w twoim zestawie rekordów, aby zidentyfikować rekordy w tabeli, aby zaktualizować.Bez wszystkich kolumn niezbędne wielu rekordów może być zaktualizowane w tabeli, w konsekwencji uszkodzenia więzy integralności tabeli.W tym przypadku ramach generuje wyjątki podczas wywołania Aktualizacja.

Dodawanie rekordu w zestawie rekordów

Można dodawać nowe rekordy do zestawu rekordów, jeśli jego CanAppend Członkowskie, funkcja zwraca wartość niezerową.

Aby dodać nowy rekord w zestawie rekordów

  1. Upewnij się, że zestaw rekordów jest appendable.

  2. Wywołanie obiektu recordset AddNew funkcji składowej.

    AddNewprzygotowuje zestaw rekordów do działania jako bufor Edycja.Wszystkie pola danych członków są specjalne wartość Null i oznaczone jako bez zmian, więc tylko zmienionych (dirty) wartości są zapisywane do źródła danych podczas wywołania Aktualizacja.

  3. Ustawianie wartości elementów danych pola nowy rekord.

    Przypisanie wartości do pola danych członków.Te, które nie jest przypisane nie są zapisywane do źródła danych.

  4. Wywołanie obiektu recordset Aktualizacja funkcji składowej.

    Aktualizacja zakończy dodawanie pisząc nowy rekord do źródła danych.Do informacji na temat się stanie, jeśli nie jest wywołanie Aktualizacja, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).

Aby uzyskać informacje dotyczące dodawania jak rekordy programu works i kiedy dodanych rekordów są widoczne w twoim zestawie rekordów, zobacz zestaw rekordów: jak AddNew, edytowanie i usuwanie pracy (ODBC).

Jak dodać nowy rekord można znaleźć w poniższym przykładzie:

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;
}
PoradaPorada

Aby anulować AddNew lub Edytuj wywołać, po prostu wywoływania innego AddNew lub Edytuj lub wywołanie przenieść z AFX_MOVE_REFRESH parametr.Członkowie danych są resetowane do wartości poprzedniej i są w dalszym ciągu w Edytuj lub Dodaj tryb.

Edytowanie rekordu w zestawie rekordów

Można edytować istniejące rekordy, jeśli w zestawie rekordów CanUpdate Członkowskie, funkcja zwraca wartość niezerową.

Aby edytować istniejący rekord w zestawie rekordów

  1. Upewnij się, że zestaw rekordów jest można aktualizować.

  2. Przejdź do rekordu, który chcesz zaktualizować.

  3. Wywołanie obiektu recordset Edytuj funkcji składowej.

    Edytowanie przygotowuje zestaw rekordów do działania jako bufor Edycja.Wszystkie pola danych członków są oznakowane tak, aby zestaw rekordów można stwierdzić później czy zostały zmienione.Nowe wartości dla elementów członkowskich zmienionego pola danych są zapisywane do źródła danych podczas wywołania Aktualizacja.

  4. Ustawianie wartości elementów danych pola nowy rekord.

    Przypisanie wartości do pola danych członków.Te wartości nie należy przypisywać pozostają niezmienione.

  5. Wywołanie obiektu recordset Aktualizacja funkcji składowej.

    Aktualizacja zakończeniu Edycja pisząc zmienionych rekordów w źródle danych.Do informacji na temat się stanie, jeśli nie jest wywołanie Aktualizacja, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).

Po zakończeniu edycji rekordu, edytowany rekord pozostaje bieżącego rekordu.

W poniższym przykładzie Edytuj operacji.Założono, że użytkownik został przeniesiony do rekordu, który chce edytować.

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;
}
PoradaPorada

Aby anulować AddNew lub Edytuj wywołać, po prostu wywoływania innego AddNew lub Edytuj lub wywołanie przenieść z AFX_MOVE_REFRESH parametr.Członkowie danych są resetowane do wartości poprzedniej i są w dalszym ciągu w Edytuj lub Dodaj tryb.

Usunięcie rekordu z zestawu rekordów

Rekordy można usunąć, jeśli w zestawie rekordów CanUpdate Członkowskie, funkcja zwraca wartość niezerową.

Aby usunąć rekord

  1. Upewnij się, że zestaw rekordów jest można aktualizować.

  2. Przejdź do rekordu, który chcesz zaktualizować.

  3. Wywołanie obiektu recordset usunąć funkcji składowej.

    Usuwanie natychmiast oznacza rekord jako usunięte, zarówno w zestawie rekordów, jak i źródło danych.

    W odróżnieniu od AddNew i Edytuj, usunąć bez odpowiedniej Aktualizacja wywołania.

  4. Przewiń listę do innego rekordu.

    [!UWAGA]

    Podczas przenoszenia w obiekcie Recordset, usunięte rekordy nie mogą być pominięte.Aby uzyskać więcej informacji, zobacz IsDeleted funkcji składowej.

W poniższym przykładzie usunąć operacji.Przyjęto założenie, że użytkownik został przeniesiony do rekordu, który użytkownik chce usunąć.Po usunąć jest wywoływana, jest ważne przejść do nowego rekordu.

rsStudent.Delete( );
rsStudent.MoveNext( );

Aby uzyskać więcej informacji na temat skutków AddNew, Edytuj, i usunąć funkcji elementów członkowskich, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).

Zobacz też

Koncepcje

Zestaw rekordów (ODBC)

Zestaw rekordów: Blokowanie rekordów (ODBC)