Klasa CDaoRecordset
Reprezentuje zestaw rekordów wybranych ze źródła danych.
Uwaga
Obiekt dostępu do danych (DAO) jest obsługiwany za pośrednictwem pakietu Office 2013. DaO 3.6 jest wersją ostateczną i jest przestarzała.
Składnia
class CDaoRecordset : public CObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CDaoRecordset::CDaoRecordset | CDaoRecordset Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CDaoRecordset::AddNew | Przygotowuje się do dodawania nowego rekordu. Wywołaj aktualizację, aby ukończyć dodawanie. |
CDaoRecordset::CanAppend | Zwraca wartość niezerową, jeśli nowe rekordy można dodać do zestawu rekordów za pośrednictwem funkcji AddNew składowej. |
CDaoRecordset::CanBookmark | Zwraca wartość niezerową, jeśli zestaw rekordów obsługuje zakładki. |
CDaoRecordset::CancelUpdate | Anuluje wszystkie oczekujące aktualizacje z powodu operacji Edytuj lub DodajNowy . |
CDaoRecordset::CanRestart | Zwraca wartość inną niżzer, jeśli można wywołać funkcję Requery w celu ponownego uruchomienia zapytania zestawu rekordów. |
CDaoRecordset::CanScroll | Zwraca wartość inną niżzerowa, jeśli można przewijać rekordy. |
CDaoRecordset::CanTransact | Zwraca wartość niezerowa, jeśli źródło danych obsługuje transakcje. |
CDaoRecordset::CanUpdate | Zwraca wartość inną niżzerowa, jeśli można zaktualizować zestaw rekordów (można dodawać, aktualizować lub usuwać rekordy). |
CDaoRecordset::Close | Zamyka zestaw rekordów. |
CDaoRecordset::D elete | Usuwa bieżący rekord z zestawu rekordów. Musisz jawnie przewinąć do innego rekordu po usunięciu. |
CDaoRecordset::D oFieldExchange | Wywoływana w celu wymiany danych (w obu kierunkach) między elementami członkowskimi danych pola zestawu rekordów a odpowiednim rekordem w źródle danych. Implementuje wymianę pól rekordów DAO (DFX). |
CDaoRecordset::Edit | Przygotowuje się do zmian w bieżącym rekordzie. Wywołaj metodę Update , aby ukończyć edycję. |
CDaoRecordset::FillCache | Wypełnia całą lub część lokalnej pamięci podręcznej obiektu zestawu rekordów, który zawiera dane ze źródła danych ODBC. |
CDaoRecordset::Find | Lokalizuje pierwszą, następną, poprzednią lub ostatnią lokalizację określonego ciągu w zestawie rekordów typu dynaset, który spełnia określone kryteria i tworzy rekord bieżący. |
CDaoRecordset::FindFirst | Lokalizuje pierwszy rekord w zestawie rekordów typu dynaset lub snapshot-type, który spełnia określone kryteria i sprawia, że rekord jest bieżącym rekordem. |
CDaoRecordset::FindLast | Lokalizuje ostatni rekord w zestawie rekordów typu dynaset lub snapshot-type, który spełnia określone kryteria i sprawia, że rekord bieżący rekord. |
CDaoRecordset::FindNext | Lokalizuje następny rekord w zestawie rekordów typu dynaset lub snapshot-type, który spełnia określone kryteria i sprawia, że rekord bieżący rekord. |
CDaoRecordset::FindPrev | Lokalizuje poprzedni rekord w zestawie rekordów typu dynaset lub snapshot-type, który spełnia określone kryteria i sprawia, że rekord bieżący rekord. |
CDaoRecordset::GetAbsolutePosition | Zwraca liczbę rekordów bieżącego rekordu obiektu zestawu rekordów. |
CDaoRecordset::GetBookmark | Zwraca wartość reprezentującą zakładkę w rekordzie. |
CDaoRecordset::GetCacheSize | Zwraca wartość określającą liczbę rekordów w zestawie rekordów typu dynaset zawierającym dane, które mają być lokalnie buforowane ze źródła danych ODBC. |
CDaoRecordset::GetCacheStart | Zwraca wartość określającą zakładkę pierwszego rekordu w zestawie rekordów do buforowania. |
CDaoRecordset::GetCurrentIndex | Zwraca wartość zawierającą CString nazwę indeksu ostatnio używanego w indeksowanym typie CDaoRecordset tabeli . |
CDaoRecordset::GetDateCreated | Zwraca datę i godzinę utworzenia tabeli bazowej CDaoRecordset obiektu |
CDaoRecordset::GetDateLastUpdated | Zwraca datę i godzinę ostatniej zmiany wprowadzonej w projekcie tabeli podstawowej bazowej CDaoRecordset obiektu. |
CDaoRecordset::GetDefaultDBName | Zwraca nazwę domyślnego źródła danych. |
CDaoRecordset::GetDefaultSQL | Wywoływana w celu pobrania domyślnego ciągu SQL do wykonania. |
CDaoRecordset::GetEditMode | Zwraca wartość wskazującą stan edytowania bieżącego rekordu. |
CDaoRecordset::GetFieldCount | Zwraca wartość reprezentującą liczbę pól w zestawie rekordów. |
CDaoRecordset::GetFieldInfo | Zwraca określone rodzaje informacji o polach w zestawie rekordów. |
CDaoRecordset::GetFieldValue | Zwraca wartość pola w zestawie rekordów. |
CDaoRecordset::GetIndexCount | Pobiera liczbę indeksów w tabeli bazowej zestawu rekordów. |
CDaoRecordset::GetIndexInfo | Zwraca różne rodzaje informacji o indeksie. |
CDaoRecordset::GetLastModifiedBookmark | Służy do określania ostatnio dodanego lub zaktualizowanego rekordu. |
CDaoRecordset::GetLockingMode | Zwraca wartość wskazującą typ blokowania, który jest w mocy podczas edycji. |
CDaoRecordset::GetName | Zwraca wartość zawierającą CString nazwę zestawu rekordów. |
CDaoRecordset::GetParamValue | Pobiera bieżącą wartość określonego parametru przechowywanego w bazowym obiekcie DAOParameter. |
CDaoRecordset::GetPercentPosition | Zwraca pozycję bieżącego rekordu jako wartość procentową całkowitej liczby rekordów. |
CDaoRecordset::GetRecordCount | Zwraca liczbę rekordów, do których uzyskuje się dostęp w obiekcie zestawu rekordów. |
CDaoRecordset::GetSQL | Pobiera ciąg SQL używany do wybierania rekordów dla zestawu rekordów. |
CDaoRecordset::GetType | Wywoływane w celu określenia typu zestawu rekordów: typu tabeli, typu dynaset lub typu migawki. |
CDaoRecordset::GetValidationRule | Zwraca wartość zawierającą CString wartość, która weryfikuje dane podczas ich wprowadzania w polu. |
CDaoRecordset::GetValidationText | Pobiera tekst wyświetlany, gdy reguła sprawdzania poprawności nie jest spełniona. |
CDaoRecordset::IsBOF | Zwraca wartość nonzero, jeśli zestaw rekordów został umieszczony przed pierwszym rekordem. Brak bieżącego rekordu. |
CDaoRecordset::IsDeleted | Zwraca wartość niezerową, jeśli zestaw rekordów jest umieszczony na usuniętym rekordzie. |
CDaoRecordset::IsEOF | Zwraca wartość nonzero, jeśli zestaw rekordów został umieszczony po ostatnim rekordzie. Brak bieżącego rekordu. |
CDaoRecordset::IsFieldDirty | Zwraca wartość niezera, jeśli określone pole w bieżącym rekordzie zostało zmienione. |
CDaoRecordset::IsFieldNull | Zwraca wartość nonzero, jeśli określone pole w bieżącym rekordzie ma wartość Null (bez wartości). |
CDaoRecordset::IsFieldNullable | Zwraca wartość nonzero, jeśli określone pole w bieżącym rekordzie można ustawić na wartość Null (bez wartości). |
CDaoRecordset::IsOpen | Zwraca wartość nonzero, jeśli funkcja Open została wywołana wcześniej. |
CDaoRecordset::Move | Ustawia zestaw rekordów na określoną liczbę rekordów z bieżącego rekordu w obu kierunkach. |
CDaoRecordset::MoveFirst | Umieszcza bieżący rekord na pierwszym rekordzie w zestawie rekordów. |
CDaoRecordset::MoveLast | Umieszcza bieżący rekord na ostatnim rekordzie w zestawie rekordów. |
CDaoRecordset::MoveNext | Umieszcza bieżący rekord w następnym rekordzie w zestawie rekordów . |
CDaoRecordset::MovePrev | Umieszcza bieżący rekord na poprzednim rekordzie w zestawie rekordów. |
CDaoRecordset::Open | Tworzy nowy zestaw rekordów na podstawie tabeli, zestawu dynamicznych lub migawki. |
CDaoRecordset::Requery | Ponownie uruchamia zapytanie zestawu rekordów, aby odświeżyć wybrane rekordy. |
CDaoRecordset::Seek | Lokalizuje rekord w indeksowanym obiekcie zestawu rekordów typu tabeli, który spełnia określone kryteria dla bieżącego indeksu i sprawia, że rekord jest bieżącym rekordem. |
CDaoRecordset::SetAbsolutePosition | Ustawia liczbę rekordów bieżącego rekordu obiektu zestawu rekordów. |
CDaoRecordset::SetBookmark | Umieszcza zestaw rekordów w rekordzie zawierającym określoną zakładkę. |
CDaoRecordset::SetCacheSize | Ustawia wartość określającą liczbę rekordów w zestawie rekordów typu dynaset zawierającym dane, które mają być lokalnie buforowane ze źródła danych ODBC. |
CDaoRecordset::SetCacheStart | Ustawia wartość określającą zakładkę pierwszego rekordu w zestawie rekordów do buforowania. |
CDaoRecordset::SetCurrentIndex | Wywoływana w celu ustawienia indeksu w zestawie rekordów typu tabeli. |
CDaoRecordset::SetFieldDirty | Oznacza określone pole w bieżącym rekordzie zgodnie ze zmianą. |
CDaoRecordset::SetFieldNull | Ustawia wartość określonego pola w bieżącym rekordzie na Null (bez wartości). |
CDaoRecordset::SetFieldValue | Ustawia wartość pola w zestawie rekordów. |
CDaoRecordset::SetFieldValueNull | Ustawia wartość pola w zestawie rekordów na wartość Null. (bez wartości). |
CDaoRecordset::SetLockingMode | Ustawia wartość wskazującą typ blokowania, który ma obowiązywać podczas edycji. |
CDaoRecordset::SetParamValue | Ustawia bieżącą wartość określonego parametru przechowywanego w bazowym obiekcie DAOParameter |
CDaoRecordset::SetParamValueNull | Ustawia bieżącą wartość określonego parametru na null (bez wartości). |
CDaoRecordset::SetPercentPosition | Ustawia położenie bieżącego rekordu na lokalizację odpowiadającą wartości procentowej całkowitej liczby rekordów w zestawie rekordów. |
CDaoRecordset::Update | Wykonuje operację AddNew lub Edit , zapisując nowe lub edytowane dane w źródle danych. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CDaoRecordset::m_bCheckCacheForDirtyFields | Zawiera flagę wskazującą, czy pola są automatycznie oznaczone jako zmienione. |
CDaoRecordset::m_nFields | Zawiera liczbę składowych danych pól w klasie zestawu rekordów oraz liczbę kolumn wybranych przez zestaw rekordów ze źródła danych. |
CDaoRecordset::m_nParams | Zawiera liczbę składowych danych parametrów w klasie zestawu rekordów — liczbę parametrów przekazywanych za pomocą zapytania zestawu rekordów |
CDaoRecordset::m_pDAORecordset | Wskaźnik do interfejsu DAO bazowego obiektu zestawu rekordów. |
CDaoRecordset::m_pDatabase | Źródłowa baza danych dla tego zestawu wyników. Zawiera wskaźnik do obiektu CDaoDatabase . |
CDaoRecordset::m_strFilter | Zawiera ciąg używany do konstruowania instrukcji SQL WHERE . |
CDaoRecordset::m_strSort | Zawiera ciąg używany do konstruowania instrukcji SQL ORDER BY . |
Uwagi
Obiekty znane jako "zestawy rekordów" CDaoRecordset
są dostępne w następujących trzech formach:
Zestawy rekordów typu tabeli reprezentują tabelę podstawową, której można użyć do badania, dodawania, zmieniania lub usuwania rekordów z pojedynczej tabeli bazy danych.
Zestawy rekordów typu Dynaset są wynikiem zapytania, które może mieć rekordy z możliwością aktualizacji. Te zestawy rekordów to zestaw rekordów, których można użyć do badania, dodawania, zmieniania lub usuwania rekordów z bazowej tabeli bazy danych lub tabel. Zestawy rekordów typu Dynaset mogą zawierać pola z co najmniej jednej tabeli w bazie danych.
Zestawy rekordów typu migawki to statyczna kopia zestawu rekordów, których można użyć do znajdowania danych lub generowania raportów. Te zestawy rekordów mogą zawierać pola z co najmniej jednej tabeli w bazie danych, ale nie można ich zaktualizować.
Każda forma zestawu rekordów reprezentuje zestaw rekordów ustalony w momencie otwarcia zestawu rekordów. Po przewinięciu do rekordu w zestawie rekordów typu tabeli lub zestawie rekordów typu dynaset zmiany wprowadzone w rekordzie po otwarciu zestawu rekordów przez innych użytkowników lub innych zestawów rekordów w aplikacji. (Nie można zaktualizować zestawu rekordów typu migawki). Możesz użyć CDaoRecordset
bezpośrednio lub utworzyć klasę zestawu rekordów specyficznych dla aplikacji z klasy CDaoRecordset
. Następnie można wykonywać czynności takie jak:
Przewiń rekordy.
Ustaw indeks i szybko poszukaj rekordów przy użyciu funkcji Wyszukiwania (tylko zestawy rekordów typu tabeli).
Znajdź rekordy na podstawie porównania ciągów: "<", "<=", "=", ">=" lub ">" (zestawy rekordów typu dynaset i typu migawki).
Zaktualizuj rekordy i określ tryb blokowania (z wyjątkiem zestawów rekordów typu migawki).
Przefiltruj zestaw rekordów, aby ograniczyć, które rekordy są wybierane z tych dostępnych w źródle danych.
Sortuj zestaw rekordów.
Sparametryzuj zestaw rekordów, aby dostosować jego wybór za pomocą informacji, które nie są znane do czasu wykonywania.
Klasa CDaoRecordset
dostarcza interfejs podobny do interfejsu klasy CRecordset
. Główną różnicą jest to, że klasa CDaoRecordset
uzyskuje dostęp do danych za pośrednictwem obiektu dostępu do danych (DAO) na podstawie ole. Klasa CRecordset
uzyskuje dostęp do systemu DBMS za pośrednictwem interfejsu Open Database Connectivity (ODBC) i sterownika ODBC dla tego systemu DBMS.
Uwaga
Klasy baz danych DAO różnią się od klas baz danych MFC opartych na technologii Open Database Connectivity (ODBC). Wszystkie nazwy klas bazy danych DAO mają prefiks "CDao". Nadal można uzyskać dostęp do źródeł danych ODBC za pomocą klas DAO; Klasy DAO zwykle oferują lepsze możliwości, ponieważ są specyficzne dla aparatu bazy danych Microsoft Jet.
Możesz użyć CDaoRecordset
bezpośrednio lub utworzyć klasę z CDaoRecordset
klasy . Aby użyć klasy zestawu rekordów w obu przypadkach, otwórz bazę danych i skonstruuj obiekt zestawu rekordów, przekazując konstruktorowi wskaźnik do CDaoDatabase
obiektu. Możesz również skonstruować CDaoRecordset
obiekt i umożliwić MFC utworzenie obiektu tymczasowego CDaoDatabase
. Następnie wywołaj funkcję Open member zestawu rekordów, określając, czy obiekt jest zestawem rekordów typu tabeli, zestawem rekordów typu dynaset lub zestawem rekordów typu migawki. Wywołanie metody Open
wybiera dane z bazy danych i pobiera pierwszy rekord.
Użyj funkcji składowych i składowych danych obiektu, aby przewijać rekordy i wykonywać na nich operacje. Dostępne operacje zależą od tego, czy obiekt jest zestawem rekordów typu tabeli, zestawem rekordów typu dynaset, czy zestawem rekordów typu migawki i czy jest aktualizowalny, czy tylko do odczytu — zależy to od możliwości bazy danych lub źródła danych Open Database Connectivity (ODBC). Aby odświeżyć rekordy, które mogły zostać zmienione lub dodane od wywołaniaOpen
, wywołaj funkcję składową Requery obiektu. Wywołaj funkcję składową obiektu Close
i zniszcz obiekt po jego zakończeniu.
CDaoRecordset
używa wymiany pól rekordów DAO (DFX) do obsługi odczytywania i aktualizowania pól rekordów za pomocą bezpiecznych składowych języka C++ klasy lub CDaoRecordset
-pochodnejCDaoRecordset
. Można również zaimplementować dynamiczne powiązanie kolumn w bazie danych bez korzystania z mechanizmu DFX przy użyciu metod GetFieldValue i SetFieldValue.
Aby uzyskać powiązane informacje, zobacz temat "Obiekt zestawu rekordów" w Pomocy dao.
Hierarchia dziedziczenia
CDaoRecordset
Wymagania
Nagłówek: afxdao.h
CDaoRecordset::AddNew
Wywołaj tę funkcję składową, aby dodać nowy rekord do zestawu rekordów typu tabeli lub zestawu rekordów typu dynaset.
virtual void AddNew();
Uwagi
Początkowo pola rekordu mają wartość Null. (W terminologii bazy danych wartość Null oznacza "brak wartości" i nie jest taka sama jak wartość NULL w języku C++). Aby ukończyć operację, należy wywołać funkcję składową Update . Update
zapisuje zmiany w źródle danych.
Uwaga
Jeśli edytujesz rekord, a następnie przewiń do innego rekordu bez wywoływania Update
metody , zmiany zostaną utracone bez ostrzeżenia.
Jeśli dodasz rekord do zestawu rekordów typu dynaset przez wywołanie polecenia AddNew, rekord będzie widoczny w zestawie rekordów i uwzględniony w tabeli bazowej, w której stanie się widoczny dla wszystkich nowych CDaoRecordset
obiektów.
Pozycja nowego rekordu zależy od typu zestawu rekordów:
- W zestawie rekordów typu dynaset nie ma gwarancji, że nowy rekord jest wstawiony. To zachowanie zostało zmienione za pomocą usługi Microsoft Jet 3.0 ze względu na wydajność i współbieżność. Jeśli twoim celem jest uczynienie nowo dodanego rekordu bieżącym rekordem, pobierz zakładkę ostatniego zmodyfikowanego rekordu i przejdź do tej zakładki:
rs.SetBookmark(rs.GetLastModifiedBookmark());
- W zestawie rekordów typu tabeli, dla którego określono indeks, rekordy są zwracane we właściwym miejscu w kolejności sortowania. Jeśli nie określono indeksu, nowe rekordy są zwracane na końcu zestawu rekordów.
Rekord, który był bieżący przed użytym, AddNew
pozostaje bieżący. Jeśli chcesz ustawić nowy rekord jako bieżący, a zestaw rekordów obsługuje zakładki, wywołaj element SetBookmark do zakładki zidentyfikowanej przez ustawienie właściwości LastModified obiektu bazowego zestawu rekordów DAO. Jest to przydatne do określania wartości pól licznika (przyrostu automatycznego) w dodanym rekordzie. Aby uzyskać więcej informacji, zobacz GetLastModifiedBookmark.
Jeśli baza danych obsługuje transakcje, możesz wykonać wywołanie AddNew
jako część transakcji. Aby uzyskać więcej informacji na temat transakcji, zobacz klasa CDaoWorkspace. Przed wywołaniem wywołania metody CDaoWorkspace::BeginTrans należy wywołać metodę .AddNew
Wywołanie AddNew
zestawu rekordów, którego Open
funkcja składowa nie została wywołana, jest niedozwolone. Element CDaoException
jest zgłaszany, jeśli wywołasz AddNew
zestaw rekordów, którego nie można dołączyć. Zestaw rekordów można zaktualizować, wywołując aplikację CanAppend.
Struktura oznacza zmienione elementy członkowskie danych pól, aby upewnić się, że zostaną zapisane w rekordzie w źródle danych przez mechanizm wymiany pól rekordów DAO (DFX). Zmiana wartości pola zwykle powoduje automatyczne ustawienie pola zanieczyszczonego, dlatego rzadko trzeba wywołać metodę SetFieldDirty samodzielnie, ale czasami warto upewnić się, że kolumny są jawnie aktualizowane lub wstawiane niezależnie od wartości w elemencie danych pola. Mechanizm DFX wykorzystuje również użycie PSEUDO NULL. Aby uzyskać więcej informacji, zobacz CDaoFieldExchange::m_nOperation.
Jeśli mechanizm podwójnego buforowania nie jest używany, zmiana wartości pola nie powoduje automatycznego ustawienia pola jako zanieczyszczonego. W takim przypadku należy jawnie ustawić pole zanieczyszczone. Flaga zawarta w m_bCheckCacheForDirtyFields steruje tym automatycznym sprawdzaniem pól.
Uwaga
Jeśli rekordy są buforowane dwukrotnie (oznacza to, że automatyczne sprawdzanie pól jest włączone), wywołanie CancelUpdate
spowoduje przywrócenie zmiennych składowych do wartości, które miały wcześniej AddNew
lub Edit
zostało wywołane.
Aby uzyskać powiązane informacje, zobacz tematy "AddNew Method", "CancelUpdate Method", "LastModified Property" i "EditMode Property" w Pomocy dao.
CDaoRecordset::CanAppend
Wywołaj tę funkcję składową, aby określić, czy wcześniej otwarty zestaw rekordów umożliwia dodawanie nowych rekordów przez wywołanie funkcji elementu członkowskiego AddNew .
BOOL CanAppend() const;
Wartość zwracana
Niezerowe, jeśli zestaw rekordów zezwala na dodawanie nowych rekordów; w przeciwnym razie 0. CanAppend
Zwraca wartość 0, jeśli zestaw rekordów został otwarty jako tylko do odczytu.
Uwagi
Aby uzyskać powiązane informacje, zobacz temat "Metoda dołączania" w pomocy dao.
CDaoRecordset::CanBookmark
Wywołaj tę funkcję składową, aby określić, czy wcześniej otwarty zestaw rekordów umożliwia indywidualne oznaczanie rekordów przy użyciu zakładek.
BOOL CanBookmark();
Wartość zwracana
Nonzero, jeśli zestaw rekordów obsługuje zakładki, w przeciwnym razie 0.
Uwagi
Jeśli używasz zestawów rekordów opartych wyłącznie na tabelach aparatu bazy danych Microsoft Jet, zakładki mogą być używane z wyjątkiem zestawów rekordów typu migawki oflagowanych jako zestawy rekordów tylko do przodu. Inne produkty bazy danych (zewnętrzne źródła danych ODBC) mogą nie obsługiwać zakładek.
Aby uzyskać powiązane informacje, zobacz temat "Właściwość zakładki" w Pomocy DAO.
CDaoRecordset::CancelUpdate
Funkcja CancelUpdate
składowa anuluje wszelkie oczekujące aktualizacje z powodu operacji Edytuj lub DodajNowy .
virtual void CancelUpdate();
Uwagi
Jeśli na przykład aplikacja wywołuje Edit
funkcję lub AddNew
składową i nie została wywołana Update
, CancelUpdate
anuluje wszelkie zmiany wprowadzone po Edit
wywołaniu lub AddNew
została wywołana.
Uwaga
Jeśli rekordy są buforowane dwukrotnie (oznacza to, że automatyczne sprawdzanie pól jest włączone), wywołanie CancelUpdate
spowoduje przywrócenie zmiennych składowych do wartości, które miały wcześniej AddNew
lub Edit
zostało wywołane.
Jeśli nie ma Edit
operacji lub AddNew
oczekujące, powoduje zgłoszenie CancelUpdate
wyjątku przez MFC. Wywołaj funkcję składową GetEditMode , aby określić, czy istnieje oczekująca operacja, którą można anulować.
Aby uzyskać powiązane informacje, zobacz temat "CancelUpdate Method" (Metoda CancelUpdate) w pomocy dao.
CDaoRecordset::CanRestart
Wywołaj tę funkcję składową, aby określić, czy zestaw rekordów zezwala na ponowne uruchomienie zapytania (w celu odświeżenia rekordów) przez wywołanie funkcji składowej Requery
.
BOOL CanRestart();
Wartość zwracana
Nonzero, jeśli Requery
można wywołać, aby ponownie uruchomić zapytanie zestawu rekordów, w przeciwnym razie 0.
Uwagi
Zestawy rekordów typu tabela nie obsługują Requery
.
Jeśli Requery
nie jest obsługiwana, wywołaj metodę Zamknij , a następnie otwórz , aby odświeżyć dane. Możesz wywołać Requery
metodę , aby zaktualizować zapytanie parametru bazowego obiektu zestawu rekordów po zmianie wartości parametrów.
Aby uzyskać powiązane informacje, zobacz temat "Właściwość z możliwością ponownego uruchomienia" w pomocy dao.
CDaoRecordset::CanScroll
Wywołaj tę funkcję składową, aby określić, czy zestaw rekordów zezwala na przewijanie.
BOOL CanScroll() const;
Wartość zwracana
Niezerowe, jeśli można przewijać rekordy, w przeciwnym razie 0.
Uwagi
Jeśli wywołasz metodę Otwórz za pomocą dbForwardOnly
polecenia , zestaw rekordów może przewijać tylko do przodu.
Aby uzyskać powiązane informacje, zobacz temat "Pozycjonowanie bieżącego wskaźnika rekordu za pomocą DAO" w Pomocy dao.
CDaoRecordset::CanTransact
Wywołaj tę funkcję składową, aby określić, czy zestaw rekordów zezwala na transakcje.
BOOL CanTransact();
Wartość zwracana
Nonzero, jeśli bazowe źródło danych obsługuje transakcje, w przeciwnym razie 0.
Uwagi
Aby uzyskać powiązane informacje, zobacz temat "Właściwość transakcji" w Pomocy dao.
CDaoRecordset::CanUpdate
Wywołaj tę funkcję składową, aby określić, czy można zaktualizować zestaw rekordów.
BOOL CanUpdate() const;
Wartość zwracana
Niezerowe, jeśli zestaw rekordów można zaktualizować (dodawać, aktualizować i usuwać rekordy), w przeciwnym razie 0.
Uwagi
Zestaw rekordów może być tylko do odczytu, jeśli bazowe źródło danych jest tylko do odczytu lub jeśli określono dbReadOnly
dla parametru nOptions po wywołaniu polecenia Otwórz dla zestawu rekordów.
Aby uzyskać powiązane informacje, zobacz tematy "AddNew Method", "Edit Method", "Delete Method", "Update Method" i "Updatable Property" w Pomocy dao.
CDaoRecordset::CDaoRecordset
CDaoRecordset
Tworzy obiekt.
CDaoRecordset(CDaoDatabase* pDatabase = NULL);
Parametry
pDatabase
Zawiera wskaźnik do obiektu CDaoDatabase lub wartości NULL. Jeśli nie ma wartości NULL, a CDaoDatabase
funkcja składowa obiektu Open
nie została wywołana, aby połączyć ją ze źródłem danych, zestaw rekordów próbuje go otworzyć podczas własnego wywołania Open . W przypadku przekazania wartości NULL CDaoDatabase
obiekt jest konstruowany i połączony za pomocą informacji o źródle danych określonych w przypadku utworzenia klasy zestawu rekordów z klasy CDaoRecordset
.
Uwagi
Możesz użyć CDaoRecordset
bezpośrednio lub utworzyć klasę specyficzną dla aplikacji z klasy CDaoRecordset
. Klasy ClassWizard można użyć do tworzenia klas zestawów rekordów.
Uwaga
Jeśli utworzysz klasę, klasa pochodna CDaoRecordset
musi podać własny konstruktor. W konstruktorze klasy pochodnej wywołaj konstruktor CDaoRecordset::CDaoRecordset
, przekazując do niego odpowiednie parametry.
Przekaż wartość NULL do konstruktora zestawu rekordów, aby obiekt CDaoDatabase
został skonstruowany i połączony automatycznie. Jest to przydatny skrót, który nie wymaga konstruowania i łączenia obiektu przed utworzeniem CDaoDatabase
zestawu rekordów. CDaoDatabase
Jeśli obiekt nie jest otwarty, zostanie również utworzony obiekt CDaoWorkspace, który używa domyślnego obszaru roboczego. Aby uzyskać więcej informacji, zobacz CDaoDatabase::CDaoDatabase.
CDaoRecordset::Close
CDaoRecordset
Zamknięcie obiektu usuwa go z kolekcji otwartych zestawów rekordów w skojarzonej bazie danych.
virtual void Close();
Uwagi
Ponieważ Close
obiekt nie zostanie zniszczony CDaoRecordset
, można użyć go ponownie, wywołując Open
to samo źródło danych lub inne źródło danych.
Wszystkie oczekujące instrukcje AddNew lub Edit zostaną anulowane, a wszystkie oczekujące transakcje zostaną wycofane. Jeśli chcesz zachować oczekujące dodatki lub zmiany, przed wywołaniem Close
każdego zestawu rekordów wywołaj metodę Update.
Możesz ponownie zadzwonić Open
po wywołaniu metody Close
. Umożliwia to ponowne użycie obiektu zestawu rekordów. Lepszym rozwiązaniem jest wywołanie metody Requery, jeśli to możliwe.
Aby uzyskać powiązane informacje, zobacz temat "Close Method" (Metoda zamykania) w pomocy dao.
CDaoRecordset::D elete
Wywołaj tę funkcję składową, aby usunąć bieżący rekord w otwartym obiekcie zestawu rekordów typu dynaset lub tabeli.
virtual void Delete();
Uwagi
Po pomyślnym usunięciu składowe danych pola zestawu rekordów są ustawione na wartość Null i należy jawnie wywołać jedną z funkcji elementu członkowskiego nawigacji zestawu rekordów ( Move, Seek, SetBookmark itd.), aby przenieść usunięty rekord. Usunięcie rekordów z zestawu rekordów wymaga bieżącego rekordu w zestawie rekordów przed wywołaniem Delete
metody ; w przeciwnym razie usługa MFC zgłasza wyjątek.
Delete
Usuwa bieżący rekord i sprawia, że jest niedostępny. Chociaż nie można edytować ani używać usuniętego rekordu, pozostaje on aktualny. Po przejściu do innego rekordu nie można jednak ponownie ustawić usuniętego rekordu.
Uwaga
Zestaw rekordów musi być aktualizowalny i podczas wywoływania Delete
elementu musi istnieć prawidłowy rekord bieżący w zestawie rekordów. Jeśli na przykład usuniesz rekord, ale nie przewijasz go do nowego rekordu przed ponownym wywołaniemDelete
, zgłosi wyjątek CDaoExceptionDelete
.
Jeśli używasz transakcji, możesz cofnąć usunięcie rekordu i wywołać funkcję składową CDaoWorkspace::Rollback . Jeśli tabela podstawowa jest tabelą podstawową w relacji usuwania kaskadowego, usunięcie bieżącego rekordu może również usunąć jeden lub więcej rekordów w tabeli obcej. Aby uzyskać więcej informacji, zobacz definicję "usuwanie kaskadowe" w pomocy dao.
W przeciwieństwie do metody i Edit
wywołanie Delete
metody nie następuje wywołanie metody Update
.AddNew
Aby uzyskać powiązane informacje, zobacz tematy "AddNew Method", "Edit Method", "Delete Method", "Update Method" i "Updatable Property" w Pomocy dao.
CDaoRecordset::D oFieldExchange
Struktura wywołuje tę funkcję składową, aby automatycznie wymieniać dane między elementami członkowskimi danych pól obiektu zestawu rekordów i odpowiednimi kolumnami bieżącego rekordu w źródle danych.
virtual void DoFieldExchange(CDaoFieldExchange* pFX);
Parametry
Pfx
Zawiera wskaźnik do CDaoFieldExchange
obiektu. Struktura skonfiguruje już ten obiekt, aby określić kontekst operacji wymiany pól.
Uwagi
Wiąże również elementy członkowskie danych parametrów, jeśli istnieją, z symbolami zastępczymi parametrów w ciągu instrukcji SQL dla zaznaczenia zestawu rekordów. Wymiana danych pól, nazywanych wymianą pól rekordów DAO (DFX), działa w obu kierunkach: od elementów członkowskich danych pola obiektu rekordu do pól rekordu w źródle danych oraz z rekordu w źródle danych do obiektu zestawu rekordów. Jeśli kolumny są wiązane dynamicznie, nie musisz implementować DoFieldExchange
elementu .
Jedyną akcją, którą zwykle należy wykonać, aby zaimplementować DoFieldExchange
klasę pochodnego zestawu rekordów, jest utworzenie klasy za pomocą klasy ClassWizard i określenie nazw i typów danych składowych danych pola. Możesz również dodać kod do zapisu klasy ClassWizard w celu określenia składowych danych parametrów. Jeśli wszystkie pola mają być powiązane dynamicznie, ta funkcja jest nieaktywna, chyba że określisz składowe danych parametrów.
Po zadeklarowaniu klasy pochodnego zestawu rekordów za pomocą klasy ClassWizard kreator zapisuje przesłonięcia DoFieldExchange
, co przypomina następujący przykład:
void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("Param"), m_strParam);
pFX->SetFieldType(CDaoFieldExchange::outputColumn);
DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
DFX_Text(pFX, _T("LastName"), m_LastName);
DFX_Short(pFX, _T("Age"), m_Age);
DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
DFX_DateTime(pFX, _T("termination_date"), m_termination_date);
CDaoRecordset::DoFieldExchange(pFX);
}
CDaoRecordset::Edit
Wywołaj tę funkcję składową, aby zezwolić na zmiany bieżącego rekordu.
virtual void Edit();
Uwagi
Po wywołaniu funkcji składowej Edit
zmiany wprowadzone w polach bieżącego rekordu są kopiowane do buforu kopiowania. Po wprowadzeniu żądanych zmian w rekordzie wywołaj metodę Update
, aby zapisać zmiany. Edit
zapisuje wartości elementów członkowskich danych zestawu rekordów. Jeśli wywołasz Edit
metodę , wprowadź zmiany, a następnie wywołaj Edit
ponownie wartości rekordu zostaną przywrócone do wartości, które były przed pierwszym Edit
wywołaniem.
Uwaga
Jeśli edytujesz rekord, a następnie wykonasz dowolną operację, która zostanie przeniesiona do innego rekordu bez uprzedniego wywołania Update
metody , zmiany zostaną utracone bez ostrzeżenia. Ponadto jeśli zamkniesz zestaw rekordów lub nadrzędną bazę danych, edytowany rekord zostanie odrzucony bez ostrzeżenia.
W niektórych przypadkach możesz zaktualizować kolumnę, zmieniając ją na wartość Null (bez danych). W tym celu wywołaj metodę SetFieldNull
z parametrem TRUE, aby oznaczyć pole Null. Spowoduje to również zaktualizowanie kolumny. Jeśli chcesz, aby pole zostało zapisane w źródle danych, mimo że jego wartość nie została zmieniona, wywołaj metodę SetFieldDirty
z parametrem TRUE. Działa to nawet wtedy, gdy pole ma wartość Null.
Struktura oznacza zmienione elementy członkowskie danych pól, aby upewnić się, że zostaną zapisane w rekordzie w źródle danych przez mechanizm wymiany pól rekordów DAO (DFX). Zmiana wartości pola zwykle powoduje automatyczne ustawienie pola zanieczyszczonego, dlatego rzadko trzeba wywołać metodę SetFieldDirty samodzielnie, ale czasami warto upewnić się, że kolumny są jawnie aktualizowane lub wstawiane niezależnie od wartości w elemencie danych pola. Mechanizm DFX wykorzystuje również użycie PSEUDO NULL. Aby uzyskać więcej informacji, zobacz CDaoFieldExchange::m_nOperation.
Jeśli mechanizm podwójnego buforowania nie jest używany, zmiana wartości pola nie powoduje automatycznego ustawienia pola jako zanieczyszczonego. W takim przypadku należy jawnie ustawić pole zanieczyszczone. Flaga zawarta w m_bCheckCacheForDirtyFields steruje tym automatycznym sprawdzaniem pól.
Gdy obiekt zestawu rekordów jest pesymistycznie zablokowany w środowisku wieloużytkownika, rekord pozostaje zablokowany od czasu Edit
jest używany do momentu ukończenia aktualizacji. Jeśli zestaw rekordów jest optymistycznie zablokowany, rekord jest zablokowany i porównywany ze wstępnie edytowanym rekordem tuż przed zaktualizowaniem w bazie danych. Jeśli rekord został zmieniony od wywołania Edit
, Update
operacja zakończy się niepowodzeniem, a MFC zgłosi wyjątek. Możesz zmienić tryb blokowania za pomocą SetLockingMode
polecenia .
Uwaga
Optymistyczne blokowanie jest zawsze używane w zewnętrznych formatach bazy danych, takich jak ODBC i instalowany program ISAM.
Bieżący rekord pozostaje bieżący po wywołaniu metody Edit
. Aby wywołać Edit
metodę , musi istnieć bieżący rekord. Jeśli nie ma bieżącego rekordu lub zestaw rekordów nie odwołuje się do otwartego obiektu zestawu rekordów typu tabeli lub zestawu rekordów typu dynaset, wystąpi wyjątek. Wywołanie Edit
powoduje, że element CDaoException
jest zgłaszany w następujących warunkach:
Brak bieżącego rekordu.
Baza danych lub zestaw rekordów jest tylko do odczytu.
Nie można aktualizować pól w rekordzie.
Baza danych lub zestaw rekordów został otwarty do wyłącznego użytku przez innego użytkownika.
Inny użytkownik zablokował stronę zawierającą rekord.
Jeśli źródło danych obsługuje transakcje, możesz wykonać Edit
wywołanie części transakcji. Przed wywołaniem Edit
i po otwarciu zestawu rekordów należy wywołać CDaoWorkspace::BeginTrans
metodę . Wywołanie CDaoWorkspace::CommitTrans
nie jest zastępowane wywołaniem wywołania Update
w celu ukończenia Edit
operacji. Aby uzyskać więcej informacji na temat transakcji, zobacz klasa CDaoWorkspace
.
Aby uzyskać powiązane informacje, zobacz tematy "AddNew Method", "Edit Method", "Delete Method", "Update Method" i "Updatable Property" w Pomocy dao.
CDaoRecordset::FillCache
Wywołaj tę funkcję składową, aby buforować określoną liczbę rekordów z zestawu rekordów.
void FillCache(
long* pSize = NULL,
COleVariant* pBookmark = NULL);
Parametry
Rozmiar p
Określa liczbę wierszy do wypełnienia w pamięci podręcznej. W przypadku pominięcia tego parametru wartość jest określana przez ustawienie właściwości CacheSize bazowego obiektu DAO.
pBookmark
COleVariant określający zakładkę. Pamięć podręczna jest wypełniana począwszy od rekordu wskazanego przez tę zakładkę. Jeśli pominiesz ten parametr, pamięć podręczna zostanie wypełniona począwszy od rekordu wskazanego przez właściwość CacheStart bazowego obiektu DAO.
Uwagi
Buforowanie zwiększa wydajność aplikacji, która pobiera lub pobiera dane z serwera zdalnego. Pamięć podręczna to miejsce w pamięci lokalnej, która przechowuje dane ostatnio pobrane z serwera przy założeniu, że dane będą prawdopodobnie ponownie żądane podczas działania aplikacji. Gdy dane są żądane, aparat bazy danych Microsoft Jet sprawdza pamięć podręczną dla danych najpierw, zamiast pobierać je z serwera, co zajmuje więcej czasu. Używanie buforowania danych w źródłach danych innych niż ODBC nie ma wpływu, ponieważ dane nie są zapisywane w pamięci podręcznej.
Zamiast czekać na wypełnienie pamięci podręcznej rekordami podczas pobierania, możesz jawnie wypełnić pamięć podręczną w dowolnym momencie, wywołując FillCache
funkcję składową. Jest to szybszy sposób wypełniania pamięci podręcznej, ponieważ FillCache
pobiera kilka rekordów jednocześnie zamiast jednego naraz. Na przykład podczas wyświetlania każdego ekranu rekordów możesz wywołać aplikację FillCache
w celu pobrania następnego ekranu rekordów.
Każda baza danych ODBC uzyskiwana za pomocą obiektów zestawu rekordów może mieć lokalną pamięć podręczną. Aby utworzyć pamięć podręczną, otwórz obiekt zestawu rekordów ze źródła danych zdalnych, a następnie wywołaj SetCacheSize
funkcje składowe i SetCacheStart
zestawu rekordów. Jeśli lSize i lBookmark tworzą zakres częściowo lub całkowicie poza zakresem określonym przez SetCacheSize
i SetCacheStart
, część zestawu rekordów poza tym zakresem jest ignorowana i nie jest ładowana do pamięci podręcznej. Jeśli FillCache
żąda więcej rekordów niż pozostają w zdalnym źródle danych, pobierane są tylko pozostałe rekordy i nie jest zgłaszany żaden wyjątek.
Rekordy pobierane z pamięci podręcznej nie odzwierciedlają zmian wprowadzonych współbieżnie do danych źródłowych przez innych użytkowników.
FillCache
pobiera tylko rekordy, które nie są jeszcze buforowane. Aby wymusić aktualizację wszystkich buforowanych danych, wywołaj SetCacheSize
funkcję składową z parametrem lSize równym 0, wywołaj SetCacheSize
ponownie parametr lSize równy rozmiarowi żądanej pamięci podręcznej, a następnie wywołaj metodę FillCache
.
Aby uzyskać powiązane informacje, zobacz temat "FillCache Method" (Metoda FillCache) w pomocy języka DAO.
CDaoRecordset::Find
Wywołaj tę funkcję składową, aby zlokalizować określony ciąg w zestawie rekordów typu dynamicznego lub migawki przy użyciu operatora porównania.
virtual BOOL Find(
long lFindType,
LPCTSTR lpszFilter);
Parametry
lFindType
Wartość wskazująca żądany typ operacji Znajdź. Możliwe wartości to:
AFX_DAO_NEXT Znajdź kolejną lokalizację pasującego ciągu.
AFX_DAO_PREV Znajdź poprzednią lokalizację pasującego ciągu.
AFX_DAO_FIRST Znajdź pierwszą lokalizację pasującego ciągu.
AFX_DAO_LAST Znajdź ostatnią lokalizację pasującego ciągu.
lpszFilter
Wyrażenie ciągu (na przykład klauzula WHERE w instrukcji SQL bez słowa WHERE) używane do lokalizowania rekordu. Na przykład:
rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
Możesz znaleźć pierwsze, następne, poprzednie lub ostatnie wystąpienie ciągu. Find
jest funkcją wirtualną, więc można ją zastąpić i dodać własną implementację. Funkcje składowe FindFirst
, FindLast
, FindNext
i FindPrev
nazywają Find
funkcję składową, dzięki czemu można użyć Find
do kontrolowania zachowania wszystkich operacji Znajdowania.
Aby zlokalizować rekord w zestawie rekordów typu tabeli, wywołaj funkcję elementu członkowskiego Seek .
Napiwek
Mniejszy zestaw posiadanych rekordów, tym bardziej skuteczny Find
jest. Ogólnie rzecz biorąc, a zwłaszcza w przypadku danych ODBC, lepiej jest utworzyć nowe zapytanie, które pobiera tylko żądane rekordy.
Aby uzyskać powiązane informacje, zobacz temat "FindFirst, FindLast, FindNext, FindPrevious Methods" w pomocy dao.
CDaoRecordset::FindFirst
Wywołaj tę funkcję składową, aby znaleźć pierwszy rekord zgodny z określonym warunkiem.
BOOL FindFirst(LPCTSTR lpszFilter);
Parametry
lpszFilter
Wyrażenie ciągu (na przykład klauzula WHERE w instrukcji SQL bez słowa WHERE) używane do lokalizowania rekordu.
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
FindFirst
Funkcja składowa rozpoczyna wyszukiwanie od początku zestawu rekordów i wyszukuje na końcu zestawu rekordów.
Jeśli chcesz uwzględnić wszystkie rekordy w wyszukiwaniu (nie tylko te, które spełniają określony warunek), użyj jednej z operacji Przenoszenia, aby przejść z rekordu do rekordu. Aby zlokalizować rekord w zestawie rekordów typu tabeli, wywołaj funkcję składową Seek
.
Jeśli rekord pasujący do kryteriów nie znajduje się, bieżący wskaźnik rekordu jest nieokreślony i FindFirst
zwraca zero. Jeśli zestaw rekordów zawiera więcej niż jeden rekord spełniający kryteria, FindFirst
lokalizuje pierwsze wystąpienie, FindNext
lokalizuje następne wystąpienie itd.
Uwaga
Jeśli edytujesz bieżący rekord, pamiętaj, aby zapisać zmiany, wywołując funkcję składową przed przejściem do innego rekordu Update
. Jeśli przejdziesz do innego rekordu bez aktualizowania, zmiany zostaną utracone bez ostrzeżenia.
Find
Funkcje składowe wyszukują lokalizację i w kierunku określonym w poniższej tabeli:
Znajdowanie operacji | Rozpocznij | Kierunek wyszukiwania |
---|---|---|
FindFirst |
Początek zestawu rekordów | Koniec zestawu rekordów |
FindLast |
Koniec zestawu rekordów | Początek zestawu rekordów |
FindNext |
Bieżący rekord | Koniec zestawu rekordów |
FindPrevious |
Bieżący rekord | Początek zestawu rekordów |
Uwaga
Po wywołaniu FindLast
aparatu bazy danych Microsoft Jet aparat bazy danych w pełni wypełnia zestaw rekordów przed rozpoczęciem wyszukiwania, jeśli jeszcze tego nie zrobiono. Pierwsze wyszukiwanie może trwać dłużej niż kolejne wyszukiwania.
Użycie jednej z operacji Znajdź nie jest takie samo jak wywołanie MoveFirst
lub MoveNext
, jednak po prostu sprawia, że pierwszy lub następny rekord jest bieżący bez określania warunku. Możesz wykonać operację Znajdź z operacją Przenieś.
Podczas korzystania z operacji znajdowania należy pamiętać o następujących kwestiach:
Jeśli
Find
zwraca wartość nonzero, bieżący rekord nie jest zdefiniowany. W takim przypadku należy umieścić bieżący wskaźnik rekordu z powrotem do prawidłowego rekordu.Nie można użyć operacji Znajdź z zestawem rekordów typu migawki tylko do przodu.
Jeśli szukasz pól zawierających daty, nawet jeśli nie używasz amerykańskiej wersji aparatu bazy danych Microsoft Jet, należy użyć formatu daty (miesiąc-rok) w przeciwnym razie nie można odnaleźć pasujących rekordów.
Podczas pracy z bazami danych ODBC i dużymi dynamicznymi zestawami danych można zauważyć, że korzystanie z operacji Znajdź działa wolno, szczególnie podczas pracy z dużymi zestawami rekordów. Wydajność można poprawić przy użyciu zapytań SQL z dostosowanymi klauzulami ORDERBY lub WHERE , zapytaniami parametrów lub
CDaoQuerydef
obiektami, które pobierają określone indeksowane rekordy.
Aby uzyskać powiązane informacje, zobacz temat "FindFirst, FindLast, FindNext, FindPrevious Methods" w pomocy dao.
CDaoRecordset::FindLast
Wywołaj tę funkcję składową, aby znaleźć ostatni rekord zgodny z określonym warunkiem.
BOOL FindLast(LPCTSTR lpszFilter);
Parametry
lpszFilter
Wyrażenie ciągu (na przykład klauzula WHERE w instrukcji SQL bez słowa WHERE) używane do lokalizowania rekordu.
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
FindLast
Funkcja składowa rozpoczyna wyszukiwanie na końcu zestawu rekordów i wyszukuje do tyłu na początku zestawu rekordów.
Jeśli chcesz uwzględnić wszystkie rekordy w wyszukiwaniu (nie tylko te, które spełniają określony warunek), użyj jednej z operacji Przenoszenia, aby przejść z rekordu do rekordu. Aby zlokalizować rekord w zestawie rekordów typu tabeli, wywołaj funkcję składową Seek
.
Jeśli rekord pasujący do kryteriów nie znajduje się, bieżący wskaźnik rekordu jest nieokreślony i FindLast
zwraca zero. Jeśli zestaw rekordów zawiera więcej niż jeden rekord spełniający kryteria, FindFirst
lokalizuje pierwsze wystąpienie, FindNext
lokalizuje następne wystąpienie po pierwszym wystąpieniu itd.
Uwaga
Jeśli edytujesz bieżący rekord, pamiętaj, aby zapisać zmiany, wywołując funkcję składową przed przejściem do innego rekordu Update
. Jeśli przejdziesz do innego rekordu bez aktualizowania, zmiany zostaną utracone bez ostrzeżenia.
Użycie jednej z operacji Znajdź nie jest takie samo jak wywołanie MoveFirst
lub MoveNext
, jednak po prostu sprawia, że pierwszy lub następny rekord jest bieżący bez określania warunku. Możesz wykonać operację Znajdź z operacją Przenieś.
Podczas korzystania z operacji znajdowania należy pamiętać o następujących kwestiach:
Jeśli
Find
zwraca wartość nonzero, bieżący rekord nie jest zdefiniowany. W takim przypadku należy umieścić bieżący wskaźnik rekordu z powrotem do prawidłowego rekordu.Nie można użyć operacji Znajdź z zestawem rekordów typu migawki tylko do przodu.
Jeśli szukasz pól zawierających daty, nawet jeśli nie używasz amerykańskiej wersji aparatu bazy danych Microsoft Jet, należy użyć formatu daty (miesiąc-rok) w przeciwnym razie nie można odnaleźć pasujących rekordów.
Podczas pracy z bazami danych ODBC i dużymi dynamicznymi zestawami danych można zauważyć, że korzystanie z operacji Znajdź działa wolno, szczególnie podczas pracy z dużymi zestawami rekordów. Wydajność można poprawić przy użyciu zapytań SQL z dostosowanymi klauzulami ORDERBY lub WHERE , zapytaniami parametrów lub
CDaoQuerydef
obiektami, które pobierają określone indeksowane rekordy.
Aby uzyskać powiązane informacje, zobacz temat "FindFirst, FindLast, FindNext, FindPrevious Methods" w pomocy dao.
CDaoRecordset::FindNext
Wywołaj tę funkcję składową, aby znaleźć następny rekord zgodny z określonym warunkiem.
BOOL FindNext(LPCTSTR lpszFilter);
Parametry
lpszFilter
Wyrażenie ciągu (na przykład klauzula WHERE w instrukcji SQL bez słowa WHERE) używane do lokalizowania rekordu.
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
FindNext
Funkcja składowa rozpoczyna wyszukiwanie w bieżącym rekordzie i wyszukuje na końcu zestawu rekordów.
Jeśli chcesz uwzględnić wszystkie rekordy w wyszukiwaniu (nie tylko te, które spełniają określony warunek), użyj jednej z operacji Przenoszenia, aby przejść z rekordu do rekordu. Aby zlokalizować rekord w zestawie rekordów typu tabeli, wywołaj funkcję składową Seek
.
Jeśli rekord pasujący do kryteriów nie znajduje się, bieżący wskaźnik rekordu jest nieokreślony i FindNext
zwraca zero. Jeśli zestaw rekordów zawiera więcej niż jeden rekord spełniający kryteria, FindFirst
lokalizuje pierwsze wystąpienie, FindNext
lokalizuje następne wystąpienie itd.
Uwaga
Jeśli edytujesz bieżący rekord, pamiętaj, aby zapisać zmiany, wywołując funkcję składową przed przejściem do innego rekordu Update
. Jeśli przejdziesz do innego rekordu bez aktualizowania, zmiany zostaną utracone bez ostrzeżenia.
Użycie jednej z operacji Znajdź nie jest takie samo jak wywołanie MoveFirst
lub MoveNext
, jednak po prostu sprawia, że pierwszy lub następny rekord jest bieżący bez określania warunku. Możesz wykonać operację Znajdź z operacją Przenieś.
Podczas korzystania z operacji znajdowania należy pamiętać o następujących kwestiach:
Jeśli
Find
zwraca wartość nonzero, bieżący rekord nie jest zdefiniowany. W takim przypadku należy umieścić bieżący wskaźnik rekordu z powrotem do prawidłowego rekordu.Nie można użyć operacji Znajdź z zestawem rekordów typu migawki tylko do przodu.
Jeśli szukasz pól zawierających daty, nawet jeśli nie używasz amerykańskiej wersji aparatu bazy danych Microsoft Jet, należy użyć formatu daty (miesiąc-rok) w przeciwnym razie nie można odnaleźć pasujących rekordów.
Podczas pracy z bazami danych ODBC i dużymi dynamicznymi zestawami danych można zauważyć, że korzystanie z operacji Znajdź działa wolno, szczególnie podczas pracy z dużymi zestawami rekordów. Wydajność można poprawić przy użyciu zapytań SQL z dostosowanymi klauzulami ORDERBY lub WHERE , zapytaniami parametrów lub
CDaoQuerydef
obiektami, które pobierają określone indeksowane rekordy.
Aby uzyskać powiązane informacje, zobacz temat "FindFirst, FindLast, FindNext, FindPrevious Methods" w pomocy dao.
CDaoRecordset::FindPrev
Wywołaj tę funkcję składową, aby znaleźć poprzedni rekord zgodny z określonym warunkiem.
BOOL FindPrev(LPCTSTR lpszFilter);
Parametry
lpszFilter
Wyrażenie ciągu (na przykład klauzula WHERE w instrukcji SQL bez słowa WHERE) używane do lokalizowania rekordu.
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
FindPrev
Funkcja składowa rozpoczyna wyszukiwanie w bieżącym rekordzie i wyszukuje do tyłu początek zestawu rekordów.
Jeśli chcesz uwzględnić wszystkie rekordy w wyszukiwaniu (nie tylko te, które spełniają określony warunek), użyj jednej z operacji Przenoszenia, aby przejść z rekordu do rekordu. Aby zlokalizować rekord w zestawie rekordów typu tabeli, wywołaj funkcję składową Seek
.
Jeśli rekord pasujący do kryteriów nie znajduje się, bieżący wskaźnik rekordu jest nieokreślony i FindPrev
zwraca zero. Jeśli zestaw rekordów zawiera więcej niż jeden rekord spełniający kryteria, FindFirst
lokalizuje pierwsze wystąpienie, FindNext
lokalizuje następne wystąpienie itd.
Uwaga
Jeśli edytujesz bieżący rekord, pamiętaj, aby zapisać zmiany, wywołując funkcję składową przed przejściem do innego rekordu Update
. Jeśli przejdziesz do innego rekordu bez aktualizowania, zmiany zostaną utracone bez ostrzeżenia.
Użycie jednej z operacji Znajdź nie jest takie samo jak wywołanie MoveFirst
lub MoveNext
, jednak po prostu sprawia, że pierwszy lub następny rekord jest bieżący bez określania warunku. Możesz wykonać operację Znajdź z operacją Przenieś.
Podczas korzystania z operacji znajdowania należy pamiętać o następujących kwestiach:
Jeśli
Find
zwraca wartość nonzero, bieżący rekord nie jest zdefiniowany. W takim przypadku należy umieścić bieżący wskaźnik rekordu z powrotem do prawidłowego rekordu.Nie można użyć operacji Znajdź z zestawem rekordów typu migawki tylko do przodu.
Jeśli szukasz pól zawierających daty, nawet jeśli nie używasz amerykańskiej wersji aparatu bazy danych Microsoft Jet, należy użyć formatu daty (miesiąc-rok) w przeciwnym razie nie można odnaleźć pasujących rekordów.
Podczas pracy z bazami danych ODBC i dużymi dynamicznymi zestawami danych można zauważyć, że korzystanie z operacji Znajdź działa wolno, szczególnie podczas pracy z dużymi zestawami rekordów. Wydajność można poprawić przy użyciu zapytań SQL z dostosowanymi klauzulami ORDERBY lub WHERE , zapytaniami parametrów lub
CDaoQuerydef
obiektami, które pobierają określone indeksowane rekordy.
Aby uzyskać powiązane informacje, zobacz temat "FindFirst, FindLast, FindNext, FindPrevious Methods" w pomocy dao.
CDaoRecordset::GetAbsolutePosition
Zwraca liczbę rekordów bieżącego rekordu obiektu zestawu rekordów.
long GetAbsolutePosition();
Wartość zwracana
Liczba całkowita z zakresu od 0 do liczby rekordów w zestawie rekordów. Odpowiada pozycji porządkowej bieżącego rekordu w zestawie rekordów.
Uwagi
Wartość właściwości AbsolutePosition bazowego obiektu DAO jest oparta na zera; ustawienie wartości 0 odnosi się do pierwszego rekordu w zestawie rekordów. Liczbę wypełnionych rekordów w zestawie rekordów można określić, wywołując funkcję GetRecordCount. Wywołanie GetRecordCount
może zająć trochę czasu, ponieważ musi uzyskiwać dostęp do wszystkich rekordów w celu określenia liczby.
Jeśli nie ma bieżącego rekordu, tak jak w przypadku braku rekordów w zestawie rekordów, zwracana jest wartość 1. Jeśli bieżący rekord zostanie usunięty, wartość właściwości AbsolutePosition nie jest zdefiniowana, a MFC zgłasza wyjątek, jeśli jest przywoływał. W przypadku zestawów rekordów typu dynaset nowe rekordy są dodawane na końcu sekwencji.
Uwaga
Ta właściwość nie jest przeznaczona do użycia jako liczba rekordów zastępczych. Zakładki są nadal zalecanym sposobem przechowywania i powrotu do danej pozycji i są jedynym sposobem pozycjonowania bieżącego rekordu we wszystkich typach obiektów zestawu rekordów. W szczególności pozycja danego rekordu zmienia się po usunięciu rekordów poprzedzających rekordy. Nie ma również pewności, że dany rekord będzie miał taką samą pozycję bezwzględną, jeśli zestaw rekordów zostanie ponownie utworzony, ponieważ kolejność poszczególnych rekordów w zestawie rekordów nie jest gwarantowana, chyba że zostanie utworzona za pomocą instrukcji SQL przy użyciu klauzuli ORDERBY .
Uwaga
Ta funkcja składowa jest prawidłowa tylko dla zestawów rekordów typu dynaset i snapshot-type.
Aby uzyskać powiązane informacje, zobacz temat "AbsolutePosition Property" w Pomocy dao.
CDaoRecordset::GetBookmark
Wywołaj tę funkcję składową, aby uzyskać wartość zakładki w określonym rekordzie.
COleVariant GetBookmark();
Wartość zwracana
Zwraca wartość reprezentującą zakładkę w bieżącym rekordzie.
Uwagi
Po utworzeniu lub otwarciu obiektu zestawu rekordów każda z jego rekordów ma już unikatową zakładkę, jeśli je obsługuje. Wywołaj metodę CanBookmark
, aby określić, czy zestaw rekordów obsługuje zakładki.
Zakładkę dla bieżącego rekordu można zapisać, przypisując wartość zakładki do COleVariant
obiektu. Aby szybko powrócić do tego rekordu po przeniesieniu do innego rekordu, wywołaj parametr SetBookmark
z parametrem odpowiadającym wartości tego COleVariant
obiektu.
Uwaga
Wywoływanie funkcji Ponowne zapytanie zmienia zakładki DAO.
Aby uzyskać powiązane informacje, zobacz temat "Właściwość zakładki" w Pomocy DAO.
CDaoRecordset::GetCacheSize
Wywołaj tę funkcję składową, aby uzyskać liczbę rekordów buforowanych.
long GetCacheSize();
Wartość zwracana
Wartość określająca liczbę rekordów w zestawie rekordów typu dynaset zawierającym dane, które mają być lokalnie buforowane ze źródła danych ODBC.
Uwagi
Buforowanie danych zwiększa wydajność aplikacji pobierającej dane z serwera zdalnego za pośrednictwem obiektów zestawu rekordów typu dynaset. Pamięć podręczna to miejsce w pamięci lokalnej, która przechowuje dane ostatnio pobrane z serwera, jeśli dane są ponownie żądane podczas działania aplikacji. Gdy wymagane są dane, aparat bazy danych Microsoft Jet sprawdza pamięć podręczną dla żądanych danych, zamiast pobierać je z serwera, co zajmuje więcej czasu. Dane, które nie pochodzą ze źródła danych ODBC, nie są zapisywane w pamięci podręcznej.
Każde źródło danych ODBC, takie jak dołączona tabela, może mieć lokalną pamięć podręczną.
Aby uzyskać powiązane informacje, zobacz temat "CacheSize, CacheStart Properties" w Pomocy dao.
CDaoRecordset::GetCacheStart
Wywołaj tę funkcję składową, aby uzyskać wartość zakładki pierwszego rekordu w zestawie rekordów do buforowania.
COleVariant GetCacheStart();
Wartość zwracana
Element COleVariant
określający zakładkę pierwszego rekordu w zestawie rekordów do buforowania.
Uwagi
Aparat bazy danych Microsoft Jet żąda rekordów w zakresie pamięci podręcznej z pamięci podręcznej i żąda rekordów spoza zakresu pamięci podręcznej z serwera.
Uwaga
Rekordy pobrane z pamięci podręcznej nie odzwierciedlają zmian wprowadzonych współbieżnie do danych źródłowych przez innych użytkowników.
Aby uzyskać powiązane informacje, zobacz temat "CacheSize, CacheStart Properties" w Pomocy dao.
CDaoRecordset::GetCurrentIndex
Wywołaj tę funkcję składową, aby określić indeks aktualnie używany w indeksowanym obiekcie typu CDaoRecordset
tabeli.
CString GetCurrentIndex();
Wartość zwracana
Element CString
zawierający nazwę indeksu, który jest obecnie używany z zestawem rekordów typu tabela. Zwraca pusty ciąg, jeśli nie ustawiono żadnego indeksu.
Uwagi
Ten indeks jest podstawą do porządkowania rekordów w zestawie rekordów typu tabeli i jest używany przez funkcję składową Seek do lokalizowania rekordów.
CDaoRecordset
Obiekt może mieć więcej niż jeden indeks, ale może używać tylko jednego indeksu jednocześnie (chociaż obiekt CDaoTableDef może mieć kilka indeksów zdefiniowanych na nim).
Aby uzyskać powiązane informacje, zobacz temat "Indeksuj obiekt" i definicję "bieżący indeks" w Pomocy dao.
CDaoRecordset::GetDateCreated
Wywołaj tę funkcję składową, aby pobrać datę i godzinę utworzenia tabeli bazowej.
COleDateTime GetDateCreated();
Wartość zwracana
Obiekt COleDateTime zawierający datę i godzinę utworzenia tabeli bazowej.
Uwagi
Ustawienia daty i godziny pochodzą z komputera, na którym została utworzona tabela podstawowa.
Aby uzyskać powiązane informacje, zobacz temat "DateCreated, LastUpdated Properties" w Pomocy dao.
CDaoRecordset::GetDateLastUpdated
Wywołaj tę funkcję składową, aby pobrać datę i godzinę ostatniej aktualizacji schematu.
COleDateTime GetDateLastUpdated();
Wartość zwracana
Obiekt COleDateTime zawierający datę i godzinę ostatniej aktualizacji struktury tabeli podstawowej (schematu).
Uwagi
Ustawienia daty i godziny pochodzą z komputera, na którym ostatnia aktualizacja struktury tabeli podstawowej (schematu).
Aby uzyskać powiązane informacje, zobacz temat "DateCreated, LastUpdated Properties" w Pomocy dao.
CDaoRecordset::GetDefaultDBName
Wywołaj tę funkcję składową, aby określić nazwę bazy danych dla tego zestawu rekordów.
virtual CString GetDefaultDBName();
Wartość zwracana
Element CString
zawierający ścieżkę i nazwę bazy danych, z której pochodzi ten zestaw rekordów.
Uwagi
Jeśli zestaw rekordów jest tworzony bez wskaźnika do bazy danych CDaoDatabase, ta ścieżka jest używana przez zestaw rekordów do otwierania domyślnej bazy danych. Domyślnie ta funkcja zwraca pusty ciąg. Gdy klasa ClassWizard utworzy nowy zestaw rekordów z CDaoRecordset
klasy , utworzy tę funkcję.
Poniższy przykład ilustruje użycie podwójnego ukośnika odwrotnego (\\) w ciągu, zgodnie z wymaganiami, aby ciąg był poprawnie interpretowany.
CString CCustSet::GetDefaultDBName()
{
return _T("c:\\mydir\\datasrc.mdb");
}
CDaoRecordset::GetDefaultSQL
Struktura wywołuje tę funkcję składową, aby uzyskać domyślną instrukcję SQL, na której jest oparty zestaw rekordów.
virtual CString GetDefaultSQL();
Wartość zwracana
Element CString
zawierający domyślną instrukcję SQL.
Uwagi
Może to być nazwa tabeli lub instrukcja SQL SELECT .
Pośrednio zdefiniuj domyślną instrukcję SQL, deklarując klasę zestawu rekordów za pomocą klasy ClassWizard, a klasa ClassWizard wykonuje to zadanie.
Jeśli przekażesz ciąg SQL o wartości null do polecenia Otwórz, ta funkcja jest wywoływana w celu określenia nazwy tabeli lub bazy danych SQL dla zestawu rekordów.
CDaoRecordset::GetEditMode
Wywołaj tę funkcję składową, aby określić stan edycji, który jest jedną z następujących wartości:
short GetEditMode();
Wartość zwracana
Zwraca wartość wskazującą stan edytowania bieżącego rekordu.
Uwagi
Wartość | Opis |
---|---|
dbEditNone |
Nie trwa żadna operacja edytowania. |
dbEditInProgress |
Edit został wywołany. |
dbEditAdd |
AddNew został wywołany. |
Aby uzyskać powiązane informacje, zobacz temat "EditMode Property" (Właściwość EditMode) w pomocy dotyczącej języka DAO.
CDaoRecordset::GetFieldCount
Wywołaj tę funkcję składową, aby pobrać liczbę pól (kolumn) zdefiniowanych w zestawie rekordów.
short GetFieldCount();
Wartość zwracana
Liczba pól w zestawie rekordów.
Uwagi
Aby uzyskać powiązane informacje, zobacz temat "Count Property" (Zlicz właściwość) w pomocy dao.
CDaoRecordset::GetFieldInfo
Wywołaj tę funkcję składową, aby uzyskać informacje o polach w zestawie rekordów.
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Indeks zerowy wstępnie zdefiniowanego pola w kolekcji Pola zestawu rekordów dla wyszukiwania według indeksu.
fieldinfo
Odwołanie do struktury CDaoFieldInfo .
dwInfoOptions
Opcje określające, które informacje o zestawie rekordów mają być pobierane. Dostępne opcje są wymienione tutaj wraz z tym, co powodują zwrócenie funkcji. Aby uzyskać najlepszą wydajność, pobierz tylko potrzebny poziom informacji:
AFX_DAO_PRIMARY_INFO
(Ustawienie domyślne) Nazwa, typ, rozmiar, atrybutyAFX_DAO_SECONDARY_INFO
Podstawowe informacje oraz: Pozycja porządkowa, Wymagana, Zezwalaj na długość zerową, Sortowanie kolejności, Nazwa zagraniczna, Pole źródłowe, Tabela źródłowaAFX_DAO_ALL_INFO
Podstawowe i pomocnicze informacje oraz: Wartość domyślna, Reguła walidacji, Tekst weryfikacji
lpszName
Nazwa pola.
Uwagi
Jedna wersja funkcji umożliwia wyszukanie pola według indeksu. Druga wersja umożliwia wyszukanie pola według nazwy.
Aby uzyskać opis zwróconych informacji, zobacz strukturę CDaoFieldInfo . Ta struktura zawiera elementy członkowskie, które odpowiadają elementom informacji wymienionych powyżej w opisie dwInfoOptions. Gdy żądasz informacji na jednym poziomie, uzyskasz również informacje dotyczące wszystkich poprzednich poziomów.
Aby uzyskać powiązane informacje, zobacz temat "Właściwości atrybutów" w pomocy dao.
CDaoRecordset::GetFieldValue
Wywołaj tę funkcję składową, aby pobrać dane w zestawie rekordów.
virtual void GetFieldValue(
LPCTSTR lpszName,
COleVariant& varValue);
virtual void GetFieldValue(
int nIndex,
COleVariant& varValue);
virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);
Parametry
lpszName
Wskaźnik do ciągu zawierającego nazwę pola.
varValue
Odwołanie do COleVariant
obiektu, który będzie przechowywać wartość pola.
nIndex
Indeks zerowy pola w kolekcji Fields zestawu rekordów dla wyszukiwania według indeksu.
Wartość zwracana
Dwie wersje GetFieldValue
tej wartości zwracają obiekt COleVariant zawierający wartość pola.
Uwagi
Możesz wyszukać pole według nazwy lub według pozycji porządkowej.
Uwaga
Bardziej wydajne jest wywołanie jednej z wersji tej funkcji składowej, która przyjmuje COleVariant
odwołanie do obiektu jako parametr, zamiast wywoływać wersję zwracającą COleVariant
obiekt. Te ostatnie wersje tej funkcji są zachowywane w celu zachowania zgodności z poprzednimi wersjami.
Użyj GetFieldValue
poleceń i SetFieldValue , aby dynamicznie powiązać pola w czasie wykonywania, a nie statycznie powiązania kolumn przy użyciu mechanizmu DoFieldExchange .
GetFieldValue
DoFieldExchange
i mechanizm można połączyć w celu zwiększenia wydajności. Na przykład użyj polecenia GetFieldValue
, aby pobrać wartość potrzebną tylko na żądanie i przypisać to wywołanie do przycisku "Więcej informacji" w interfejsie.
Aby uzyskać powiązane informacje, zobacz tematy "Obiekt pola" i "Właściwość wartości" w Pomocy dao.
CDaoRecordset::GetIndexCount
Wywołaj tę funkcję składową, aby określić liczbę indeksów dostępnych w zestawie rekordów typu tabeli.
short GetIndexCount();
Wartość zwracana
Liczba indeksów w zestawie rekordów typu tabela.
Uwagi
GetIndexCount
jest przydatna do pętli we wszystkich indeksach w zestawie rekordów. W tym celu użyj polecenia z GetIndexInfo
.GetIndexCount
Jeśli wywołasz tę funkcję składową na zestawach rekordów typu dynaset lub snapshot-type, MFC zgłosi wyjątek.
Aby uzyskać powiązane informacje, zobacz temat "Właściwości atrybutów" w pomocy dao.
CDaoRecordset::GetIndexInfo
Wywołaj tę funkcję składową, aby uzyskać różne rodzaje informacji o indeksie zdefiniowanym w tabeli bazowej zestawu rekordów.
void GetIndexInfo(
int nIndex,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetIndexInfo(
LPCTSTR lpszName,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Indeks oparty na zera w kolekcji Indeksy tabeli dla wyszukiwania według pozycji liczbowej.
indexinfo
Odwołanie do struktury CDaoIndexInfo .
dwInfoOptions
Opcje określające, które informacje o indeksie mają być pobierane. Dostępne opcje są wymienione tutaj wraz z tym, co powodują zwrócenie funkcji. Aby uzyskać najlepszą wydajność, pobierz tylko potrzebny poziom informacji:
AFX_DAO_PRIMARY_INFO
(Ustawienie domyślne) Nazwa, informacje o polu, polaAFX_DAO_SECONDARY_INFO
Podstawowe informacje oraz: Primary, Unique, Clustered, IgnoreNulls, Required, ForeignAFX_DAO_ALL_INFO
Podstawowe i pomocnicze informacje oraz: Liczba unikatowych
lpszName
Wskaźnik do nazwy obiektu indeksu, aby wyszukać według nazwy.
Uwagi
Jedna wersja funkcji umożliwia wyszukanie indeksu według jego pozycji w kolekcji. Druga wersja umożliwia wyszukiwanie indeksu według nazwy.
Aby uzyskać opis zwróconych informacji, zobacz strukturę CDaoIndexInfo . Ta struktura zawiera elementy członkowskie, które odpowiadają elementom informacji wymienionych powyżej w opisie dwInfoOptions. Gdy żądasz informacji na jednym poziomie, uzyskasz również informacje dotyczące wszystkich poprzednich poziomów.
Aby uzyskać powiązane informacje, zobacz temat "Właściwości atrybutów" w pomocy dao.
CDaoRecordset::GetLastModifiedBookmark
Wywołaj tę funkcję składową, aby pobrać zakładkę ostatnio dodanego lub zaktualizowanego rekordu.
COleVariant GetLastModifiedBookmark();
Wartość zwracana
Element COleVariant
zawierający zakładkę wskazującą ostatnio dodany lub zmieniony rekord.
Uwagi
Po utworzeniu lub otwarciu obiektu zestawu rekordów każda z jego rekordów ma już unikatową zakładkę, jeśli je obsługuje. Wywołaj metodę GetBookmark , aby określić, czy zestaw rekordów obsługuje zakładki. Jeśli zestaw rekordów nie obsługuje zakładek, CDaoException
zostanie zgłoszony element .
Po dodaniu rekordu pojawia się on na końcu zestawu rekordów i nie jest bieżącym rekordem. Aby ustawić nowy rekord jako bieżący, wywołaj metodę GetLastModifiedBookmark
, a następnie wywołaj metodę SetBookmark
, aby powrócić do nowo dodanego rekordu.
Aby uzyskać powiązane informacje, zobacz temat "LastModified Property" (Właściwość ostatniomodyfikowana) w pomocy dao.
CDaoRecordset::GetLockingMode
Wywołaj tę funkcję składową, aby określić typ blokowania w ramach zestawu rekordów.
BOOL GetLockingMode();
Wartość zwracana
Nonzero, jeśli typ blokady jest pesymistyczne, w przeciwnym razie 0 dla optymistycznego blokowania rekordów.
Uwagi
W przypadku efektu pesymistycznego blokowania strona danych zawierająca edytowany rekord jest zablokowana natychmiast po wywołaniu funkcji Edytuj składową. Strona jest odblokowana po wywołaniu funkcji elementu członkowskiego Aktualizuj lub Zamknij albo dowolnej operacji Przenieś lub Znajdź.
Gdy optymistyczne blokowanie jest w mocy, strona danych zawierająca rekord jest zablokowana tylko podczas aktualizowania rekordu za pomocą funkcji składowej Update
.
Podczas pracy ze źródłami danych ODBC tryb blokowania jest zawsze optymistyczny.
Aby uzyskać powiązane informacje, zobacz tematy "LockEdits Property" i "Locking Behavior in Multiuser Applications" (Blokowanie zachowania w aplikacjach wieloużytkownikowych) w pomocy dao.
CDaoRecordset::GetName
Wywołaj tę funkcję składową, aby pobrać nazwę zestawu rekordów.
CString GetName();
Wartość zwracana
Element CString
zawierający nazwę zestawu rekordów.
Uwagi
Nazwa zestawu rekordów musi zaczynać się literą i może zawierać maksymalnie 40 znaków. Może zawierać liczby i znaki podkreślenia, ale nie może zawierać znaków interpunkcyjnych ani spacji.
Aby uzyskać powiązane informacje, zobacz temat "Name Property" (Nazwa właściwości) w pomocy dao.
CDaoRecordset::GetParamValue
Wywołaj tę funkcję składową, aby pobrać bieżącą wartość określonego parametru przechowywanego w bazowym obiekcie DAOParameter.
virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);
Parametry
nIndex
Położenie liczbowe parametru w bazowym obiekcie DAOParameter.
lpszName
Nazwa parametru, którego wartość jest odpowiednia.
Wartość zwracana
Obiekt klasy COleVariant zawierający wartość parametru.
Uwagi
Dostęp do parametru można uzyskać według nazwy lub jego pozycji liczbowej w kolekcji.
Aby uzyskać powiązane informacje, zobacz temat "Obiekt parametru" w pomocy dao.
CDaoRecordset::GetPercentPosition
Podczas pracy z zestawem rekordów typu dynaset lub snapshot-type, jeśli wywołasz GetPercentPosition
wywołanie przed pełnym wypełnieniem zestawu rekordów, ilość ruchu jest względna do liczby rekordów, do których uzyskuje się dostęp zgodnie z wywołaniem metody GetRecordCount.
float GetPercentPosition();
Wartość zwracana
Liczba z zakresu od 0 do 100 wskazująca przybliżoną lokalizację bieżącego rekordu w obiekcie zestawu rekordów na podstawie procentu rekordów w zestawie rekordów.
Uwagi
Możesz przejść do ostatniego rekordu, wywołując metodę MoveLast , aby ukończyć populację wszystkich zestawów rekordów, ale może to zająć dużo czasu.
Można wywołać GetPercentPosition
wszystkie trzy typy obiektów zestawu rekordów, w tym tabele bez indeksów. Nie można jednak wywołać GetPercentPosition
migawek przewijania tylko do przodu ani zestawu rekordów otwartego z zapytania przekazywanego względem zewnętrznej bazy danych. Jeśli nie ma bieżącego rekordu lub bieżący rekord został usunięty, CDaoException
jest zgłaszany.
Aby uzyskać powiązane informacje, zobacz temat "PercentPosition Property" w Pomocy dao.
CDaoRecordset::GetRecordCount
Wywołaj tę funkcję składową, aby dowiedzieć się, ile rekordów w zestawie rekordów było uzyskiwanych.
long GetRecordCount();
Wartość zwracana
Zwraca liczbę rekordów, do których uzyskuje się dostęp w obiekcie zestawu rekordów.
Uwagi
GetRecordCount
nie wskazuje, ile rekordów jest zawartych w zestawie rekordów typu dynaset lub snapshot-type, dopóki wszystkie rekordy nie zostaną pobrane. Wykonanie tego wywołania funkcji składowej może zająć dużo czasu.
Po uzyskaniu dostępu do ostatniego rekordu wartość zwracana wskazuje łączną liczbę nieukończonych rekordów w zestawie rekordów. Aby wymusić uzyskanie dostępu do ostatniego rekordu, wywołaj MoveLast
funkcję lub FindLast
dla zestawu rekordów. Możesz również użyć liczby SQL, aby określić przybliżoną liczbę rekordów zwracanych przez zapytanie.
Gdy aplikacja usuwa rekordy w zestawie rekordów typu dynaset, zwracana wartość GetRecordCount
spada. Jednak rekordy usunięte przez innych użytkowników nie zostaną odzwierciedlone GetRecordCount
przez, dopóki bieżący rekord nie zostanie umieszczony w usuniętym rekordzie. Jeśli wykonasz transakcję, która ma wpływ na liczbę rekordów, a następnie wycofasz transakcję, GetRecordCount
nie będzie odzwierciedlać rzeczywistej liczby pozostałych rekordów.
Wartość zestawu rekordów GetRecordCount
typu migawki nie ma wpływu na zmiany w tabelach bazowych.
Wartość GetRecordCount
zestawu rekordów typu tabeli odzwierciedla przybliżoną liczbę rekordów w tabeli i ma to wpływ natychmiast po dodaniu i usunięciu rekordów tabeli.
Zestaw rekordów bez rekordów zwraca wartość 0. Podczas pracy z dołączonymi tabelami lub bazami danych GetRecordCount
ODBC zawsze zwraca wartość - 1. Wywołanie funkcji składowej Requery
w zestawie rekordów resetuje wartość GetRecordCount
tak samo jak w przypadku ponownego wykonania zapytania.
Aby uzyskać powiązane informacje, zobacz temat "RecordCount Property" (Właściwość rekordu) w pomocy języka DAO.
CDaoRecordset::GetSQL
Wywołaj tę funkcję składową, aby uzyskać instrukcję SQL, która została użyta do wybrania rekordów zestawu rekordów podczas jego otwierania.
CString GetSQL() const;
Wartość zwracana
Element CString
zawierający instrukcję SQL.
Uwagi
Zazwyczaj będzie to instrukcja SQL SELECT .
Ciąg zwracany przez GetSQL
element jest zwykle inny niż dowolny ciąg, który mógł zostać przekazany do zestawu rekordów w parametrze lpszSQL do funkcji Open member. Jest to spowodowane tym, że zestaw rekordów tworzy pełną instrukcję SQL opartą na tym, co przekazano do Open
elementu , co zostało określone za pomocą klasy ClassWizard i co można określić w m_strFilter i m_strSort składowych danych.
Uwaga
Wywołaj tę funkcję składową dopiero po wywołaniu metody Open
.
Aby uzyskać powiązane informacje, zobacz temat "Właściwość SQL" w pomocy dao.
CDaoRecordset::GetType
Wywołaj tę funkcję składową po otwarciu zestawu rekordów, aby określić typ obiektu zestawu rekordów.
short GetType();
Wartość zwracana
Jedna z następujących wartości wskazująca typ zestawu rekordów:
dbOpenTable
Zestaw rekordów typu tabelidbOpenDynaset
Zestaw rekordów typu DynasetdbOpenSnapshot
Zestaw rekordów typu migawki
Uwagi
Aby uzyskać powiązane informacje, zobacz temat "Typ właściwości" w pomocy dao.
CDaoRecordset::GetValidationRule
Wywołaj tę funkcję składową, aby określić regułę używaną do weryfikowania danych.
CString GetValidationRule();
Wartość zwracana
CString
Obiekt zawierający wartość, która weryfikuje dane w rekordzie w miarę jego zmiany lub dodawania do tabeli.
Uwagi
Ta reguła jest oparta na tekście i jest stosowana za każdym razem, gdy tabela bazowa zostanie zmieniona. Jeśli dane nie są legalne, MFC zgłasza wyjątek. Zwrócony komunikat o błędzie to tekst właściwości ValidationText obiektu pola bazowego, jeśli określono, lub tekst wyrażenia określonego przez właściwość ValidationRule obiektu pola bazowego. Możesz wywołać metodę GetValidationText , aby uzyskać tekst komunikatu o błędzie.
Na przykład pole w rekordzie, które wymaga dnia miesiąca, może mieć regułę sprawdzania poprawności, taką jak "DZIEŃ OD 1 DO 31".
Aby uzyskać powiązane informacje, zobacz temat "ValidationRule Property" (Właściwość ValidationRule) w pomocy języka DAO.
CDaoRecordset::GetValidationText
Wywołaj tę funkcję składową, aby pobrać tekst właściwości ValidationText obiektu pola bazowego.
CString GetValidationText();
Wartość zwracana
CString
Obiekt zawierający tekst komunikatu, który jest wyświetlany, jeśli wartość pola nie spełnia reguły poprawności bazowego obiektu pola.
Uwagi
Aby uzyskać powiązane informacje, zobacz temat "ValidationText Property" (Właściwość ValidationText) w pomocy dao.
CDaoRecordset::IsBOF
Wywołaj tę funkcję składową przed przewinięciem z rekordu do rekordu, aby dowiedzieć się, czy został wcześniejszy pierwszy rekord zestawu rekordów.
BOOL IsBOF() const;
Wartość zwracana
Nonzero, jeśli zestaw rekordów nie zawiera żadnych rekordów lub jeśli przewijane do tyłu przed pierwszym rekordem; w przeciwnym razie 0.
Uwagi
Możesz również wywołać IsBOF
metodę wraz z poleceniem IsEOF
, aby określić, czy zestaw rekordów zawiera jakiekolwiek rekordy, czy też jest pusty. Natychmiast po wywołaniu Open
metody , jeśli zestaw rekordów nie zawiera żadnych rekordów, IsBOF
zwraca wartość nonzero. Po otwarciu zestawu rekordów, który ma co najmniej jeden rekord, pierwszy rekord jest bieżącym rekordem i IsBOF
zwraca wartość 0.
Jeśli pierwszy rekord jest bieżącym rekordem i wywołasz MovePrev
metodę , IsBOF
następnie zwróci wartość nonzero. Jeśli IsBOF
zwraca wartość niezerową i wywołujesz MovePrev
wyjątek , zostanie zgłoszony wyjątek. Jeśli IsBOF
zwraca wartość niezerową, bieżący rekord jest niezdefiniowany, a każda akcja, która wymaga bieżącego rekordu, spowoduje wyjątek.
Wpływ określonych metod na IsBOF
i IsEOF
ustawień:
Wywołanie
Open*
wewnętrznie powoduje, że pierwszy rekord w zestawie rekordów bieżący rekord jest wywoływany przez wywołanie metodyMoveFirst
. W związku z tym wywołanieOpen
pustego zestawu rekordów powodujeIsBOF
iIsEOF
zwrócenie wartości niezerowej. (Zobacz poniższą tabelę, aby zapoznać się z zachowaniem błęduMoveFirst
lubMoveLast
wywołania).Wszystkie operacje przenoszenia, które pomyślnie lokalizują rekord, powodują zwrócenie wartości
IsBOF
0.IsEOF
Wywołanie
AddNew
, po którymUpdate
następuje wywołanie, które pomyślnie wstawia nowy rekord, spowodujeIsBOF
zwrócenie wartości 0, ale tylko wtedy, gdyIsEOF
jest już niezerowa. Stan wartościIsEOF
zawsze pozostanie niezmieniony. Zgodnie z definicją aparatu bazy danych Microsoft Jet bieżący wskaźnik rekordu pustego zestawu rekordów znajduje się na końcu pliku, więc każdy nowy rekord zostanie wstawiony po bieżącym rekordzie.Każde
Delete
wywołanie, nawet jeśli usunie jedyny pozostały rekord z zestawu rekordów, nie zmieni wartościIsBOF
aniIsEOF
.
W tej tabeli przedstawiono, które operacje przenoszenia są dozwolone z różnymi kombinacjami .IsBOF
/ IsEOF
Stan | MoveFirst, MoveLast | MovePrev, Przenieś < 0 |
Przenieś 0 | MoveNext, Przenieś > 0 |
---|---|---|---|---|
IsBOF =nonzero,IsEOF =0 |
Dozwolone | Wyjątek | Wyjątek | Dozwolone |
IsBOF =0,IsEOF =nonzero |
Dozwolone | Dozwolone | Wyjątek | Wyjątek |
Oba niezerowe | Wyjątek | Wyjątek | Wyjątek | Wyjątek |
Oba 0 | Dozwolone | Dozwolone | Dozwolone | Dozwolone |
Zezwolenie na operację przenoszenia nie oznacza, że operacja zostanie pomyślnie zlokalizowana rekord. Wskazuje jedynie, że próba wykonania określonej operacji przenoszenia jest dozwolona i nie wygeneruje wyjątku. Wartość IsBOF
funkcji składowych i IsEOF
może ulec zmianie w wyniku próby przeniesienia.
Wpływ operacji przenoszenia, które nie lokalizują rekordu IsBOF
na wartości i IsEOF
ustawienia, jest pokazany w poniższej tabeli.
Operacje | IsBOF | IsEOF |
---|---|---|
MoveFirst , MoveLast |
Niezerowa | Niezerowa |
Move 0 |
Bez zmian | Bez zmian |
MovePrev , Move < 0 |
Niezerowa | Bez zmian |
MoveNext , Move > 0 |
Bez zmian | Niezerowa |
Aby uzyskać powiązane informacje, zobacz temat "BOF, EOF Properties" w Pomocy DAO.
CDaoRecordset::IsDeleted
Wywołaj tę funkcję składową, aby określić, czy bieżący rekord został usunięty.
BOOL IsDeleted() const;
Wartość zwracana
Niezerowe, jeśli zestaw rekordów jest umieszczony na usuniętym rekordzie; w przeciwnym razie 0.
Uwagi
Jeśli przewiniesz rekord i IsDeleted
zwrócisz wartość TRUE (niezerową), musisz przewinąć do innego rekordu, zanim będzie można wykonać inne operacje zestawu rekordów.
Uwaga
Nie musisz sprawdzać stanu usuniętych rekordów w zestawie rekordów migawki lub zestawu rekordów typu tabeli. Ponieważ rekordy nie mogą być usuwane z migawki, nie ma potrzeby wywoływania elementu IsDeleted
. W przypadku zestawów rekordów typu tabeli usunięte rekordy są faktycznie usuwane z zestawu rekordów. Po usunięciu rekordu przez Ciebie, innego użytkownika lub w innym zestawie rekordów, nie można przewijać go z powrotem do tego rekordu. W związku z tym nie ma potrzeby wywoływania metody IsDeleted
.
Po usunięciu rekordu z zestawu dynaset zostanie on usunięty z zestawu rekordów i nie można cofnąć się do tego rekordu. Jeśli jednak rekord w zestawie dynamicznym zostanie usunięty przez innego użytkownika lub w innym zestawie rekordów w oparciu o tę samą tabelę, zwraca wartość TRUE po IsDeleted
późniejszym przewinięciu do tego rekordu.
Aby uzyskać powiązane informacje, zobacz tematy "Delete Method", "LastModified Property" i "EditMode Property" w Pomocy dao.
CDaoRecordset::IsEOF
Wywołaj tę funkcję składową, przewijając rekord do rekordu, aby dowiedzieć się, czy poszły poza ostatni rekord zestawu rekordów.
BOOL IsEOF() const;
Wartość zwracana
Niezerowe, jeśli zestaw rekordów nie zawiera żadnych rekordów lub jeśli przewijane poza ostatni rekord; w przeciwnym razie 0.
Uwagi
Możesz również wywołać metodę IsEOF
, aby określić, czy zestaw rekordów zawiera jakiekolwiek rekordy, czy jest pusty. Natychmiast po wywołaniu Open
metody , jeśli zestaw rekordów nie zawiera żadnych rekordów, IsEOF
zwraca wartość nonzero. Po otwarciu zestawu rekordów, który ma co najmniej jeden rekord, pierwszy rekord jest bieżącym rekordem i IsEOF
zwraca wartość 0.
Jeśli ostatni rekord jest bieżącym rekordem podczas wywoływania MoveNext
metody , IsEOF
funkcja zwróci wartość nonzero. Jeśli IsEOF
zwraca wartość niezerową i wywołujesz MoveNext
wyjątek , zostanie zgłoszony wyjątek. Jeśli IsEOF
zwraca wartość niezerową, bieżący rekord jest niezdefiniowany, a każda akcja, która wymaga bieżącego rekordu, spowoduje wyjątek.
Wpływ określonych metod na IsBOF
i IsEOF
ustawień:
Wywołanie
Open
wewnętrznie powoduje, że pierwszy rekord w zestawie rekordów bieżący rekord jest wywoływany przez wywołanie metodyMoveFirst
. W związku z tym wywołanieOpen
pustego zestawu rekordów powodujeIsBOF
iIsEOF
zwrócenie wartości niezerowej. (Zobacz poniższą tabelę, aby zapoznać się z zachowaniem wywołania, które zakończyło sięMoveFirst
niepowodzeniem).Wszystkie operacje przenoszenia, które pomyślnie lokalizują rekord, powodują zwrócenie wartości
IsBOF
0.IsEOF
Wywołanie
AddNew
, po którymUpdate
następuje wywołanie, które pomyślnie wstawia nowy rekord, spowodujeIsBOF
zwrócenie wartości 0, ale tylko wtedy, gdyIsEOF
jest już niezerowa. Stan wartościIsEOF
zawsze pozostanie niezmieniony. Zgodnie z definicją aparatu bazy danych Microsoft Jet bieżący wskaźnik rekordu pustego zestawu rekordów znajduje się na końcu pliku, więc każdy nowy rekord zostanie wstawiony po bieżącym rekordzie.Każde
Delete
wywołanie, nawet jeśli usunie jedyny pozostały rekord z zestawu rekordów, nie zmieni wartościIsBOF
aniIsEOF
.
W tej tabeli przedstawiono, które operacje przenoszenia są dozwolone z różnymi kombinacjami .IsBOF
/ IsEOF
Stan | MoveFirst, MoveLast | MovePrev, Przenieś < 0 |
Przenieś 0 | MoveNext, Przenieś > 0 |
---|---|---|---|---|
IsBOF =nonzero,IsEOF =0 |
Dozwolone | Wyjątek | Wyjątek | Dozwolone |
IsBOF =0,IsEOF =nonzero |
Dozwolone | Dozwolone | Wyjątek | Wyjątek |
Oba niezerowe | Wyjątek | Wyjątek | Wyjątek | Wyjątek |
Oba 0 | Dozwolone | Dozwolone | Dozwolone | Dozwolone |
Zezwolenie na operację przenoszenia nie oznacza, że operacja zostanie pomyślnie zlokalizowana rekord. Wskazuje jedynie, że próba wykonania określonej operacji przenoszenia jest dozwolona i nie wygeneruje wyjątku. Wartość IsBOF
funkcji składowych i IsEOF
może ulec zmianie w wyniku próby przeniesienia.
Wpływ operacji przenoszenia, które nie lokalizują rekordu IsBOF
na wartości i IsEOF
ustawienia, jest pokazany w poniższej tabeli.
Operacje | IsBOF | IsEOF |
---|---|---|
MoveFirst , MoveLast |
Niezerowa | Niezerowa |
Move 0 |
Bez zmian | Bez zmian |
MovePrev , Move < 0 |
Niezerowa | Bez zmian |
MoveNext , Move > 0 |
Bez zmian | Niezerowa |
Aby uzyskać powiązane informacje, zobacz temat "BOF, EOF Properties" w Pomocy DAO.
CDaoRecordset::IsFieldDirty
Wywołaj tę funkcję składową, aby określić, czy określony element członkowski danych pola dynaset został oflagowany jako "brudny" (zmieniony).
BOOL IsFieldDirty(void* pv);
Parametry
Pv
Wskaźnik do elementu członkowskiego danych pola, którego stan chcesz sprawdzić, lub wartość NULL, aby określić, czy którekolwiek z pól są zanieczyszczone.
Wartość zwracana
Niezerowe, jeśli określony element członkowski danych pola jest oflagowany jako zanieczyszczony; w przeciwnym razie 0.
Uwagi
Dane we wszystkich zanieczyszczonych elementach członkowskich danych pola są przesyłane do rekordu w źródle danych, gdy bieżący rekord jest aktualizowany przez wywołanie Update
funkcji CDaoRecordset
elementu członkowskiego (po wywołaniu metody Edit
lub AddNew
). Dzięki tej wiedzy możesz wykonać dalsze kroki, takie jak odrzucenie elementu członkowskiego danych pola, aby oznaczyć kolumnę tak, aby nie zostało zapisane w źródle danych.
IsFieldDirty
jest implementowany za pomocą programu DoFieldExchange
.
CDaoRecordset::IsFieldNull
Wywołaj tę funkcję składową, aby określić, czy określony element członkowski danych pola zestawu rekordów został oflagowany jako null.
BOOL IsFieldNull(void* pv);
Parametry
Pv
Wskaźnik do elementu członkowskiego danych pola, którego stan chcesz sprawdzić, lub wartość NULL, aby określić, czy którekolwiek z pól ma wartość Null.
Wartość zwracana
Niezerowe, jeśli określony element członkowski danych pola jest oflagowany jako null; w przeciwnym razie 0.
Uwagi
(W terminologii bazy danych wartość Null oznacza "brak wartości" i nie jest taka sama jak wartość NULL w języku C++). Jeśli element członkowski danych pola jest oznaczony jako Null, jest interpretowany jako kolumna bieżącego rekordu, dla którego nie ma wartości.
Uwaga
W niektórych sytuacjach użycie IsFieldNull
może być nieefektywne, jak pokazano w poniższym przykładzie kodu:
COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;
// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
rs.GetFieldValue(nField, varValue);
// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
varValue.Attach(varNewVal); // do something
Uwaga
Jeśli używasz powiązania rekordu dynamicznego, bez wyprowadzania z CDaoRecordset
elementu , pamiętaj, aby użyć VT_NULL, jak pokazano w przykładzie.
CDaoRecordset::IsFieldNullable
Wywołaj tę funkcję składową, aby określić, czy określony element członkowski danych pola jest "dopuszczalny do wartości null" (można ustawić wartość null; Wartość NULL języka C++ nie jest taka sama jak null, co w terminologii bazy danych oznacza "brak wartości").
BOOL IsFieldNullable(void* pv);
Parametry
Pv
Wskaźnik do elementu członkowskiego danych pola, którego stan chcesz sprawdzić, lub wartość NULL, aby określić, czy którekolwiek z pól ma wartość Null.
Wartość zwracana
Wartość niezerowa, jeśli określony element członkowski danych pola może mieć wartość null; w przeciwnym razie 0.
Uwagi
Pole, które nie może mieć wartości Null, musi mieć wartość . Jeśli spróbujesz ustawić takie pole na wartość Null podczas dodawania lub aktualizowania rekordu, źródło danych odrzuca dodanie lub aktualizację i Update
zgłosi wyjątek. Wyjątek występuje podczas wywoływania Update
metody , a nie podczas wywoływania metody SetFieldNull
.
CDaoRecordset::IsOpen
Wywołaj tę funkcję składową, aby określić, czy zestaw rekordów jest otwarty.
BOOL IsOpen() const;
Wartość zwracana
Niezero, jeśli wcześniej wywoływano funkcję obiektu Open
zestawu rekordów lub Requery
składową, a zestaw rekordów nie został zamknięty; w przeciwnym razie 0.
Uwagi
CDaoRecordset::m_bCheckCacheForDirtyFields
Zawiera flagę wskazującą, czy pola buforowane są automatycznie oznaczone jako zanieczyszczone (zmienione) i Null.
Uwagi
Flaga domyślna to TRUE. Ustawienie w tym elemencie danych steruje całym mechanizmem podwójnego buforowania. Jeśli flaga ma wartość TRUE, możesz wyłączyć buforowanie na podstawie pola przy użyciu mechanizmu DFX. Jeśli ustawisz flagę na FAŁSZ, musisz wywołać SetFieldDirty
metodę i SetFieldNull
samodzielnie.
Ustaw ten element członkowski danych przed wywołaniem metody Open
. Ten mechanizm jest przeznaczony przede wszystkim do ułatwienia użytkowania. Wydajność może być wolniejsza z powodu podwójnego buforowania pól w miarę wprowadzania zmian.
CDaoRecordset::m_nFields
Zawiera liczbę składowych danych pól w klasie zestawu rekordów oraz liczbę kolumn wybranych przez zestaw rekordów ze źródła danych.
Uwagi
Konstruktor klasy zestawu rekordów musi zainicjować m_nFields
poprawną liczbę statycznie powiązanych pól. Klasa ClassWizard zapisuje tę inicjację podczas jej używania do deklarowania klasy zestawu rekordów. Możesz również napisać go ręcznie.
Struktura używa tej liczby do zarządzania interakcją między elementami członkowskimi danych pól i odpowiednimi kolumnami bieżącego rekordu w źródle danych.
Uwaga
Ta liczba musi odpowiadać liczbie kolumn wyjściowych zarejestrowanych w DoFieldExchange
obiekcie po wywołaniu SetFieldType
parametru CDaoFieldExchange::outputColumn
.
Kolumny można powiązać dynamicznie za pomocą poleceń CDaoRecordset::GetFieldValue
i CDaoRecordset::SetFieldValue
. Jeśli to zrobisz, nie musisz zwiększać liczby, m_nFields
aby odzwierciedlać liczbę wywołań funkcji DFX w funkcji składowej DoFieldExchange
.
CDaoRecordset::m_nParams
Zawiera liczbę składowych danych parametrów w klasie zestawu rekordów — liczbę parametrów przekazywanych za pomocą zapytania zestawu rekordów.
Uwagi
Jeśli klasa zestawu rekordów ma jakiekolwiek składowe danych parametrów, konstruktor klasy musi zainicjować m_nParams z prawidłową liczbą. Wartość m_nParams wartość domyślna to 0. Jeśli dodasz składowe danych parametrów — które należy wykonać ręcznie — należy również ręcznie dodać inicjację w konstruktorze klasy, aby odzwierciedlić liczbę parametrów (które muszą być co najmniej tak duże, jak liczba symboli zastępczych "" w ciągu m_strFilter lub m_strSort ).
Platforma używa tej liczby, gdy sparametryzuje zapytanie zestawu rekordów.
Uwaga
Ta liczba musi odpowiadać liczbie parametrów zarejestrowanych w DoFieldExchange
obiekcie po wywołaniu SetFieldType
parametru CFieldExchange::param
.
Aby uzyskać powiązane informacje, zobacz temat "Obiekt parametru" w pomocy dao.
CDaoRecordset::m_pDAORecordset
Zawiera wskaźnik do interfejsu OLE dla obiektu zestawu rekordów DAO bazowego CDaoRecordset
obiektu.
Uwagi
Użyj tego wskaźnika, jeśli chcesz uzyskać bezpośredni dostęp do interfejsu DAO.
Aby uzyskać powiązane informacje, zobacz temat "Obiekt zestawu rekordów" w Pomocy dao.
CDaoRecordset::m_pDatabase
Zawiera wskaźnik do CDaoDatabase
obiektu, za pomocą którego zestaw rekordów jest połączony ze źródłem danych.
Uwagi
Ta zmienna jest ustawiana na dwa sposoby. Zazwyczaj wskaźnik jest przekazywany do już otwartego CDaoDatabase
obiektu podczas konstruowania obiektu zestawu rekordów. Jeśli zamiast tego przekażesz wartość NULL, CDaoRecordset
zostanie utworzony CDaoDatabase
obiekt i otworzy go. W obu przypadkach CDaoRecordset
wskaźnik jest przechowywany w tej zmiennej.
Zwykle nie trzeba bezpośrednio używać wskaźnika przechowywanego w m_pDatabase
pliku . Jeśli jednak napiszesz własne rozszerzenia do CDaoRecordset
, może być konieczne użycie wskaźnika. Na przykład może być potrzebny wskaźnik, jeśli zgłosisz własne CDaoException
(s).
Aby uzyskać powiązane informacje, zobacz temat "Obiekt bazy danych" w pomocy dao.
CDaoRecordset::m_strFilter
Zawiera ciąg używany do konstruowania klauzuli WHERE instrukcji SQL.
Uwagi
Nie zawiera ono zastrzeżonego słowa WHERE do filtrowania zestawu rekordów. Użycie tego elementu członkowskiego danych nie ma zastosowania do zestawów rekordów typu tabeli. Użycie m_strFilter
elementu nie ma wpływu podczas otwierania zestawu rekordów przy użyciu CDaoQueryDef
wskaźnika.
Użyj formatu daty USA (miesiąc-rok) podczas filtrowania pól zawierających daty, nawet jeśli nie używasz wersji amerykańskiej aparatu bazy danych Microsoft Jet; w przeciwnym razie dane mogą nie być filtrowane zgodnie z oczekiwaniami.
Aby uzyskać powiązane informacje, zobacz temat "Filtruj właściwość" w pomocy dao.
CDaoRecordset::m_strSort
Zawiera ciąg zawierający klauzulę ORDERBY instrukcji SQL bez zastrzeżonych słów ORDERBY.
Uwagi
Można sortować obiekty zestawów rekordów typu dynaset i migawki.
Nie można sortować obiektów zestawu rekordów typu tabeli. Aby określić kolejność sortowania zestawu rekordów typu tabeli, wywołaj metodę SetCurrentIndex.
Użycie m_strSort nie ma wpływu podczas otwierania zestawu rekordów przy użyciu CDaoQueryDef
wskaźnika.
Aby uzyskać powiązane informacje, zobacz temat "Sortuj właściwość" w pomocy dao.
CDaoRecordset::Move
Wywołaj tę funkcję składową, aby umieścić rekordy lRows zestawu rekordów z bieżącego rekordu.
virtual void Move(long lRows);
Parametry
lRows
Liczba rekordów do przejścia do przodu lub do tyłu. Wartości dodatnie przechodzą do przodu, w kierunku końca zestawu rekordów. Wartości ujemne przesuwają się do tyłu, w kierunku początku.
Uwagi
Możesz przejść do przodu lub do tyłu. Move( 1 )
jest odpowiednikiem MoveNext
elementu i Move( -1 )
jest odpowiednikiem MovePrev
elementu .
Uwaga
Wywołanie dowolnej funkcji Move
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Ogólnie rzecz biorąc, wywołaj zarówno IsBOF
operację przenoszenia, jak i IsEOF
przed operacją Przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy. Po wywołaniu polecenia Open
lub Requery
wywołaj metodę IsBOF
albo IsEOF
.
Uwaga
Jeśli przewijasz obok początku lub końca zestawu rekordów ( IsBOF
lub IsEOF
zwracasz wartość niezerową), wywołanie Move
funkcji zgłasza CDaoException
błąd .
Uwaga
Jeśli wywołasz dowolną z Move
funkcji podczas aktualizowania lub dodawania bieżącego rekordu, aktualizacje zostaną utracone bez ostrzeżenia.
Podczas wywoływania Move
migawki przewijania tylko do przodu parametr lRows musi być dodatnią liczbą całkowitą, a zakładki nie są dozwolone, więc można przejść tylko do przodu.
Aby utworzyć pierwszy, ostatni, następny lub poprzedni rekord w zestawie rekordów bieżącego rekordu, wywołaj MoveFirst
funkcję , MoveLast
, MoveNext
lub MovePrev
składową.
Aby uzyskać powiązane informacje, zobacz tematy "Move Method" i "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" w pomocy dao.
CDaoRecordset::MoveFirst
Wywołaj tę funkcję składową, aby ustawić pierwszy rekord w zestawie rekordów (jeśli istnieje) bieżący rekord.
void MoveFirst();
Uwagi
Nie musisz wywoływać MoveFirst
bezpośrednio po otwarciu zestawu rekordów. W tym czasie pierwszy rekord (jeśli istnieje) jest automatycznie bieżącym rekordem.
Uwaga
Wywołanie dowolnej funkcji Move
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Ogólnie rzecz biorąc, wywołaj zarówno IsBOF
operację przenoszenia, jak i IsEOF
przed operacją Przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy. Po wywołaniu polecenia Open
lub Requery
wywołaj metodę IsBOF
albo IsEOF
.
Uwaga
Jeśli wywołasz dowolną z Move
funkcji podczas aktualizowania lub dodawania bieżącego rekordu, aktualizacje zostaną utracone bez ostrzeżenia.
Użyj funkcji , aby przejść z rekordu Move
do rekordu bez stosowania warunku. Operacje znajdowania umożliwiają lokalizowanie rekordów w obiekcie zestawu rekordów typu dynaset lub snapshot-type, który spełnia określony warunek. Aby zlokalizować rekord w obiekcie zestawu rekordów typu tabeli, wywołaj metodę Seek
.
Jeśli zestaw rekordów odwołuje się do zestawu rekordów typu tabeli, ruch jest zgodny z bieżącym indeksem tabeli. Bieżący indeks można ustawić przy użyciu właściwości Index bazowego obiektu DAO. Jeśli nie ustawisz bieżącego indeksu, kolejność zwracanych rekordów jest niezdefiniowana.
Jeśli wywołasz MoveLast
obiekt zestawu rekordów na podstawie zapytania SQL lub zapytaniadef, zapytanie jest wymuszane do ukończenia, a obiekt zestawu rekordów jest w pełni wypełniony.
Nie można wywołać MoveFirst
funkcji lub MovePrev
składowej z migawką przewijania tylko do przodu.
Aby przenieść położenie bieżącego rekordu w obiekcie zestawu rekordów określonej liczby rekordów do przodu lub do tyłu, wywołaj metodę Move
.
Aby uzyskać powiązane informacje, zobacz tematy "Move Method" i "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" w pomocy dao.
CDaoRecordset::MoveLast
Wywołaj tę funkcję składową, aby ustawić ostatni rekord (jeśli istnieje) w zestawie rekordów bieżący rekord.
void MoveLast();
Uwagi
Uwaga
Wywołanie dowolnej funkcji Move
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Ogólnie rzecz biorąc, wywołaj zarówno IsBOF
operację przenoszenia, jak i IsEOF
przed operacją Przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy. Po wywołaniu polecenia Open
lub Requery
wywołaj metodę IsBOF
albo IsEOF
.
Uwaga
Jeśli wywołasz dowolną z Move
funkcji podczas aktualizowania lub dodawania bieżącego rekordu, aktualizacje zostaną utracone bez ostrzeżenia.
Użyj funkcji , aby przejść z rekordu Move
do rekordu bez stosowania warunku. Operacje znajdowania umożliwiają lokalizowanie rekordów w obiekcie zestawu rekordów typu dynaset lub snapshot-type, który spełnia określony warunek. Aby zlokalizować rekord w obiekcie zestawu rekordów typu tabeli, wywołaj metodę Seek
.
Jeśli zestaw rekordów odwołuje się do zestawu rekordów typu tabeli, ruch jest zgodny z bieżącym indeksem tabeli. Bieżący indeks można ustawić przy użyciu właściwości Index bazowego obiektu DAO. Jeśli nie ustawisz bieżącego indeksu, kolejność zwracanych rekordów jest niezdefiniowana.
Jeśli wywołasz MoveLast
obiekt zestawu rekordów na podstawie zapytania SQL lub zapytaniadef, zapytanie jest wymuszane do ukończenia, a obiekt zestawu rekordów jest w pełni wypełniony.
Aby przenieść położenie bieżącego rekordu w obiekcie zestawu rekordów określonej liczby rekordów do przodu lub do tyłu, wywołaj metodę Move
.
Aby uzyskać powiązane informacje, zobacz tematy "Move Method" i "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" w pomocy dao.
CDaoRecordset::MoveNext
Wywołaj tę funkcję składową, aby ustawić następny rekord w zestawie rekordów w bieżącym rekordzie.
void MoveNext();
Uwagi
Zaleca się wywołanie metody IsBOF
przed podjęciem próby przejścia do poprzedniego rekordu. Wywołanie polecenia w celu wywołania MovePrev
CDaoException
zwraca wartość if IsBOF
zwraca wartość niezerową wskazującą, że zostało już przewijane przed pierwszym rekordem lub że żaden rekord nie został wybrany przez zestaw rekordów.
Uwaga
Wywołanie dowolnej funkcji Move
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Ogólnie rzecz biorąc, wywołaj zarówno IsBOF
operację przenoszenia, jak i IsEOF
przed operacją Przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy. Po wywołaniu polecenia Open
lub Requery
wywołaj metodę IsBOF
albo IsEOF
.
Uwaga
Jeśli wywołasz dowolną z Move
funkcji podczas aktualizowania lub dodawania bieżącego rekordu, aktualizacje zostaną utracone bez ostrzeżenia.
Użyj funkcji , aby przejść z rekordu Move
do rekordu bez stosowania warunku. Operacje znajdowania umożliwiają lokalizowanie rekordów w obiekcie zestawu rekordów typu dynaset lub snapshot-type, który spełnia określony warunek. Aby zlokalizować rekord w obiekcie zestawu rekordów typu tabeli, wywołaj metodę Seek
.
Jeśli zestaw rekordów odwołuje się do zestawu rekordów typu tabeli, ruch jest zgodny z bieżącym indeksem tabeli. Bieżący indeks można ustawić przy użyciu właściwości Index bazowego obiektu DAO. Jeśli nie ustawisz bieżącego indeksu, kolejność zwracanych rekordów jest niezdefiniowana.
Aby przenieść położenie bieżącego rekordu w obiekcie zestawu rekordów określonej liczby rekordów do przodu lub do tyłu, wywołaj metodę Move
.
Aby uzyskać powiązane informacje, zobacz tematy "Move Method" i "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" w pomocy dao.
CDaoRecordset::MovePrev
Wywołaj tę funkcję składową, aby ustawić poprzedni rekord w zestawie rekordów bieżący rekord.
void MovePrev();
Uwagi
Zaleca się wywołanie metody IsBOF
przed podjęciem próby przejścia do poprzedniego rekordu. Wywołanie polecenia w celu wywołania MovePrev
CDaoException
zwraca wartość if IsBOF
zwraca wartość niezerową wskazującą, że zostało już przewijane przed pierwszym rekordem lub że żaden rekord nie został wybrany przez zestaw rekordów.
Uwaga
Wywołanie dowolnej funkcji Move
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Ogólnie rzecz biorąc, wywołaj zarówno IsBOF
operację przenoszenia, jak i IsEOF
przed operacją Przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy. Po wywołaniu polecenia Open
lub Requery
wywołaj metodę IsBOF
albo IsEOF
.
Uwaga
Jeśli wywołasz dowolną z Move
funkcji podczas aktualizowania lub dodawania bieżącego rekordu, aktualizacje zostaną utracone bez ostrzeżenia.
Użyj funkcji , aby przejść z rekordu Move
do rekordu bez stosowania warunku. Operacje znajdowania umożliwiają lokalizowanie rekordów w obiekcie zestawu rekordów typu dynaset lub snapshot-type, który spełnia określony warunek. Aby zlokalizować rekord w obiekcie zestawu rekordów typu tabeli, wywołaj metodę Seek
.
Jeśli zestaw rekordów odwołuje się do zestawu rekordów typu tabeli, ruch jest zgodny z bieżącym indeksem tabeli. Bieżący indeks można ustawić przy użyciu właściwości Index bazowego obiektu DAO. Jeśli nie ustawisz bieżącego indeksu, kolejność zwracanych rekordów jest niezdefiniowana.
Nie można wywołać MoveFirst
funkcji lub MovePrev
składowej z migawką przewijania tylko do przodu.
Aby przenieść położenie bieżącego rekordu w obiekcie zestawu rekordów określonej liczby rekordów do przodu lub do tyłu, wywołaj metodę Move
.
Aby uzyskać powiązane informacje, zobacz tematy "Move Method" i "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" w pomocy dao.
CDaoRecordset::Open
Należy wywołać tę funkcję składową, aby pobrać rekordy dla zestawu rekordów.
virtual void Open(
int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
int nOptions = 0);
virtual void Open(
CDaoTableDef* pTableDef,
int nOpenType = dbOpenTable,
int nOptions = 0);
virtual void Open(
CDaoQueryDef* pQueryDef,
int nOpenType = dbOpenDynaset,
int nOptions = 0);
Parametry
nOpenType
Jedna z następujących wartości:
dbOpenDynaset
Zestaw rekordów typu dynaset z dwukierunkowym przewijaniem. Jest to opcja domyślna.dbOpenTable
Zestaw rekordów typu tabeli z dwukierunkowym przewijaniem.dbOpenSnapshot
Zestaw rekordów typu migawki z dwukierunkowym przewijaniem.
lpszSQL
Wskaźnik ciągu zawierający jeden z następujących elementów:
Wskaźnik o wartości NULL.
Nazwa co najmniej jednej definicji tabeli i/lub definicji kwerend (rozdzielonych przecinkami).
Instrukcja SQL SELECT (opcjonalnie z klauzulą SQL WHERE lub ORDERBY).
Zapytanie przekazywane.
nOpcje
Co najmniej jedna z opcji wymienionych poniżej. Wartość domyślna to 0. Dopuszczalne są następujące wartości:
dbAppendOnly
Można dołączać tylko nowe rekordy (tylko zestaw rekordów typu dynaset). Ta opcja oznacza dosłownie, że rekordy mogą być dołączane tylko. Klasy baz danych MFC ODBC mają opcję tylko do dołączania, która umożliwia pobieranie i dołączanie rekordów.dbForwardOnly
Zestaw rekordów to migawka przewijania tylko do przodu.dbSeeChanges
Wygeneruj wyjątek, jeśli inny użytkownik zmienia edytowane dane.dbDenyWrite
Inni użytkownicy nie mogą modyfikować ani dodawać rekordów.dbDenyRead
Inni użytkownicy nie mogą wyświetlać rekordów (tylko zestaw rekordów typu tabeli).dbReadOnly
Można wyświetlać tylko rekordy; inni użytkownicy mogą je modyfikować.dbInconsistent
Niespójne aktualizacje są dozwolone (tylko zestaw rekordów typu dynaset).dbConsistent
Dozwolone są tylko spójne aktualizacje (tylko zestaw rekordów typu dynaset).
Uwaga
Stałe dbConsistent
i dbInconsistent
wykluczają się wzajemnie. Można użyć jednej lub drugiej, ale nie obu w danym wystąpieniu programu Open
.
pTableDef
Wskaźnik do obiektu CDaoTableDef . Ta wersja jest prawidłowa tylko dla zestawów rekordów typu tabeli. W przypadku korzystania z tej opcji CDaoDatabase
wskaźnik używany do konstruowania CDaoRecordset
elementu nie jest używany, a raczej baza danych, w której znajduje się tabeladef.
pQueryDef
Wskaźnik do obiektu CDaoQueryDef . Ta wersja jest prawidłowa tylko dla zestawów rekordów typu dynaset i migawek. W przypadku korzystania z tej opcji CDaoDatabase
wskaźnik używany do konstruowania CDaoRecordset
elementu nie jest używany, a raczej baza danych, w której znajduje się kwerendadef.
Uwagi
Przed wywołaniem Open
metody należy skonstruować obiekt zestawu rekordów. Istnieje kilka sposobów, aby to zrobić:
Podczas konstruowania obiektu zestawu rekordów przekaż wskaźnik do
CDaoDatabase
obiektu, który jest już otwarty.Podczas konstruowania obiektu zestawu rekordów przekaż wskaźnik do
CDaoDatabase
obiektu, który nie jest otwarty. Zestaw rekordów otwieraCDaoDatabase
obiekt, ale nie zamyka go po zamknięciu obiektu zestawu rekordów.Podczas konstruowania obiektu zestawu rekordów przekaż wskaźnik o wartości NULL. Obiekt zestawu rekordów wywołuje polecenie
GetDefaultDBName
, aby uzyskać nazwę programu Microsoft Access . Plik MDB do otwarcia. Następnie zestaw rekordów otwieraCDaoDatabase
obiekt i utrzymuje go otwarty tak długo, jak zestaw rekordów jest otwarty. Po wywołaniuClose
zestawu rekordówCDaoDatabase
obiekt jest również zamknięty.Uwaga
Po otwarciu
CDaoDatabase
obiektu zestaw rekordów otwiera źródło danych z niejednoznacznym dostępem.
W przypadku wersjiOpen
, która używa parametru lpszSQL, po otwarciu zestawu rekordów można pobrać rekordy na jeden z kilku sposobów. Pierwszą opcją jest posiadanie funkcji DFX w pliku DoFieldExchange
. Drugą opcją jest użycie powiązania dynamicznego przez wywołanie funkcji składowej GetFieldValue
. Te opcje można zaimplementować oddzielnie lub w połączeniu. Jeśli są one połączone, musisz przekazać instrukcję SQL samodzielnie przy wywołaniu metody Open
.
W przypadku korzystania z drugiej wersji Open
elementu, w której przekazujesz CDaoTableDef
obiekt, wynikowe kolumny są dostępne do powiązania za pośrednictwem i mechanizmu DFX i/lub powiązania dynamicznie za pośrednictwem DoFieldExchange
metody GetFieldValue
.
Uwaga
Można wywołać Open
metodę CDaoTableDef
przy użyciu obiektu dla zestawów rekordów typu tabeli.
Jeśli używasz trzeciej Open
wersji, w której przekazujesz CDaoQueryDef
obiekt, to zapytanie jest wykonywane, a wynikowe kolumny są dostępne do powiązania za pomocą mechanizmu DFX i/lub powiązania dynamicznego za pośrednictwem DoFieldExchange
.GetFieldValue
Uwaga
Można wywołać Open
tylko obiekt dla CDaoQueryDef
zestawów rekordów typu dynaset i snapshot-type.
Dla pierwszej wersji, która używa parametru Open
lpszSQL
, rekordy są wybierane na podstawie kryteriów przedstawionych w poniższej tabeli.
Wartość parametru lpszSQL |
Wybrane rekordy są określane przez | Przykład |
---|---|---|
NULL | Ciąg zwrócony przez GetDefaultSQL . |
|
Rozdzielana przecinkami lista co najmniej jednej definicji tabeli i/lub nazw kwerend. | Wszystkie kolumny reprezentowane w obiekcie DoFieldExchange . |
"Customer" |
SELECT column-list FROM table-list | Określone kolumny z określonych definicji tabeli i/lub definicji zapytań. | "SELECT CustId, CustName FROM Customer" |
Zwykła procedura polega na przekazaniu wartości NULL do Open
klasy ; w tym przypadku Open
wywołuje GetDefaultSQL
funkcję składową, którą klasa ClassWizard generuje podczas tworzenia klasy pochodnej CDaoRecordset
. Ta wartość zawiera definicje tabel i/lub nazwy definicji zapytań określone w klasie ClassWizard. Zamiast tego można określić inne informacje w parametrze lpszSQL .
Niezależnie od tego, co przekazujesz, Open
tworzy końcowy ciąg SQL dla zapytania (ciąg może zawierać klauzule SQL WHERE i ORDERBY dołączone do przekazanego ciągu lpszSQL ), a następnie wykonuje zapytanie. Możesz zbadać skonstruowany ciąg, wywołując wywołanie GetSQL
metody po wywołaniu metody Open
.
Składowe danych pola klasy zestawu rekordów są powiązane z kolumnami wybranych danych. Jeśli zostaną zwrócone jakiekolwiek rekordy, pierwszy rekord stanie się bieżącym rekordem.
Jeśli chcesz ustawić opcje zestawu rekordów, takie jak filtr lub sortowanie, ustaw m_strSort
lub m_strFilter
po utworzeniu obiektu zestawu rekordów, ale przed wywołaniem metody Open
. Jeśli chcesz odświeżyć rekordy w zestawie rekordów po otwarciu zestawu rekordów, wywołaj metodę Requery
.
W przypadku wywołania Open
zestawu rekordów typu dynaset lub typu migawki albo jeśli źródło danych odwołuje się do instrukcji SQL lub definicji tabeli reprezentującej dołączoną tabelę, nie można użyć dbOpenTable
argumentu typu; jeśli to zrobisz, MFC zgłasza wyjątek. Aby określić, czy obiekt tabledef reprezentuje dołączoną tabelę , utwórz obiekt CDaoTableDef i wywołaj jego funkcję składową GetConnect .
Użyj flagi dbSeeChanges
, jeśli chcesz wychwytować zmiany wprowadzone przez innego użytkownika lub inny program na maszynie podczas edytowania lub usuwania tego samego rekordu. Jeśli na przykład dwóch użytkowników zacznie edytować ten sam rekord, pierwszy użytkownik, który wywoła funkcję składową Update
, zakończy się powodzeniem. Gdy Update
jest wywoływany przez drugiego użytkownika, CDaoException
element jest zgłaszany. Podobnie, jeśli drugi użytkownik spróbuje wywołać Delete
polecenie , aby usunąć rekord i został już zmieniony przez pierwszego użytkownika, CDaoException
występuje.
Zazwyczaj jeśli użytkownik pobiera to CDaoException
podczas aktualizowania, kod powinien odświeżyć zawartość pól i pobrać nowo zmodyfikowane wartości. Jeśli wyjątek wystąpi w procesie usuwania, kod może wyświetlić nowe dane rekordu użytkownikowi i komunikat wskazujący, że dane zostały ostatnio zmienione. W tym momencie kod może zażądać potwierdzenia, że użytkownik nadal chce usunąć rekord.
Napiwek
Użyj opcji przewijania tylko do przodu (dbForwardOnly
), aby zwiększyć wydajność, gdy aplikacja tworzy pojedynczy zestaw rekordów otwarty ze źródła danych ODBC.
Aby uzyskać powiązane informacje, zobacz temat "OpenRecordset Method" (Metoda OpenRecordset) w pomocy języka DAO.
CDaoRecordset::Requery
Wywołaj tę funkcję składową, aby ponownie skompilować (odświeżyć) zestaw rekordów.
virtual void Requery();
Uwagi
Jeśli zostaną zwrócone jakiekolwiek rekordy, pierwszy rekord stanie się bieżącym rekordem.
Aby zestaw rekordów odzwierciedlał dodane i usunięte przez Ciebie lub innych użytkowników w źródle danych, należy ponownie skompilować zestaw rekordów, wywołując metodę Requery
. Jeśli zestaw rekordów jest zestawem dynamicznym, automatycznie odzwierciedla aktualizacje, które użytkownik lub inni użytkownicy tworzą dla istniejących rekordów (ale nie dodaje). Jeśli zestaw rekordów jest migawką, należy wywołać metodę Requery
, aby odzwierciedlić edycje przez innych użytkowników, a także dodatki i usunięcia.
W przypadku zestawu dynamicznych lub migawki wywołaj Requery
metodę , jeśli chcesz ponownie skompilować zestaw rekordów przy użyciu wartości parametrów. Ustaw nowy filtr lub sortowanie według ustawienia m_strFilter
i m_strSort
przed wywołaniem metody Requery
. Ustaw nowe parametry, przypisując nowe wartości do składowych danych parametrów przed wywołaniem metody Requery
.
Jeśli próba ponownego skompilowania zestawu rekordów zakończy się niepowodzeniem, zestaw rekordów zostanie zamknięty. Przed wywołaniem Requery
metody można określić, czy zestaw rekordów może zostać ponownie zapytany przez wywołanie funkcji składowej CanRestart
. CanRestart
nie gwarantuje, że Requery
to powiedzie się.
Uwaga
Wywołaj połączenie Requery
dopiero po wywołaniu metody Open
.
Uwaga
Wywoływanie Requery
zmian zakładek DAO.
Nie można wywołać Requery
zestawu rekordów typu dynaset ani zestawu rekordów typu migawki, jeśli wywołanie CanRestart
zwraca wartość 0, ani nie można go użyć w zestawie rekordów typu tabeli.
Jeśli po wywołaniu Requery
wywołania nie zostaną zwrócone zarównoIsBOF
, jak i IsEOF
niezerowe, zapytanie nie zwróciło żadnych rekordów, a zestaw rekordów nie będzie zawierać żadnych danych.
Aby uzyskać powiązane informacje, zobacz temat "Requery Method" (Metoda requery) w pomocy języka DAO.
CDaoRecordset::Seek
Wywołaj tę funkcję składową, aby zlokalizować rekord w indeksowanym obiekcie zestawu rekordów typu tabeli spełniającym określone kryteria dla bieżącego indeksu i ustawić ten rekord jako bieżący rekord.
BOOL Seek(
LPCTSTR lpszComparison,
COleVariant* pKey1,
COleVariant* pKey2 = NULL,
COleVariant* pKey3 = NULL);
BOOL Seek(
LPCTSTR lpszComparison,
COleVariant* pKeyArray,
WORD nKeys);
Parametry
lpszComparison
Jedno z następujących wyrażeń ciągu: "<", "<=", "=", "=", ">=" lub ">".
pKey1
Wskaźnik do COleVariant , którego wartość odpowiada pierwszemu polu w indeksie. Wymagany.
pKey2
Wskaźnik do COleVariant
którego wartość odpowiada drugiemu polu w indeksie, jeśli istnieje. Domyślnie ma wartość NULL.
pKey3
Wskaźnik do COleVariant
którego wartość odpowiada trzeciemu polu w indeksie, jeśli istnieje. Domyślnie ma wartość NULL.
pKeyArray
Wskaźnik do tablicy wariantów. Rozmiar tablicy odpowiada liczbie pól w indeksie.
nKeys
Liczba całkowita odpowiadająca rozmiarowi tablicy, czyli liczbie pól w indeksie.
Uwaga
nie określa symboli wieloznacznych w kluczach. Symbole wieloznaczne spowodują Seek
zwrócenie żadnych pasujących rekordów.
Wartość zwracana
Niezerowe, jeśli znaleziono pasujące rekordy, w przeciwnym razie 0.
Uwagi
Użyj drugiej (tablicowej) wersji Seek
, aby obsługiwać indeksy czterech pól lub więcej.
Seek
Umożliwia wyszukiwanie indeksów o wysokiej wydajności w zestawach rekordów typu tabeli. Należy ustawić bieżący indeks przez wywołanie metody przed wywołaniem SetCurrentIndex
metody Seek
. Jeśli indeks zidentyfikuje pole lub pola innego klucza, Seek
zlokalizuj pierwszy rekord spełniający kryteria. Jeśli nie ustawisz indeksu, zostanie zgłoszony wyjątek.
Jeśli nie tworzysz zestawu rekordów UNICODE, COleVariant
obiekty muszą być jawnie zadeklarowane jako ANSI. Można to zrobić przy użyciu COleVariant::COleVariant( lpszSrc , vtSrc ) formularza konstruktora z vtSrc ustawionym na VT_BSTRT
(ANSI) lub za pomocą COleVariant
funkcji SetString( lpszSrc , vtSrc ) z vtSrc ustawionym na VT_BSTRT
wartość .
Podczas wywoływania Seek
metody przekazujesz co najmniej jedną wartość klucza i operator porównania ("<", "<=", "=", "=", ">=" lub ">"). Seek
wyszukuje określone pola klucza i lokalizuje pierwszy rekord spełniający kryteria określone przez lpszComparison i pKey1. Po znalezieniu Seek
funkcja zwraca wartość nonzero i sprawia, że ten rekord jest bieżący. Jeśli Seek
nie można zlokalizować dopasowania, Seek
zwraca zero, a bieżący rekord jest niezdefiniowany. W przypadku bezpośredniego używania obiektu DAO należy jawnie sprawdzić właściwość NoMatch.
Jeśli lpszComparison
ma wartość "=", ">=", lub ">", Seek
zaczyna się od początku indeksu. Jeśli parametr lpszComparison ma wartość "<" lub "<=", rozpoczyna się od końca indeksu i wyszukuje do tyłu, Seek
chyba że na końcu znajdują się zduplikowane wpisy indeksu. W takim przypadku Seek
rozpoczyna się od dowolnego wpisu wśród zduplikowanych wpisów indeksu na końcu indeksu.
W przypadku używania polecenia Seek
nie trzeba używać bieżącego rekordu.
Aby zlokalizować rekord w zestawie rekordów typu dynaset lub snapshot-type, który spełnia określony warunek, użyj operacji Znajdź. Aby uwzględnić wszystkie rekordy, a nie tylko te, które spełniają określony warunek, użyj operacji Przenoszenia, aby przejść z rekordu do rekordu.
Nie można wywołać Seek
dołączonej tabeli dowolnego typu, ponieważ dołączone tabele muszą być otwarte jako zestawy rekordów typu dynaset lub migawki. Jeśli jednak wywołasz metodę CDaoDatabase::Open
, aby bezpośrednio otworzyć zainstalowaną bazę danych ISAM, możesz wywołać wywołanie Seek
tabel w tej bazie danych, chociaż wydajność może być niska.
Aby uzyskać powiązane informacje, zobacz temat "Seek Method" (Metoda wyszukiwania) w pomocy dao.
CDaoRecordset::SetAbsolutePosition
Ustawia względną liczbę rekordów bieżącego rekordu obiektu zestawu rekordów.
void SetAbsolutePosition(long lPosition);
Parametry
lPosition
Odpowiada pozycji porządkowej bieżącego rekordu w zestawie rekordów.
Uwagi
Wywołanie SetAbsolutePosition
umożliwia pozycjonowanie bieżącego wskaźnika rekordu do określonego rekordu na podstawie pozycji porządkowej w zestawie rekordów typu dynaset lub migawki. Możesz również określić bieżący numer rekordu, wywołując polecenie GetAbsolutePosition.
Uwaga
Ta funkcja składowa jest prawidłowa tylko dla zestawów rekordów typu dynaset i snapshot-type.
Wartość właściwości AbsolutePosition bazowego obiektu DAO jest oparta na zera; ustawienie wartości 0 odnosi się do pierwszego rekordu w zestawie rekordów. Ustawienie wartości większej niż liczba wypełnionych rekordów powoduje zgłoszenie wyjątku przez MFC. Liczbę wypełnionych rekordów w zestawie rekordów można określić, wywołując funkcję składową GetRecordCount
.
Jeśli bieżący rekord zostanie usunięty, wartość właściwości AbsolutePosition nie jest zdefiniowana, a MFC zgłasza wyjątek, jeśli jest przywoływał. Nowe rekordy są dodawane na końcu sekwencji.
Uwaga
Ta właściwość nie jest przeznaczona do użycia jako liczba rekordów zastępczych. Zakładki są nadal zalecanym sposobem przechowywania i powrotu do danej pozycji i są jedynym sposobem umieszczania bieżącego rekordu we wszystkich typach obiektów zestawu rekordów, które obsługują zakładki. W szczególności pozycja danego rekordu zmienia się po usunięciu rekordów poprzedzających rekordy. Nie ma również pewności, że dany rekord będzie miał taką samą pozycję bezwzględną, jeśli zestaw rekordów zostanie ponownie utworzony, ponieważ kolejność poszczególnych rekordów w zestawie rekordów nie jest gwarantowana, chyba że zostanie utworzona za pomocą instrukcji SQL przy użyciu klauzuli ORDERBY .
Aby uzyskać powiązane informacje, zobacz temat "AbsolutePosition Property" w Pomocy dao.
CDaoRecordset::SetBookmark
Wywołaj tę funkcję składową, aby umieścić zestaw rekordów w rekordzie zawierającym określoną zakładkę.
void SetBookmark(COleVariant varBookmark);
Parametry
varBookmark
Obiekt COleVariant zawierający wartość zakładki dla określonego rekordu.
Uwagi
Po utworzeniu lub otwarciu obiektu zestawu rekordów każdy z jego rekordów ma już unikatową zakładkę. Zakładkę dla bieżącego rekordu można pobrać, wywołując GetBookmark
i zapisując wartość w COleVariant
obiekcie. Później możesz wrócić do tego rekordu, wywołując SetBookmark
metodę przy użyciu zapisanej wartości zakładki.
Uwaga
Wywoływanie funkcji Ponowne zapytanie zmienia zakładki DAO.
Jeśli nie tworzysz zestawu rekordów UNICODE, COleVariant
obiekt musi być jawnie zadeklarowany jako ANSI. Można to zrobić przy użyciu COleVariant::COleVariant( lpszSrc , vtSrc ) formularza konstruktora z vtSrc ustawionym na VT_BSTRT
(ANSI) lub za pomocą COleVariant
funkcji SetString( lpszSrc , vtSrc ) z vtSrc ustawionym na VT_BSTRT
wartość .
Aby uzyskać powiązane informacje, zobacz tematy "Właściwość zakładki" i właściwość zakładki" w Pomocy dao.
CDaoRecordset::SetCacheSize
Wywołaj tę funkcję składową, aby ustawić liczbę rekordów do buforowania.
void SetCacheSize(long lSize);
Parametry
Rozmiar l
Określa liczbę rekordów. Typowa wartość to 100. Ustawienie 0 wyłącza buforowanie. Ustawienie musi zawierać się w zakresie od 5 do 1200 rekordów. Pamięć podręczna może używać znacznej ilości pamięci.
Uwagi
Pamięć podręczna to miejsce w pamięci lokalnej, która przechowuje dane ostatnio pobrane z serwera, jeśli dane są ponownie żądane podczas działania aplikacji. Buforowanie danych zwiększa wydajność aplikacji pobierającej dane z serwera zdalnego za pośrednictwem obiektów zestawu rekordów typu dynaset. Gdy wymagane są dane, aparat bazy danych Microsoft Jet sprawdza pamięć podręczną dla żądanych danych, zamiast pobierać je z serwera, co zajmuje więcej czasu. Dane, które nie pochodzą ze źródła danych ODBC, nie są zapisywane w pamięci podręcznej.
Każde źródło danych ODBC, takie jak dołączona tabela, może mieć lokalną pamięć podręczną. Aby utworzyć pamięć podręczną, otwórz obiekt zestawu rekordów ze źródła danych zdalnych, wywołaj SetCacheSize
funkcje składowe i SetCacheStart
, a następnie wywołaj FillCache
funkcję składową lub wykonaj kroki przez rekordy przy użyciu jednej z operacji Przenoszenia. Parametr lSize funkcji składowej SetCacheSize
może być oparty na liczbie rekordów, z których aplikacja może pracować jednocześnie. Jeśli na przykład używasz zestawu rekordów jako źródła danych do wyświetlenia na ekranie, możesz przekazać SetCacheSize
parametr lSize jako 20, aby jednocześnie wyświetlić 20 rekordów.
Aby uzyskać powiązane informacje, zobacz temat "CacheSize, CacheStart Properties" w Pomocy dao.
CDaoRecordset::SetCacheStart
Wywołaj tę funkcję składową, aby określić zakładkę pierwszego rekordu w zestawie rekordów do buforowania.
void SetCacheStart(COleVariant varBookmark);
Parametry
varBookmark
COleVariant, który określa zakładkę pierwszego rekordu w zestawie rekordów do buforowania.
Uwagi
Możesz użyć wartości zakładki dowolnego rekordu dla parametru varBookmark funkcji składowej SetCacheStart
. Utwórz rekord, który chcesz uruchomić pamięć podręczną z bieżącym rekordem, ustanów zakładkę dla tego rekordu przy użyciu funkcji SetBookmark i przekaż wartość zakładki jako parametr funkcji składowej SetCacheStart
.
Aparat bazy danych Microsoft Jet żąda rekordów w zakresie pamięci podręcznej z pamięci podręcznej i żąda rekordów spoza zakresu pamięci podręcznej z serwera.
Rekordy pobrane z pamięci podręcznej nie odzwierciedlają zmian wprowadzonych współbieżnie do danych źródłowych przez innych użytkowników.
Aby wymusić aktualizację wszystkich buforowanych danych, przekaż parametr lSize jako SetCacheSize
0, wywołaj SetCacheSize
ponownie rozmiar żądanej pamięci podręcznej, a następnie wywołaj FillCache
funkcję składową.
Jeśli nie tworzysz zestawu rekordów UNICODE, COleVariant
obiekt musi być jawnie zadeklarowany jako ANSI. Można to zrobić przy użyciu COleVariant::COleVariant( lpszSrc , vtSrc ) formularza konstruktora z vtSrc ustawionym na VT_BSTRT
(ANSI) lub za pomocą COleVariant
funkcji SetString( lpszSrc , vtSrc ) z vtSrc ustawionym na VT_BSTRT
wartość .
Aby uzyskać powiązane informacje, zobacz temat CacheSize, CacheStart Properties" w Pomocy dao.
CDaoRecordset::SetCurrentIndex
Wywołaj tę funkcję składową, aby ustawić indeks w zestawie rekordów typu tabeli.
void SetCurrentIndex(LPCTSTR lpszIndex);
Parametry
lpszIndex
Wskaźnik zawierający nazwę indeksu do ustawienia.
Uwagi
Rekordy w tabelach bazowych nie są przechowywane w żadnej określonej kolejności. Ustawienie indeksu zmienia kolejność rekordów zwracanych z bazy danych, ale nie ma wpływu na kolejność przechowywania rekordów. Określony indeks musi być już zdefiniowany. Jeśli spróbujesz użyć obiektu indeksu, który nie istnieje lub jeśli indeks nie jest ustawiony podczas wywoływania funkcji Wyszukiwania, MFC zgłasza wyjątek.
Możesz utworzyć nowy indeks dla tabeli, wywołując metodę CDaoTableDef::CreateIndex i dołączając nowy indeks do kolekcji Indeksy bazowej definicji tabeli, wywołując metodę CDaoTableDef::Append, a następnie ponownie otwierając zestaw rekordów.
Rekordy zwracane z zestawu rekordów typu tabeli mogą być uporządkowane tylko przez indeksy zdefiniowane dla bazowej definicji tabeli. Aby sortować rekordy w innej kolejności, można otworzyć zestaw rekordów typu dynaset lub migawki przy użyciu klauzuli SQL ORDERBY przechowywanej w CDaoRecordset::m_strSort.
Aby uzyskać powiązane informacje, zobacz temat "Indeksuj obiekt" i definicję "bieżący indeks" w Pomocy dao.
CDaoRecordset::SetFieldDirty
Wywołaj tę funkcję składową, aby oznaczyć element członkowski danych pola zestawu rekordów jako zmieniony lub bez zmian.
void SetFieldDirty(
void* pv,
BOOL bDirty = TRUE);
Parametry
Pv
Zawiera adres elementu członkowskiego danych pola w zestawie rekordów lub wartości NULL. Jeśli wartość NULL, wszystkie elementy członkowskie danych pól w zestawie rekordów są oflagowane. (Wartość NULL języka C++ nie jest taka sama jak wartość Null w terminologii bazy danych, co oznacza "brak wartości").
bDirty
Wartość TRUE, jeśli element członkowski danych pola ma być oflagowany jako "brudny" (zmieniony). W przeciwnym razie wartość FALSE, jeśli element członkowski danych pola ma być oflagowany jako "czysty" (bez zmian).
Uwagi
Oznaczanie pól bez zmian gwarantuje, że pole nie zostanie zaktualizowane.
Struktura oznacza zmienione elementy członkowskie danych pól, aby upewnić się, że zostaną zapisane w rekordzie w źródle danych przez mechanizm wymiany pól rekordów DAO (DFX). Zmiana wartości pola zwykle powoduje automatyczne ustawienie pola zanieczyszczonego, dlatego rzadko trzeba wywołać SetFieldDirty
siebie, ale czasami warto upewnić się, że kolumny są jawnie aktualizowane lub wstawione niezależnie od tego, jaka wartość znajduje się w elemencie danych pola. Mechanizm DFX wykorzystuje również użycie PSEUDONULL. Aby uzyskać więcej informacji, zobacz CDaoFieldExchange::m_nOperation.
Jeśli mechanizm podwójnego buforowania nie jest używany, zmiana wartości pola nie powoduje automatycznego ustawienia pola jako zanieczyszczonego. W takim przypadku należy jawnie ustawić pole jako zanieczyszczone. Flaga zawarta w m_bCheckCacheForDirtyFields steruje tym automatycznym sprawdzaniem pól.
Użycie wartości NULL dla pierwszego argumentu funkcji spowoduje zastosowanie funkcji do wszystkich outputColumn
pól, a nie do pól param w pliku CDaoFieldExchange
. Na przykład wywołanie
SetFieldDirty(NULL);
spowoduje ustawienie wartości NULL tylko outputColumn
dla pól; Nie ma to wpływu na pola parametrów .
Aby pracować nad parametrem, należy podać rzeczywisty adres pojedynczego parametru, nad którym chcesz pracować, na przykład:
SetFieldDirty(&m_strParam);
Oznacza to, że nie można ustawić wartości NULL dla wszystkich pól param , ponieważ można je ustawić w outputColumn
polach.
SetFieldDirty
jest implementowany za pomocą programu DoFieldExchange
.
CDaoRecordset::SetFieldNull
Wywołaj tę funkcję składową, aby oznaczyć element członkowski danych pola zestawu rekordów jako null (w szczególności bez wartości) lub jako element inny niż null.
void SetFieldNull(
void* pv,
BOOL bNull = TRUE);
Parametry
Pv
Zawiera adres elementu członkowskiego danych pola w zestawie rekordów lub wartości NULL. Jeśli wartość NULL, wszystkie elementy członkowskie danych pól w zestawie rekordów są oflagowane. (Wartość NULL języka C++ nie jest taka sama jak wartość Null w terminologii bazy danych, co oznacza "brak wartości").
bNull
Niezerowe, jeśli element członkowski danych pola ma być oflagowany jako bez wartości (Null). W przeciwnym razie 0, jeśli element członkowski danych pola ma być oflagowany jako inny niż null.
Uwagi
SetFieldNull
jest używany w przypadku pól powiązanych z mechanizmem DoFieldExchange
.
Po dodaniu nowego rekordu do zestawu rekordów wszystkie elementy członkowskie danych pól są początkowo ustawione na wartość Null i oznaczone jako "brudne" (zmienione). Po pobraniu rekordu ze źródła danych kolumny mają już wartości lub mają wartość Null. Jeśli nie ma potrzeby tworzenia pola o wartości null, zgłaszany jest wyjątek CDaoException .
Jeśli na przykład używasz mechanizmu podwójnego buforowania, jeśli na przykład chcesz wyznaczyć pole bieżącego rekordu jako bez wartości, wywołaj SetFieldNull
metodę bNull ustawioną na wartość TRUE, aby oznaczyć ją jako null. Jeśli pole zostało wcześniej oznaczone jako Null, a teraz chcesz nadać mu wartość, ustaw jej nową wartość. Nie musisz usuwać flagi null za pomocą SetFieldNull
polecenia . Aby określić, czy pole może mieć wartość Null, wywołaj metodę IsFieldNullable.
Jeśli nie używasz mechanizmu podwójnego buforowania, zmiana wartości pola nie powoduje automatycznego ustawienia pola jako zanieczyszczonego i innego niż null. Należy w szczególności ustawić pola zanieczyszczone i inne niż null. Flaga zawarta w m_bCheckCacheForDirtyFields steruje tym automatycznym sprawdzaniem pól.
Mechanizm DFX wykorzystuje użycie PSEUDONULL. Aby uzyskać więcej informacji, zobacz CDaoFieldExchange::m_nOperation.
Użycie wartości NULL dla pierwszego argumentu funkcji spowoduje zastosowanie funkcji tylko do outputColumn
pól, a nie do pól param w pliku CDaoFieldExchange
. Na przykład wywołanie
SetFieldNull(NULL);
spowoduje ustawienie wartości NULL tylko outputColumn
dla pól; Nie ma to wpływu na pola parametrów .
CDaoRecordset::SetFieldValue
Wywołaj tę funkcję składową, aby ustawić wartość pola według pozycji porządkowej lub przez zmianę wartości ciągu.
virtual void SetFieldValue(
LPCTSTR lpszName,
const COleVariant& varValue);
virtual void SetFieldValue(
int nIndex,
const COleVariant& varValue);
void SetFieldValue(
LPCTSTR lpszName,
LPCTSTR lpszValue);
void SetFieldValue(
int nIndex,
LPCTSTR lpszValue);
Parametry
lpszName
Wskaźnik do ciągu zawierającego nazwę pola.
varValue
Odwołanie do obiektu COleVariant zawierającego wartość zawartości pola.
nIndex
Liczba całkowita reprezentująca położenie porządkowe pola w kolekcji Fields zestawu rekordów (zero-based).
lpszValue
Wskaźnik do ciągu zawierającego wartość zawartości pola.
Uwagi
Użyj SetFieldValue
poleceń i GetFieldValue , aby dynamicznie powiązać pola w czasie wykonywania, a nie statycznie wiążące kolumny przy użyciu mechanizmu DoFieldExchange .
Jeśli nie tworzysz zestawu rekordów UNICODE, musisz użyć formularza SetFieldValue
, który nie zawiera parametru COleVariant
lub COleVariant
obiekt musi być jawnie zadeklarowany jako ANSI. Można to zrobić przy użyciu COleVariant::COleVariant( lpszSrc , vtSrc ) formularza konstruktora z vtSrc ustawionym na VT_BSTRT
(ANSI) lub za pomocą COleVariant
funkcji SetString( lpszSrc , vtSrc ) z vtSrc ustawionym na VT_BSTRT
wartość .
Aby uzyskać powiązane informacje, zobacz tematy "Obiekt pola" i "Właściwość wartości" w Pomocy dao.
CDaoRecordset::SetFieldValueNull
Wywołaj tę funkcję składową, aby ustawić pole na wartość Null.
void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);
Parametry
nIndex
Indeks pola w zestawie rekordów dla wyszukiwania według indeksu opartego na zera.
lpszName
Nazwa pola w zestawie rekordów dla wyszukiwania według nazwy.
Uwagi
Wartość NULL języka C++ nie jest taka sama jak null, co w terminologii bazy danych oznacza "brak wartości".
Aby uzyskać powiązane informacje, zobacz tematy "Obiekt pola" i "Właściwość wartości" w Pomocy dao.
CDaoRecordset::SetLockingMode
Wywołaj tę funkcję składową, aby ustawić typ blokowania zestawu rekordów.
void SetLockingMode(BOOL bPessimistic);
Parametry
bPessimistic
Flaga wskazująca typ blokowania.
Uwagi
Gdy pesymistyczne blokowanie jest w mocy, strona 2K zawierająca edytowany rekord jest blokowana natychmiast po wywołaniu funkcji składowej Edit
. Strona jest odblokowana po wywołaniu Update
funkcji lub Close
elementu członkowskiego lub dowolnej operacji Przenieś lub Znajdź.
Gdy obowiązuje optymistyczne blokowanie, strona 2K zawierająca rekord jest zablokowana tylko wtedy, gdy rekord jest aktualizowany za pomocą funkcji składowej Update
.
Jeśli strona jest zablokowana, żaden inny użytkownik nie może edytować rekordów na tej samej stronie. Jeśli wywołasz SetLockingMode
i przekażesz wartość niezerową, a inny użytkownik ma już zablokowaną stronę, podczas wywoływania Edit
metody zostanie zgłoszony wyjątek . Inni użytkownicy mogą odczytywać dane z zablokowanych stron.
Jeśli wywołasz SetLockingMode
metodę z wartością zero, a później wywołasz Update
metodę , gdy strona zostanie zablokowana przez innego użytkownika, wystąpi wyjątek. Aby wyświetlić zmiany wprowadzone w rekordzie przez innego użytkownika (i utracić zmiany), wywołaj SetBookmark
funkcję składową z wartością zakładki bieżącego rekordu.
Podczas pracy ze źródłami danych ODBC tryb blokowania jest zawsze optymistyczny.
CDaoRecordset::SetParamValue
Wywołaj tę funkcję składową, aby ustawić wartość parametru w zestawie rekordów w czasie wykonywania.
virtual void SetParamValue(
int nIndex,
const COleVariant& varValue);
virtual void SetParamValue(
LPCTSTR lpszName,
const COleVariant& varValue);
Parametry
nIndex
Położenie liczbowe parametru w kolekcji Parameters elementu querydef.
var
Wartość do ustawienia; zobacz uwagi.
lpszName
Nazwa parametru, którego wartość ma zostać ustawiona.
Uwagi
Parametr musi już zostać ustanowiony jako część ciągu SQL zestawu rekordów. Dostęp do parametru można uzyskać według nazwy lub jego pozycji indeksu w kolekcji.
Określ wartość, która ma być ustawiona COleVariant
jako obiekt. Aby uzyskać informacje na temat ustawiania żądanej wartości i typu w COleVariant
obiekcie, zobacz klasa COleVariant. Jeśli nie tworzysz zestawu rekordów UNICODE, COleVariant
obiekt musi być jawnie zadeklarowany jako ANSI. Można to zrobić przy użyciu COleVariant::COleVariant( lpszSrc , vtSrc ) formularza konstruktora z vtSrc ustawionym na VT_BSTRT
(ANSI) lub za pomocą COleVariant
funkcji SetString( lpszSrc , vtSrc ) z vtSrc ustawionym na VT_BSTRT
wartość .
CDaoRecordset::SetParamValueNull
Wywołaj tę funkcję składową, aby ustawić parametr na wartość Null.
void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);
Parametry
nIndex
Indeks pola w zestawie rekordów dla wyszukiwania według indeksu opartego na zera.
lpszName
Nazwa pola w zestawie rekordów dla wyszukiwania według nazwy.
Uwagi
Wartość NULL języka C++ nie jest taka sama jak null, co w terminologii bazy danych oznacza "brak wartości".
CDaoRecordset::SetPercentPosition
Wywołaj tę funkcję składową, aby ustawić wartość, która zmienia przybliżoną lokalizację bieżącego rekordu w obiekcie zestawu rekordów na podstawie procentu rekordów w zestawie rekordów.
void SetPercentPosition(float fPosition);
Parametry
fPosition
Liczba z zakresu od 0 do 100.
Uwagi
Podczas pracy z zestawem rekordów typu dynaset lub snapshot-type najpierw wypełnij zestaw rekordów, przechodząc do ostatniego rekordu przed wywołaniem metody SetPercentPosition
. Jeśli wywołasz SetPercentPosition
metodę przed pełnym wypełnieniem zestawu rekordów, ilość ruchu jest względna względem liczby rekordów, do których uzyskuje się dostęp, zgodnie z wartością GetRecordCount. Możesz przejść do ostatniego rekordu, wywołując polecenie MoveLast
.
Po wywołaniu SetPercentPosition
rekordu w przybliżonej pozycji odpowiadającej tej wartości stanie się bieżący.
Uwaga
Wywoływanie przenoszenia SetPercentPosition
bieżącego rekordu do określonego rekordu w zestawie rekordów nie jest zalecane. Zamiast tego wywołaj funkcję składową SetBookmark .
Aby uzyskać powiązane informacje, zobacz temat "PercentPosition Property" w Pomocy dao.
CDaoRecordset::Update
Wywołaj tę funkcję składową po wywołaniu funkcji lub Edit
składowejAddNew
.
virtual void Update();
Uwagi
To wywołanie jest wymagane do ukończenia AddNew
operacji lub Edit
.
Zarówno, AddNew
jak i Edit
przygotuj bufor edycji, w którym dodawane lub edytowane dane są umieszczane do zapisywania w źródle danych. Update
zapisuje dane. Tylko te pola oznaczone lub wykryte jako zmienione są aktualizowane.
Jeśli źródło danych obsługuje transakcje, możesz wykonać Update
wywołanie (i jego odpowiadające AddNew
lub Edit
wywołanie) transakcji.
Uwaga
Jeśli wywołasz połączenie bez wcześniejszego wywołania Update
AddNew
metody lub Edit
, Update
zgłasza błąd CDaoException
. Jeśli wywołasz metodę AddNew
lub Edit
, przed Update
wywołaniem polecenia MoveNext lub zamknij zestaw rekordów lub połączenie ze źródłem danych. W przeciwnym razie zmiany zostaną utracone bez powiadomienia.
Gdy obiekt zestawu rekordów jest pesymistycznie zablokowany w środowisku wieloużytkownika, rekord pozostaje zablokowany od czasu Edit
jest używany do momentu ukończenia aktualizacji. Jeśli zestaw rekordów jest optymistycznie zablokowany, rekord jest zablokowany i porównywany ze wstępnie edytowanym rekordem tuż przed zaktualizowaniem w bazie danych. Jeśli rekord został zmieniony od wywołania Edit
, Update
operacja zakończy się niepowodzeniem, a MFC zgłosi wyjątek. Możesz zmienić tryb blokowania za pomocą SetLockingMode
polecenia .
Uwaga
Optymistyczne blokowanie jest zawsze używane w zewnętrznych formatach bazy danych, takich jak ODBC i instalowany program ISAM.
Aby uzyskać powiązane informacje, zobacz tematy "AddNew Method", "CancelUpdate Method", "Delete Method", "LastModified Property", "Update Method" i "EditMode Property" w Pomocy dao.
Zobacz też
Klasa CObject
Wykres hierarchii
Klasa CDaoTableDef
Klasa CDaoWorkspace
Klasa CDaoDatabase
Klasa CDaoQueryDef