Udostępnij za pośrednictwem


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 CDaoRecordsettabeli .
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 CDaoRecordsetklasy . 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.

CDaoRecordsetuż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

Obiekt CObject

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 Updatemetody , 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ą dbForwardOnlypolecenia , 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 Deletemetody ; 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 Deleteelementu 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 Editwywoł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ć DoFieldExchangeelementu .

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 Editmetodę , 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 Updatemetody , 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ą SetLockingModepolecenia .

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ć Editmetodę , 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, FindNexti 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 FindLastaparatu 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 CDaoRecordsetklasy , 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, atrybuty

  • AFX_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łowa

  • AFX_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 .

GetFieldValueDoFieldExchange 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, pola

  • AFX_DAO_SECONDARY_INFO Podstawowe informacje oraz: Primary, Unique, Clustered, IgnoreNulls, Required, Foreign

  • AFX_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 Openelementu , 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 tabeli

  • dbOpenDynaset Zestaw rekordów typu Dynaset

  • dbOpenSnapshot 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 Openmetody , 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 MovePrevmetodę , IsBOF następnie zwróci wartość nonzero. Jeśli IsBOF zwraca wartość niezerową i wywołujesz MovePrevwyją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 metody MoveFirst. W związku z tym wywołanie Open pustego zestawu rekordów powoduje IsBOF i IsEOF zwrócenie wartości niezerowej. (Zobacz poniższą tabelę, aby zapoznać się z zachowaniem błędu MoveFirst lub MoveLast wywołania).

  • Wszystkie operacje przenoszenia, które pomyślnie lokalizują rekord, powodują zwrócenie wartości IsBOF 0.IsEOF

  • Wywołanie AddNew , po którym Update następuje wywołanie, które pomyślnie wstawia nowy rekord, spowoduje IsBOF zwrócenie wartości 0, ale tylko wtedy, gdy IsEOF jest już niezerowa. Stan wartości IsEOF 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ści IsBOF ani IsEOF.

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 Openmetody , 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 MoveNextmetody , IsEOF funkcja zwróci wartość nonzero. Jeśli IsEOF zwraca wartość niezerową i wywołujesz MoveNextwyją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 metody MoveFirst. W związku z tym wywołanie Open pustego zestawu rekordów powoduje IsBOF i IsEOF 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órym Update następuje wywołanie, które pomyślnie wstawia nowy rekord, spowoduje IsBOF zwrócenie wartości 0, ale tylko wtedy, gdy IsEOF jest już niezerowa. Stan wartości IsEOF 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ści IsBOF ani IsEOF.

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 CDaoRecordsetelementu , 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 Updatemetody , 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_pDatabasepliku . 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 MoveNextelementu i Move( -1 ) jest odpowiednikiem MovePrevelementu .

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 Requerywywoł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 CDaoExceptionbłą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 MoveFirstfunkcję , MoveLast, MoveNextlub 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 Requerywywoł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 Requerywywoł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 Requerywywoł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 Requerywywoł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 Openmetody 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 otwiera CDaoDatabase 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 otwiera CDaoDatabase obiekt i utrzymuje go otwarty tak długo, jak zestaw rekordów jest otwarty. Po wywołaniu Close zestawu rekordów CDaoDatabase 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 Openklasy ; w tym przypadku Open wywołuje GetDefaultSQLfunkcję 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 Requerymetody 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 Requerywywoł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_BSTRTwartość .

Podczas wywoływania Seekmetody 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 Seeknie 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_BSTRTwartość .

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_BSTRTwartość .

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.

Uwaga

Wywołaj tę funkcję składową dopiero po wywołaniu polecenia Edytuj lub DodajNowy.

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ą SetFieldNullpolecenia . 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.

Uwaga

Wywołaj tę funkcję składową dopiero po wywołaniu polecenia Edytuj lub DodajNowy.

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_BSTRTwartość .

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 Editmetody 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_BSTRTwartość .

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 SetPercentPositionrekordu 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ą SetLockingModepolecenia .

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