Zestaw rekordów: dodawanie, aktualizowanie i usuwanie rekordów (ODBC)
Ten temat dotyczy klas MFC ODBC.
[!UWAGA]
Możesz teraz dodać rekordy luzem bardziej efektywnie.Aby uzyskać więcej informacji, zobacz zestaw rekordów: Dodawanie rekordów luzem (ODBC).
[!UWAGA]
Ten temat dotyczy obiekty pochodzące z CRecordset w wiersz, który luzem pobieranie nie została zaimplementowana.Jeśli używasz pobieranie wierszy bulk, 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.Ten temat tłumaczy:
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 na temat sposobu aktualizacji są przewożone i wygląd aktualizacje dla innych użytkowników, zobaczyć zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).Normalnie gdy dodać, edytować lub usunąć rekord, zestaw rekordów zmienia natychmiast źródła danych.Można zamiast partii grup odpowiednich aktualizacji do transakcji.Jeśli transakcja jest w toku, aktualizacja nie ostatecznie aż zatwierdzeniu transakcji.Pozwala na przyjęcie z powrotem lub wycofywanie zmian.Aby uzyskać informacje o transakcjach, zobacz Transakcji (ODBC).
W następującej tabeli zestawiono opcje dostępne dla zestawów rekordów za pomocą cechy różnych aktualizacji.
Opcje odczytu/aktualizacji zestawu rekordów
Typ |
Przeczytaj |
Edytuj rekord |
Usuń rekord |
Dodaj nowy (Dołącz) |
---|---|---|---|---|
Tylko do odczytu |
Y |
N |
N |
N |
Tylko Dołącz |
Y |
N |
N |
Y |
Możliwość aktualizacji |
Y |
Y |
Y |
Y |
Decydującym czy swój zestaw rekordów jest Updateable
Obiektu recordset jest można aktualizować, jeśli źródło danych jest aktualizowana i otwarty jako można aktualizować zestaw rekordów.Jego updateability zależy również od instrukcję SQL, można użyć funkcji sterownika ODBC i 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 aktualizowana.
Domyślnie, zestaw rekordów jest w pełni aktualizować (można wykonać AddNew, edytować, i usunąć operacji).Ale można również użyć TylkoDołącz opcję, aby otworzyć zestawy rekordów można aktualizować.Zestaw rekordów, otworzyć w ten sposób pozwala tylko na dodanie 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 przez wywołanie CanAppend funkcji składowej.CanAppendZwraca wartość różną od zera, jeśli zestaw rekordów jest całkowicie można aktualizować lub otwarta 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;
}
Przestroga |
---|
Przygotowując zaktualizować zestaw rekordów przez wywołanie aktualizacji, zwrócić uwagę, że Twój zestaw rekordów zawiera wszystkie kolumny tworzące klucz podstawowy tabeli (lub wszystkie kolumny jakikolwiek indeks unikatowy w tabeli).W niektórych przypadkach ramach służy tylko kolumny wybrane w twoim zestawie rekordów do identyfikowania rekordu w tabeli, aby zaktualizować.Bez wszystkich kolumn niezbędne wielu rekordów może być uaktualniana w tabeli, a w konsekwencji uszkodzenia więzy integralności tabeli.W takim przypadku w ramach generuje wyjątki podczas wywoływania Aktualizacja. |
Dodawanie rekordu do zestawu rekordów
Może dodawać nowe rekordy z zestawem rekordów, jeśli jego CanAppend Członkowskie, funkcja zwraca wartość różną od zera.
Aby dodać nowy rekord do zestawu rekordów
Upewnij się, że zestaw rekordów jest appendable.
Wywołanie obiektu recordset AddNew funkcji składowej.
AddNewprzygotowuje zestaw rekordów do działania jako bufor edycji.Wszystkie pola danych członków są specjalne wartość Null i oznaczony jako bez zmian, więc tylko zmienionych (brudne) wartości są zapisywane do źródła danych podczas wywoływania Aktualizacja.
Umożliwia ustawienie wartości elementów członkowskich danych pole nowy rekord.
Przypisanie wartości do pól danych członków.Te, które nie zostanie przypisany nie są zapisywane do źródła danych.
Wywołanie obiektu recordset Aktualizacja funkcji składowej.
Aktualizacja zakończy dodawanie pisząc nowego rekordu w źródle danych.Dla informacji na temat się stanie, jeśli nie można wywołać Aktualizacja, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).
Aby uzyskać informacje dotyczące jak dodanie rekordów 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).
Poniższy przykład pokazuje, jak dodać nowy rekord:
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;
}
Porada |
---|
Aby anulować AddNew lub edytować wywołać, po prostu wywoływania innego AddNew lub edytować lub zadzwoń przenieść z AFX_MOVE_REFRESH parametru.Elementy danych są resetowane do wartości poprzedniej i są w dalszym ciągu w edytować lub Dodaj tryb. |
Edycję rekordu w zestawie rekordów
Jeśli można edytować istniejących rekordów w zestawie rekordów CanUpdate Członkowskie, funkcja zwraca wartość różną od zera.
Aby edytować istniejący rekord w zestawie rekordów
Upewnij się, że zestaw rekordów jest aktualizowana.
Przewiń listę, którą chcesz zaktualizować.
Wywołanie obiektu recordset edytować funkcji składowej.
Edytowanie przygotowuje zestaw rekordów do działania jako bufor edycji.Wszystkie pola danych członków są oznaczone, tak, że zestaw rekordów można powiedzieć 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ływania Aktualizacja.
Umożliwia ustawienie wartości elementów członkowskich danych pole nowy rekord.
Przypisanie wartości do pól danych członków.Te wartości nie należy przypisywać pozostają bez zmian.
Wywołanie obiektu recordset Aktualizacja funkcji składowej.
Aktualizacja zakończeniu Edycja pisząc zmienionego rekordu w źródle danych.Dla informacji na temat się stanie, jeśli nie można wywołać 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 pokazano edytować operacji.Założono, że użytkownik został przeniesiony do rekordu, które on lub ona 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;
}
Porada |
---|
Aby anulować AddNew lub edytować wywołać, po prostu wywoływania innego AddNew lub edytować lub zadzwoń przenieść z AFX_MOVE_REFRESH parametru.Elementy danych są resetowane do wartości poprzedniej i są w dalszym ciągu w edytować lub Dodaj tryb. |
Usuwanie rekordu z zestawu rekordów
Rekordy można usunąć, jeśli w zestawie rekordów CanUpdate Członkowskie, funkcja zwraca wartość różną od zera.
Aby usunąć rekord
Upewnij się, że zestaw rekordów jest aktualizowana.
Przewiń listę, którą chcesz zaktualizować.
Wywołanie obiektu recordset usunąć funkcji składowej.
Usuwanie natychmiast oznaczania rekordu jako usunięte, zarówno w zestawie rekordów, jak i w źródle danych.
W przeciwieństwie do AddNew i edytować, usunąć bez odpowiedniej Aktualizacja zadzwonić.
Przewiń do innego rekordu.
[!UWAGA]
Podczas przenoszenia w obiekcie Recordset, usuniętych rekordów nie mogą być pominięte.Aby uzyskać więcej informacji, zobacz IsDeleted funkcji składowej.
W poniższym przykładzie pokazano usunąć operacji.Przyjęto założenie, że użytkownik został przeniesiony do rekordu, którego użytkownik chce usunąć.Po usunąć jest wywoływana, ważne jest, aby przejść do nowego rekordu.
rsStudent.Delete( );
rsStudent.MoveNext( );
Aby uzyskać więcej informacji na temat skutków AddNew, edytować, i usunąć funkcji członka, zobacz zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC).