Sdílet prostřednictvím


CDaoRecordset – třída

Představuje sadu záznamů vybraných ze zdroje dat.

Syntaxe

class CDaoRecordset : public CObject

Členové

Veřejné konstruktory

Název Popis
CDaoRecordset::CDaoRecordset CDaoRecordset Vytvoří objekt.

Veřejné metody

Název Popis
CDaoRecordset::AddNew Připraví se na přidání nového záznamu. Přidání dokončíte voláním aktualizace .
CDaoRecordset::CanAppend Vrátí nenulové hodnoty, pokud je možné nové záznamy přidat do sady záznamů prostřednictvím členské funkce AddNew .
CDaoRecordset::CanBookmark Vrátí nenulové hodnoty, pokud sada záznamů podporuje záložky.
CDaoRecordset::CancelUpdate Zruší všechny čekající aktualizace z důvodu operace Upravit nebo AddNew .
CDaoRecordset::CanRestart Vrátí nenulovou hodnotu, pokud je možné volat příkaz Requery , aby se dotaz sady záznamů spustil znovu.
CDaoRecordset::CanScroll Vrátí nenulové hodnoty, pokud můžete procházet záznamy.
CDaoRecordset::CanTransact Vrátí nenulové, pokud zdroj dat podporuje transakce.
CDaoRecordset::CanUpdate Vrátí nenulové hodnoty, pokud lze sadu záznamů aktualizovat (můžete přidat, aktualizovat nebo odstranit záznamy).
CDaoRecordset::Close Zavře sadu záznamů.
CDaoRecordset::D elete Odstraní aktuální záznam ze sady záznamů. Po odstranění se musíte explicitně posunout na jiný záznam.
CDaoRecordset::D oFieldExchange Volá se k výměně dat (v obou směrech) mezi datovými členy pole sady záznamů a odpovídajícím záznamem ve zdroji dat. Implementuje výměnu polí záznamu DAO (DFX).
CDaoRecordset::Edit Připraví se na změny aktuálního záznamu. Volání Update pro dokončení úprav
CDaoRecordset::FillCache Vyplní všechny objekty sady záznamů obsahující data ze zdroje dat ODBC nebo jeho část místní mezipaměti.
CDaoRecordset::Find Vyhledá první, další, předchozí nebo poslední umístění konkrétního řetězce v sadě záznamů typu dynaset, která splňuje zadaná kritéria, a provede záznam aktuálním záznamem.
CDaoRecordset::FindFirst Vyhledá první záznam v sadě záznamů typu dynaset nebo snímku, který splňuje zadaná kritéria, a vytvoří záznam jako aktuální.
CDaoRecordset::FindLast Vyhledá poslední záznam v sadě záznamů typu dynaset nebo snímku, který splňuje zadaná kritéria, a vytvoří tento záznam jako aktuální záznam.
CDaoRecordset::FindNext Vyhledá další záznam v sadě záznamů typu dynaset nebo snímku, který splňuje zadaná kritéria, a vytvoří záznam jako aktuální.
CDaoRecordset::FindPrev Vyhledá předchozí záznam v sadě záznamů typu dynaset nebo snímku, který splňuje zadaná kritéria, a vytvoří záznam jako aktuální záznam.
CDaoRecordset::GetAbsolutePosition Vrátí číslo záznamu aktuálního záznamu objektu sady záznamů.
CDaoRecordset::GetBookmark Vrátí hodnotu, která představuje záložku záznamu.
CDaoRecordset::GetCacheSize Vrátí hodnotu, která určuje počet záznamů v sadě záznamů typu dynaset obsahující data, která se mají místně ukládat do mezipaměti ze zdroje dat ODBC.
CDaoRecordset::GetCacheStart Vrátí hodnotu, která určuje záložku prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.
CDaoRecordset::GetCurrentIndex CString Vrátí název indexu, který byl naposledy použit pro indexovaný typ CDaoRecordsettabulky .
CDaoRecordset::GetDateCreated Vrátí datum a čas vytvoření základní tabulky, která je základem objektu CDaoRecordset .
CDaoRecordset::GetDateLastUpdated Vrátí datum a čas poslední změny provedené v návrhu základní tabulky podkladové objektu CDaoRecordset .
CDaoRecordset::GetDefaultDBName Vrátí název výchozího zdroje dat.
CDaoRecordset::GetDefaultSQL Volá se k získání výchozího řetězce SQL, který se má spustit.
CDaoRecordset::GetEditMode Vrátí hodnotu, která označuje stav úprav aktuálního záznamu.
CDaoRecordset::GetFieldCount Vrátí hodnotu, která představuje počet polí v sadě záznamů.
CDaoRecordset::GetFieldInfo Vrátí konkrétní typy informací o polích v sadě záznamů.
CDaoRecordset::GetFieldValue Vrátí hodnotu pole v sadě záznamů.
CDaoRecordset::GetIndexCount Načte počet indexů v tabulce podkladové sadě záznamů.
CDaoRecordset::GetIndexInfo Vrátí různé druhy informací o indexu.
CDaoRecordset::GetLastModifiedBookmark Slouží k určení naposledy přidaného nebo aktualizovaného záznamu.
CDaoRecordset::GetLockingMode Vrátí hodnotu, která označuje typ uzamčení, který se projeví během úprav.
CDaoRecordset::GetName CString Vrátí název sady záznamů.
CDaoRecordset::GetParamValue Načte aktuální hodnotu zadaného parametru uloženého v podkladovém objektu DAOParameter.
CDaoRecordset::GetPercentPosition Vrátí pozici aktuálního záznamu jako procento celkového počtu záznamů.
CDaoRecordset::GetRecordCount Vrátí počet záznamů, ke které se přistupuje v objektu sady záznamů.
CDaoRecordset::GetSQL Získá řetězec SQL použitý k výběru záznamů pro sadu záznamů.
CDaoRecordset::GetType Volá se k určení typu sady záznamů: table-type, dynaset-type nebo snapshot-type.
CDaoRecordset::GetValidationRule CString Vrátí hodnotu obsahující hodnotu, která ověřuje data zadaná do pole.
CDaoRecordset::GetValidationText Načte text, který se zobrazí, když ověřovací pravidlo není splněné.
CDaoRecordset::IsBOF Vrátí nenulové hodnoty, pokud byla sada záznamů umístěna před prvním záznamem. Neexistuje žádný aktuální záznam.
CDaoRecordset::IsDeleted Vrátí nenulovou hodnotu, pokud je sada záznamů umístěna na odstraněný záznam.
CDaoRecordset::IsEOF Vrátí nenulové hodnoty, pokud byla sada záznamů umístěna za posledním záznamem. Neexistuje žádný aktuální záznam.
CDaoRecordset::IsFieldDirty Vrátí nenulové, pokud bylo změněno zadané pole v aktuálním záznamu.
CDaoRecordset::IsFieldNull Vrátí nenulové, pokud zadané pole v aktuálním záznamu má hodnotu Null (bez hodnoty).
CDaoRecordset::IsFieldNullable Vrátí nenulové, pokud zadané pole v aktuálním záznamu lze nastavit na Hodnotu Null (bez hodnoty).
CDaoRecordset::IsOpen Vrátí nenulovou hodnotu, pokud byl open volána dříve.
CDaoRecordset::Move Umístí sadu záznamů do zadaného počtu záznamů z aktuálního záznamu v libovolném směru.
CDaoRecordset::MoveFirst Umístí aktuální záznam na první záznam v sadě záznamů.
CDaoRecordset::MoveLast Umístí aktuální záznam na poslední záznam v sadě záznamů.
CDaoRecordset::MoveNext Umístí aktuální záznam na další záznam v sadě záznamů .
CDaoRecordset::MovePrev Umístí aktuální záznam na předchozí záznam v sadě záznamů.
CDaoRecordset::Open Vytvoří novou sadu záznamů z tabulky, dynasetu nebo snímku.
CDaoRecordset::Requery Spustí dotaz sady záznamů znovu a aktualizuje vybrané záznamy.
CDaoRecordset::Seek Vyhledá záznam v objektu sady záznamů indexovaného typu tabulky, který splňuje zadaná kritéria pro aktuální index, a vytvoří záznam jako aktuální záznam.
CDaoRecordset::SetAbsolutePosition Nastaví počet záznamů aktuálního záznamu objektu sady záznamů.
CDaoRecordset::SetBookmark Umístí sadu záznamů na záznam obsahující zadanou záložku.
CDaoRecordset::SetCacheSize Nastaví hodnotu, která určuje počet záznamů v sadě záznamů dynaset-type obsahující data, která se mají místně ukládat do mezipaměti ze zdroje dat ODBC.
CDaoRecordset::SetCacheStart Nastaví hodnotu, která určuje záložku prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.
CDaoRecordset::SetCurrentIndex Volá se k nastavení indexu v sadě záznamů typu tabulky.
CDaoRecordset::SetFieldDirty Označí zadané pole v aktuálním záznamu jako změněné.
CDaoRecordset::SetFieldNull Nastaví hodnotu zadaného pole v aktuálním záznamu na hodnotu Null (bez hodnoty).
CDaoRecordset::SetFieldValue Nastaví hodnotu pole v sadě záznamů.
CDaoRecordset::SetFieldValueNull Nastaví hodnotu pole v sadě záznamů na hodnotu Null. (bez hodnoty).
CDaoRecordset::SetLockingMode Nastaví hodnotu, která označuje typ uzamčení, který se má během úprav projevit.
CDaoRecordset::SetParamValue Nastaví aktuální hodnotu zadaného parametru uloženého v podkladovém objektu DAOParameter.
CDaoRecordset::SetParamValueNull Nastaví aktuální hodnotu zadaného parametru na Hodnotu Null (bez hodnoty).
CDaoRecordset::SetPercentPosition Nastaví pozici aktuálního záznamu na umístění odpovídající procentu celkového počtu záznamů v sadě záznamů.
CDaoRecordset::Update AddNew Dokončí operaci Edit uložením nových nebo upravených dat do zdroje dat.

Veřejné datové členy

Název Popis
CDaoRecordset::m_bCheckCacheForDirtyFields Obsahuje příznak označující, jestli se pole automaticky označí jako změněná.
CDaoRecordset::m_nFields Obsahuje počet datových členů pole ve třídě sady záznamů a počet sloupců vybraných sadou záznamů ze zdroje dat.
CDaoRecordset::m_nParams Obsahuje počet členů dat parametrů ve třídě sady záznamů – počet parametrů předaných dotazem sady záznamů.
CDaoRecordset::m_pDAORecordset Ukazatel na rozhraní DAO podkladového objektu sady záznamů.
CDaoRecordset::m_pDatabase Zdrojová databáze pro tuto sadu výsledků. Obsahuje ukazatel na objekt CDaoDatabase .
CDaoRecordset::m_strFilter Obsahuje řetězec použitý k vytvoření příkazu SQL WHERE .
CDaoRecordset::m_strSort Obsahuje řetězec použitý k vytvoření příkazu SQL ORDER BY .

Poznámky

Objekty označované jako "sady záznamů" CDaoRecordset jsou k dispozici v následujících třech formách:

  • Sady záznamů typu tabulky představují základní tabulku, pomocí které můžete zkoumat, přidávat, měnit nebo odstraňovat záznamy z jedné databázové tabulky.

  • Sady záznamů typu Dynaset jsou výsledkem dotazu, který může obsahovat aktualizovatelné záznamy. Tyto sady záznamů jsou sada záznamů, které můžete použít k prozkoumání, přidávání, změnám nebo odstraňování záznamů z podkladové databázové tabulky nebo tabulek. Sady záznamů typu Dynaset mohou obsahovat pole z jedné nebo více tabulek v databázi.

  • Sady záznamů typu snímku jsou statickou kopií sady záznamů, které můžete použít k vyhledání dat nebo generování sestav. Tyto sady záznamů mohou obsahovat pole z jedné nebo více tabulek v databázi, ale nelze je aktualizovat.

Každá forma sady záznamů představuje sadu záznamů opravených při otevření sady záznamů. Když se posunete na záznam v sadě záznamů typu tabulky nebo v sadě záznamů typu dynaset, projeví se změny provedené v záznamu po otevření sady záznamů, a to buď jinými uživateli, nebo jinými sadami záznamů ve vaší aplikaci. (Sadu záznamů typu snímku nelze aktualizovat.) Můžete použít CDaoRecordset přímo nebo odvození třídy sady záznamů specifické pro aplikaci z CDaoRecordset. Pak můžete:

  • Procházejte záznamy.

  • Nastavte index a rychle vyhledejte záznamy pomocí funkce Hledání (pouze sady záznamů typu tabulky).

  • Vyhledání záznamů na základě porovnání řetězců: "", "<<=", "=", ">=" nebo ">" (sady záznamů dynaset-type a snapshot-type).

  • Aktualizujte záznamy a zadejte režim uzamčení (kromě sad záznamů typu snímku).

  • Vyfiltrujte sadu záznamů tak, aby omezila, které záznamy vybere z těch dostupných ve zdroji dat.

  • Seřaďte sadu záznamů.

  • Parametrizovat sadu záznamů tak, aby přizpůsobila svůj výběr s informacemi, které nejsou známé do doby běhu.

Třída CDaoRecordset poskytuje rozhraní podobné rozhraní třídy CRecordset. Hlavním rozdílem je, že třída CDaoRecordset přistupuje k datům prostřednictvím objektu DAO (Data Access Object) na základě OLE. Třída CRecordset přistupuje k DBMS prostřednictvím rozhraní ODBC (Open Database Connectivity) a ovladače ODBC pro danou databázi DBMS.

Poznámka:

Databázové třídy DAO se liší od databázových tříd MFC založených na rozhraní ODBC (Open Database Connectivity). Všechny názvy databázových tříd DAO mají předponu CDao. Stále máte přístup ke zdrojům dat ODBC pomocí tříd DAO; třídy DAO obecně nabízejí vynikající funkce, protože jsou specifické pro databázový stroj Microsoft Jet.

Můžete použít CDaoRecordset buď přímo, nebo odvodit třídu z CDaoRecordset. Chcete-li v obou případech použít třídu sady záznamů, otevřete databázi a vytvořte objekt sady záznamů a předejte konstruktor ukazatel na objekt CDaoDatabase . Můžete také vytvořit CDaoRecordset objekt a nechat MFC vytvořit dočasný CDaoDatabase objekt za vás. Potom volejte členskou funkci sady záznamů Open a určete, zda je objekt sada záznamů typu tabulka, sada záznamů typu dynaset nebo sada záznamů typu snímku. Volání Open vybere data z databáze a načte první záznam.

Pomocí členských funkcí a datových členů objektu můžete procházet záznamy a pracovat s nimi. Dostupné operace závisí na tom, jestli je objekt sada záznamů typu tabulky, sada záznamů typu dynaset nebo sada záznamů typu snímku a jestli je aktualizovatelná nebo jen pro čtení – závisí to na schopnosti databáze nebo zdroje dat ODBC (Open Database Connectivity). Chcete-li aktualizovat záznamy, které mohly být změněny nebo přidány od Open volání, zavolejte členskou funkci Requery objektu. Volání členské funkce objektu Close a zničení objektu po dokončení.

CDaoRecordset používá výměnu polí záznamu DAO (DFX) k podpoře čtení a aktualizace polí záznamů prostřednictvím typů bezpečných členů C++ vaší CDaoRecordset nebo CDaoRecordset-odvozené třídy. Dynamické vazby sloupců v databázi můžete také implementovat bez použití mechanismu DFX pomocí GetFieldValue a SetFieldValue.

Související informace najdete v tématu "Objekt sady záznamů" v nápovědě k dao.

Hierarchie dědičnosti

Objekt CObject

CDaoRecordset

Požadavky

Hlavička: afxdao.h

CDaoRecordset::AddNew

Voláním této členské funkce přidáte nový záznam do sady záznamů typu tabulky nebo dynaset.

virtual void AddNew();

Poznámky

Pole záznamu jsou zpočátku null. (V terminologii databáze hodnota Null znamená "bez hodnoty" a není stejná jako hodnota NULL v jazyce C++.) K dokončení operace je nutné volat funkci update člena. Update uloží změny ve zdroji dat.

Upozornění

Pokud upravíte záznam a pak se posunete na jiný záznam bez volání Update, vaše změny se ztratí bez upozornění.

Pokud přidáte záznam do sady záznamů typu dynaset voláním AddNew, záznam se zobrazí v sadě záznamů a zahrne se do podkladové tabulky, kde se stane viditelný pro všechny nové CDaoRecordset objekty.

Pozice nového záznamu závisí na typu sady záznamů:

  • V sadě záznamů typu dynaset není zaručeno vložení nového záznamu. Toto chování se změnilo s Microsoft Jet 3.0 z důvodů výkonu a souběžnosti. Pokud vaším cílem je nastavit nově přidaný záznam jako aktuální záznam, získejte záložku posledního upraveného záznamu a přejděte na tuto záložku:
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • V sadě záznamů typu tabulky, pro kterou byl zadán index, se záznamy vrátí na správném místě v pořadí řazení. Pokud nebyl zadán žádný index, vrátí se na konci sady záznamů nové záznamy.

Záznam, který byl aktuální před tím, než jste použili AddNew , zůstane aktuální. Pokud chcete nový záznam nastavit jako aktuální a sada záznamů podporuje záložky, zavolejte SetBookmark záložky identifikované nastavením LastModified vlastnost podkladové objekt sady záznamů DAO. To je užitečné při určování hodnoty polí čítače (automatického přírůstku) v přidaném záznamu. Další informace naleznete v tématu GetLastModifiedBookmark.

Pokud databáze podporuje transakce, můžete provést volání AddNew část transakce. Další informace o transakcích naleznete ve třídě CDaoWorkspace. Všimněte si, že byste měli volat CDaoWorkspace::BeginTrans před voláním AddNew.

Není možné volat AddNew sadu záznamů, jejíž členová funkce Open nebyla volána. Vyvolá CDaoException se, pokud voláte AddNew sadu záznamů, která se nedá připojit. Pokud voláte CanAppend, můžete určit, jestli je sada záznamů aktualizovatelná.

Architektura označuje změněné datové členy polí, aby se zajistilo, že budou zapsány do záznamu ve zdroji dat mechanismem výměny polí záznamu DAO (DFX). Když změníte hodnotu pole, obvykle se pole automaticky zašpiní, takže budete muset jen zřídka volat SetFieldDirty sami, ale někdy můžete chtít zajistit, aby se sloupce explicitně aktualizovaly nebo vložili bez ohledu na hodnotu datového člena pole. Mechanismus DFX také využívá použití PSEUDO NULL. Další informace naleznete v tématu CDaoFieldExchange::m_nOperation.

Pokud se nepoužívá mechanismus ukládání do vyrovnávací paměti, změna hodnoty pole automaticky nenastaví jako nezašpiněné. V tomto případě bude nutné explicitně nastavit pole s špinavou. Příznak obsažený v m_bCheckCacheForDirtyFields řídí tuto automatickou kontrolu polí.

Poznámka:

Pokud jsou záznamy ve vyrovnávací paměti (to znamená, že je povolena automatická kontrola polí), volání CancelUpdate obnoví členské proměnné na hodnoty, které předtím měly AddNew nebo Edit byly volány.

Související informace naleznete v tématech AddNew Method, CancelUpdate Method, LastModified Property a EditMode Property v nápovědě daO.

CDaoRecordset::CanAppend

Voláním této členské funkce určíte, jestli dříve otevřená sada záznamů umožňuje přidat nové záznamy voláním členské funkce AddNew .

BOOL CanAppend() const;

Návratová hodnota

Nenulové, pokud sada záznamů umožňuje přidávat nové záznamy; jinak 0. CanAppend vrátí hodnotu 0, pokud jste otevřeli sadu záznamů jen pro čtení.

Poznámky

Související informace najdete v tématu "Metoda připojení" v nápovědě k rozhraní DAO.

CDaoRecordset::CanBookmark

Voláním této členské funkce určíte, jestli dříve otevřená sada záznamů umožňuje jednotlivě označit záznamy pomocí záložek.

BOOL CanBookmark();

Návratová hodnota

Nenulové, pokud sada záznamů podporuje záložky, jinak 0.

Poznámky

Pokud používáte sady záznamů založené výhradně na tabulkách databázového stroje Microsoft Jet, lze záložky použít s výjimkou sad záznamů typu snímku označených jako sady záznamů pouze vpřed. Jiné databázové produkty (externí zdroje dat ODBC) nemusí podporovat záložky.

Související informace najdete v tématu "Vlastnost záložka" v nápovědě dao.

CDaoRecordset::CancelUpdate

Členová CancelUpdate funkce zruší všechny čekající aktualizace z důvodu operace Upravit nebo AddNew .

virtual void CancelUpdate();

Poznámky

Pokud například aplikace volá Edit funkci nebo AddNew člena a nevolala aktualizaci, CancelUpdate zruší všechny změny provedené po Edit volání nebo AddNew byly volány.

Poznámka:

Pokud jsou záznamy ve vyrovnávací paměti (to znamená, že je povolena automatická kontrola polí), volání CancelUpdate obnoví členské proměnné na hodnoty, které předtím měly AddNew nebo Edit byly volány.

Pokud neexistuje žádná Edit operace nebo AddNew operace čeká na vyřízení, CancelUpdate způsobí mfc vyvolání výjimky. Volání GetEditMode členské funkce určit, zda existuje čekající operace, kterou lze zrušit.

Související informace najdete v tématu CancelUpdate – metoda v nápovědě k dao.

CDaoRecordset::CanRestart

Voláním této členské funkce určíte, jestli sada záznamů umožňuje restartovat svůj dotaz (aktualizovat jeho záznamy) voláním Requery členské funkce.

BOOL CanRestart();

Návratová hodnota

Nenulové, pokud Requery je možné volat, aby se dotaz sady záznamů spustil znovu, jinak 0.

Poznámky

Sady záznamů typu tabulky nepodporují Requery.

Pokud Requery není podporováno, zavolejte Zavřít, aby se data aktualizovala. Po změně hodnot parametrů můžete volat Requery aktualizaci základního parametrového dotazu objektu sady záznamů.

Související informace najdete v tématu Restartovatelná vlastnost v nápovědě k DAO.

CDaoRecordset::CanScroll

Voláním této členské funkce určíte, jestli sada záznamů umožňuje posouvání.

BOOL CanScroll() const;

Návratová hodnota

Nenulové, pokud můžete procházet záznamy, jinak 0.

Poznámky

Pokud zavoláte Otevřít v dbForwardOnlyaplikaci , sada záznamů se může posunout dopředu.

Související informace najdete v tématu Umístění ukazatele aktuálního záznamu pomocí dao v nápovědě k dao.

CDaoRecordset::CanTransact

Voláním této členské funkce určíte, zda sada záznamů umožňuje transakce.

BOOL CanTransact();

Návratová hodnota

Nenulové, pokud podkladový zdroj dat podporuje transakce, jinak 0.

Poznámky

Související informace naleznete v tématu "Transactions Property" (Vlastnost transakcí) v nápovědě k dao.

CDaoRecordset::CanUpdate

Voláním této členské funkce určíte, zda lze sadu záznamů aktualizovat.

BOOL CanUpdate() const;

Návratová hodnota

Nenulové, pokud lze sadu záznamů aktualizovat (přidat, aktualizovat a odstranit záznamy), jinak 0.

Poznámky

Sada záznamů může být jen pro čtení, pokud je podkladový zdroj dat jen pro čtení nebo pokud jste zadali dbReadOnly pro nOptions při zavolání Otevřít pro sadu záznamů.

Související informace najdete v tématech AddNew Method, Edit Method, Delete Method, Update Method a Updatable Property v nápovědě DAO.

CDaoRecordset::CDaoRecordset

CDaoRecordset Vytvoří objekt.

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

Parametry

pDatabase
Obsahuje ukazatel na objekt CDaoDatabase nebo hodnotu NULL. Pokud není null a CDaoDatabase členská Open funkce objektu nebyla volána pro připojení ke zdroji dat, sada záznamů se pokusí otevřít pro vás během vlastního volání Open . Pokud předáte hodnotu NULL, CDaoDatabase objekt je vytvořen a připojen pomocí informací o zdroji dat, které jste zadali, pokud jste odvozeni třídu sady záznamů z CDaoRecordset.

Poznámky

Můžete buď použít CDaoRecordset přímo nebo odvodit třídu specifickou pro aplikaci z CDaoRecordset. Třídy ClassWizard můžete použít k odvození tříd sady záznamů.

Poznámka:

Pokud odvozujete CDaoRecordset třídu, musí odvozená třída zadat vlastní konstruktor. V konstruktoru odvozené třídy zavolejte konstruktor CDaoRecordset::CDaoRecordset, předat příslušné parametry spolu s ním.

Předejte hodnotu NULL konstruktoru sady záznamů, aby byl CDaoDatabase objekt vytvořen a připojen automaticky. Toto je užitečná zkratka, která nevyžaduje vytvoření a připojení objektu CDaoDatabase před vytvořením sady záznamů. CDaoDatabase Pokud objekt není otevřený, vytvoří se pro vás také objekt CDaoWorkspace, který používá výchozí pracovní prostor. Další informace naleznete v tématu CDaoDatabase::CDaoDatabase.

CDaoRecordset::Close

Zavření objektu CDaoRecordset odebere z kolekce otevřených sad záznamů v přidružené databázi.

virtual void Close();

Poznámky

Protože Close objekt nezničíte CDaoRecordset , můžete objekt znovu použít voláním Open stejného zdroje dat nebo jiného zdroje dat.

Všechny čekající příkazy AddNew nebo Edit jsou zrušeny a všechny čekající transakce se vrátí zpět. Pokud chcete zachovat nevyřízené dodatky nebo úpravy, zavolejte před voláním Close pro každou sadu záznamů aktualizaci.

Po volání můžete volat Open Closeznovu . To vám umožní znovu použít objekt sady záznamů. Lepší alternativou je volání Requery, pokud je to možné.

Související informace najdete v tématu "Zavřít metodu" v nápovědě k DAO.

CDaoRecordset::D elete

Voláním této členské funkce odstraníte aktuální záznam v otevřeném objektu sady záznamů typu dynaset nebo objektu sady záznamů typu tabulka.

virtual void Delete();

Poznámky

Po úspěšném odstranění jsou datové členy sady záznamů nastaveny na hodnotu Null a pokud chcete přesunout odstraněný záznam, musíte explicitně volat jednu z členských funkcí sady záznamů ( Move, Seek, SetBookmark atd.). Při odstraňování záznamů ze sady záznamů musí být před voláním Deleteaktuální záznam v sadě záznamů . V opačném případě mfc vyvolá výjimku.

Delete odebere aktuální záznam a znepřístupní ho. I když odstraněný záznam nemůžete upravit ani použít, zůstane aktuální. Jakmile ale přejdete na jiný záznam, nemůžete odstraněný záznam znovu nastavit jako aktuální.

Upozornění

Sada záznamů musí být aktualizovatelná a při volání Deletemusí existovat platný záznam aktuální v sadě záznamů . Pokud například odstraníte záznam, ale nepřesouvejte se před dalším voláním Delete na nový záznam, Delete vyvolá výjimku CDaoException.

Záznam můžete zrušit, pokud používáte transakce a voláte CDaoWorkspace::Rollback členské funkce. Pokud je základní tabulka primární tabulkou v relaci kaskádového odstranění, odstranění aktuálního záznamu může také odstranit jeden nebo více záznamů v cizí tabulce. Další informace najdete v nápovědě k dao v definici kaskádového odstranění.

Na rozdíl od AddNew volání a volání Delete není následované voláním UpdateEdit.

Související informace najdete v tématech AddNew Method, Edit Method, Delete Method, Update Method a Updatable Property v nápovědě DAO.

CDaoRecordset::D oFieldExchange

Tato členová funkce volá, aby automaticky vyměňovala data mezi datovými členy pole objektu sady záznamů a odpovídajícími sloupci aktuálního záznamu ve zdroji dat.

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

Parametry

Pfx
Obsahuje ukazatel na CDaoFieldExchange objekt. Architektura již bude mít nastaven tento objekt k určení kontextu pro operaci výměny polí.

Poznámky

Také vytvoří vazbu datových členů parametru (pokud existuje) na zástupné symboly parametrů v řetězci příkazu SQL pro výběr sady záznamů. Výměna dat polí, označovaná jako výměna polí záznamu DAO (DFX), funguje v obou směrech: od datových členů sady záznamů až po pole záznamu ve zdroji dat a ze záznamu ve zdroji dat do objektu sady záznamů. Pokud vytváříte vazby sloupců dynamicky, nemusíte implementovat DoFieldExchange.

Jedinou akcí, kterou je nutné provést k implementaci DoFieldExchange pro odvozenou třídu sady záznamů, je vytvořit třídu pomocí TřídyWizard a zadat názvy a datové typy datových členů pole. Můžete také přidat kód k tomu, co ClassWizard zapisuje za účelem určení datových členů parametrů. Pokud mají být všechna pole dynamicky svázaná, bude tato funkce neaktivní, pokud nezadáte datové členy parametrů.

Když deklarujete odvozenou třídu sady záznamů pomocí TřídyWizard, průvodce zapíše přepsání DoFieldExchange za vás, které se podobá následujícímu příkladu:

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

Voláním této členské funkce povolíte změny aktuálního záznamu.

virtual void Edit();

Poznámky

Po volání Edit členské funkce se změny polí aktuálního záznamu zkopírují do vyrovnávací paměti kopírování. Po provedení požadovaných změn záznamu zavolejte Update , aby se změny uložily. Edit uloží hodnoty datových členů sady záznamů. Pokud voláte Edit, proveďte změny a pak znovu volejte Edit , hodnoty záznamu se obnoví do toho, co byly před prvním Edit voláním.

Upozornění

Pokud upravíte záznam a pak provedete jakoukoli operaci, která se přesune na jiný záznam bez prvního volání Update, změny se ztratí bez upozornění. Pokud navíc sadu záznamů nebo nadřazenou databázi zavřete, upravený záznam se bez upozornění zahodí.

V některých případech můžete chtít sloupec aktualizovat tak, že ho vytvoříte null (obsahující žádná data). Uděláte to tak, že zavoláte SetFieldNull s parametrem TRUE, který označí pole Null. To také způsobí aktualizaci sloupce. Pokud chcete, aby se pole zapisovalo do zdroje dat, i když se jeho hodnota nezměnila, zavolejte SetFieldDirty s parametrem PRAVDA. To funguje i v případě, že pole mělo hodnotu Null.

Architektura označuje změněné datové členy polí, aby se zajistilo, že budou zapsány do záznamu ve zdroji dat mechanismem výměny polí záznamu DAO (DFX). Když změníte hodnotu pole, obvykle se pole automaticky zašpiní, takže budete muset jen zřídka volat SetFieldDirty sami, ale někdy můžete chtít zajistit, aby se sloupce explicitně aktualizovaly nebo vložili bez ohledu na hodnotu datového člena pole. Mechanismus DFX také využívá použití PSEUDO NULL. Další informace naleznete v tématu CDaoFieldExchange::m_nOperation.

Pokud se nepoužívá mechanismus ukládání do vyrovnávací paměti, změna hodnoty pole automaticky nenastaví jako nezašpiněné. V tomto případě bude nutné explicitně nastavit pole s špinavou. Příznak obsažený v m_bCheckCacheForDirtyFields řídí tuto automatickou kontrolu polí.

Pokud je objekt sady záznamů pesimisticky uzamčen v prostředí s více uživateli, zůstane záznam uzamčen od času Edit , dokud nebude aktualizace dokončena. Pokud je sada záznamů optimisticky uzamčená, záznam se uzamkne a porovná s předefinovaným záznamem těsně před aktualizací v databázi. Pokud se záznam od doby, kdy jste volali Edit, Update operace nezdaří a mfc vyvolá výjimku. Režim uzamčení můžete změnit pomocí SetLockingModefunkce .

Poznámka:

Optimistické zamykání se vždy používá u externích formátů databáze, jako je ODBC a instalovatelný systém ISAM.

Aktuální záznam zůstane aktuální po volání Edit. Aby bylo možné volat Edit, musí existovat aktuální záznam. Pokud neexistuje žádný aktuální záznam nebo pokud sada záznamů neodkazuje na otevřený objekt sady záznamů typu table nebo dynaset-type, dojde k výjimce. Volání Edit způsobí CDaoException vyvolání za následujících podmínek:

  • Neexistuje žádný aktuální záznam.

  • Databáze nebo sada záznamů je jen pro čtení.

  • Žádná pole v záznamu nejsou aktualizovatelná.

  • Databáze nebo sada záznamů byla otevřena pro výhradní použití jiným uživatelem.

  • Jiný uživatel zamkl stránku obsahující váš záznam.

Pokud zdroj dat podporuje transakce, můžete provést Edit volání části transakce. Mějte na paměti, že byste měli volat CDaoWorkspace::BeginTrans před voláním Edit a po otevření sady záznamů. Všimněte si také, že volání CDaoWorkspace::CommitTrans není náhradou za dokončení Update Edit operace. Další informace o transakcích naleznete v tématu třída CDaoWorkspace.

Související informace najdete v tématech AddNew Method, Edit Method, Delete Method, Update Method a Updatable Property v nápovědě DAO.

CDaoRecordset::FillCache

Voláním této členské funkce se do mezipaměti ukládá zadaný počet záznamů ze sady záznamů.

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

Parametry

pSize
Určuje počet řádků, které se mají vyplnit v mezipaměti. Pokud tento parametr vynecháte, hodnota je určena nastavením CacheSize vlastnost podkladového objektu DAO.

pBookmark
COleVariant určující záložku. Mezipaměť se vyplní od záznamu označeného touto záložkou. Pokud tento parametr vynecháte, mezipaměť se vyplní od záznamu označeného vlastností CacheStart základního objektu DAO.

Poznámky

Ukládání do mezipaměti zlepšuje výkon aplikace, která načítá nebo načítá data ze vzdáleného serveru. Mezipaměť je místo v místní paměti, která obsahuje data naposledy načtená ze serveru za předpokladu, že data budou pravděpodobně znovu požadována při spuštění aplikace. Když jsou data požadována, databázový stroj Microsoft Jet nejprve zkontroluje mezipaměť dat, nikoli je načítá ze serveru, což trvá déle. Použití ukládání dat do mezipaměti u jiných zdrojů dat než ODBC nemá žádný vliv, protože data nejsou uložena v mezipaměti.

Místo čekání na vyplnění mezipaměti záznamy při jejich načítání můžete mezipaměť kdykoli explicitně vyplnit voláním FillCache členské funkce. Je to rychlejší způsob, jak vyplnit mezipaměť, protože FillCache načítá několik záznamů najednou místo jednoho po druhém. Když se například zobrazují všechny záznamy s obrazovkou, můžete mít volání FillCache aplikace, které načte další obrazovku záznamů.

Každá databáze ODBC, ke které se přistupuje pomocí objektů sady záznamů, může mít místní mezipaměť. Pokud chcete vytvořit mezipaměť, otevřete objekt sady záznamů ze vzdáleného zdroje dat a pak volejte SetCacheSize a SetCacheStart členské funkce sady záznamů. Pokud lSize a lBookmark vytvoří rozsah, který je částečně nebo zcela mimo rozsah určený SetCacheSize a SetCacheStart, část sady záznamů mimo tento rozsah bude ignorována a nenačte se do mezipaměti. Pokud FillCache požaduje více záznamů, než zůstává ve vzdáleném zdroji dat, načte se pouze zbývající záznamy a nevyvolá se žádná výjimka.

Záznamy načtené z mezipaměti neodráží změny provedené souběžně se zdrojovými daty jinými uživateli.

FillCache Načítá pouze záznamy, které ještě nejsou uložené v mezipaměti. Chcete-li vynutit aktualizaci všech dat uložených v mezipaměti, zavolejte SetCacheSize členovou funkci s parametrem lSize rovnou 0, znovu volejte SetCacheSize s parametrem lSize , který se rovná velikosti mezipaměti, kterou jste původně požadovali, a potom zavolejte FillCache.

Související informace najdete v tématu Metoda FillCache v nápovědě k dao.

CDaoRecordset::Find

Voláním této členské funkce vyhledejte konkrétní řetězec v sadě záznamů dynaset nebo snapshot-type pomocí relačního operátoru.

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

Parametry

lFindType
Hodnota označující požadovaný typ operace Najít. Možné hodnoty:

  • AFX_DAO_NEXT Najít další umístění odpovídajícího řetězce.

  • AFX_DAO_PREV Najít předchozí umístění odpovídajícího řetězce.

  • AFX_DAO_FIRST Najít první umístění odpovídajícího řetězce.

  • AFX_DAO_LAST Najít poslední umístění odpovídajícího řetězce.

lpszFilter
Řetězcový výraz (podobně jako klauzule WHERE v příkazu SQL bez slova WHERE) použitý k vyhledání záznamu. Příklad:

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Můžete najít první, další, předchozí nebo poslední instanci řetězce. Find je virtuální funkce, takže ji můžete přepsat a přidat vlastní implementaci. Členské FindFirstfunkce , FindLast, FindNexta FindPrev členské funkce volají Find členské funkce, takže můžete použít Find k řízení chování všech operací Najít.

Chcete-li vyhledat záznam v sadě záznamů typu tabulky, zavolejte členské funkce Seek .

Tip

Čím menší je sada záznamů, které máte, tím efektivnější Find bude. Obecně a zejména u dat ODBC je lepší vytvořit nový dotaz, který načte jenom požadované záznamy.

Související informace naleznete v tématu "FindFirst, FindLast, FindNext, FindPrevious Metody" v nápovědě k DAO.

CDaoRecordset::FindFirst

Voláním této členské funkce vyhledáte první záznam, který odpovídá zadané podmínce.

BOOL FindFirst(LPCTSTR lpszFilter);

Parametry

lpszFilter
Řetězcový výraz (podobně jako klauzule WHERE v příkazu SQL bez slova WHERE) použitý k vyhledání záznamu.

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Členová FindFirst funkce zahájí hledání od začátku sady záznamů a vyhledá na konec sady záznamů.

Pokud chcete do hledání zahrnout všechny záznamy (ne jenom ty, které splňují určitou podmínku), použijte jednu z operací přesunout ze záznamu na záznam. Pokud chcete najít záznam v sadě záznamů typu tabulka, zavolejte členovou Seek funkci.

Pokud není nalezen záznam odpovídající kritériím, je aktuální ukazatel záznamu nedeterminován a FindFirst vrátí nulu. Pokud sada záznamů obsahuje více než jeden záznam, který splňuje kritéria, FindFirst vyhledá první výskyt, FindNext vyhledá další výskyt atd.

Upozornění

Pokud upravujete aktuální záznam, nezapomeňte změny uložit voláním Update členské funkce před přechodem na jiný záznam. Pokud přejdete na jiný záznam bez aktualizace, dojde ke ztrátě změn bez upozornění.

Členské Find funkce vyhledávají z umístění a ve směru uvedeném v následující tabulce:

Operace hledání Začátek Směr hledání
FindFirst Začátek sady záznamů Konec sady záznamů
FindLast Konec sady záznamů Začátek sady záznamů
FindNext Aktuální záznam Konec sady záznamů
FindPrevious Aktuální záznam Začátek sady záznamů

Poznámka:

Když zavoláte FindLast, databázový stroj Microsoft Jet plně naplní sadu záznamů před zahájením hledání, pokud to ještě nebylo provedeno. První hledání může trvat déle než následné hledání.

Použití jedné z operací Najít není stejné jako volání MoveFirst nebo MoveNext, které jednoduše vytvoří první nebo další záznam aktuální bez zadání podmínky. Operaci Najít můžete sledovat pomocí operace Přesunutí.

Při použití operací Najít mějte na paměti následující skutečnosti:

  • Pokud Find se vrátí nenulová hodnota, aktuální záznam není definován. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.

  • Operaci Najít nelze použít se sadou záznamů typu snímek, která se posunuje jen dopředu.

  • Při hledání polí obsahujících kalendářní data byste měli použít formát data USA (měsíc-den-rok), i když nepoužíváte verzi databázového stroje Microsoft Jet v USA; v opačném případě nelze najít odpovídající záznamy.

  • Při práci s databázemi ODBC a velkými dynasety můžete zjistit, že použití operací Najít je pomalé, zejména při práci s velkými sadami záznamů. Výkon můžete zlepšit pomocí dotazů SQL s přizpůsobenými klauzulemi ORDERBY nebo WHERE , parametrovými dotazy nebo CDaoQuerydef objekty, které načítají konkrétní indexované záznamy.

Související informace naleznete v tématu "FindFirst, FindLast, FindNext, FindPrevious Metody" v nápovědě k DAO.

CDaoRecordset::FindLast

Voláním této členské funkce vyhledáte poslední záznam, který odpovídá zadané podmínce.

BOOL FindLast(LPCTSTR lpszFilter);

Parametry

lpszFilter
Řetězcový výraz (podobně jako klauzule WHERE v příkazu SQL bez slova WHERE) použitý k vyhledání záznamu.

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Členová FindLast funkce zahájí hledání na konci sady záznamů a hledá zpětně směrem k začátku sady záznamů.

Pokud chcete do hledání zahrnout všechny záznamy (ne jenom ty, které splňují určitou podmínku), použijte jednu z operací přesunout ze záznamu na záznam. Pokud chcete najít záznam v sadě záznamů typu tabulka, zavolejte členovou Seek funkci.

Pokud není nalezen záznam odpovídající kritériím, je aktuální ukazatel záznamu nedeterminován a FindLast vrátí nulu. Pokud sada záznamů obsahuje více než jeden záznam, který splňuje kritéria, FindFirst vyhledá první výskyt, FindNext vyhledá další výskyt po prvním výskytu atd.

Upozornění

Pokud upravíte aktuální záznam, nezapomeňte změny uložit voláním Update členské funkce před přechodem na jiný záznam. Pokud přejdete na jiný záznam bez aktualizace, dojde ke ztrátě změn bez upozornění.

Použití jedné z operací Najít není stejné jako volání MoveFirst nebo MoveNext, které jednoduše vytvoří první nebo další záznam aktuální bez zadání podmínky. Operaci Najít můžete sledovat pomocí operace Přesunutí.

Při použití operací Najít mějte na paměti následující skutečnosti:

  • Pokud Find se vrátí nenulová hodnota, aktuální záznam není definován. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.

  • Operaci Najít nelze použít se sadou záznamů typu snímek, která se posunuje jen dopředu.

  • Při hledání polí obsahujících kalendářní data byste měli použít formát data USA (měsíc-den-rok), i když nepoužíváte verzi databázového stroje Microsoft Jet v USA; v opačném případě nelze najít odpovídající záznamy.

  • Při práci s databázemi ODBC a velkými dynasety můžete zjistit, že použití operací Najít je pomalé, zejména při práci s velkými sadami záznamů. Výkon můžete zlepšit pomocí dotazů SQL s přizpůsobenými klauzulemi ORDERBY nebo WHERE , parametrovými dotazy nebo CDaoQuerydef objekty, které načítají konkrétní indexované záznamy.

Související informace naleznete v tématu "FindFirst, FindLast, FindNext, FindPrevious Metody" v nápovědě k DAO.

CDaoRecordset::FindNext

Voláním této členské funkce vyhledejte další záznam, který odpovídá zadané podmínce.

BOOL FindNext(LPCTSTR lpszFilter);

Parametry

lpszFilter
Řetězcový výraz (podobně jako klauzule WHERE v příkazu SQL bez slova WHERE) použitý k vyhledání záznamu.

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Členová FindNext funkce zahájí hledání na aktuálním záznamu a vyhledá na konec sady záznamů.

Pokud chcete do hledání zahrnout všechny záznamy (ne jenom ty, které splňují určitou podmínku), použijte jednu z operací přesunout ze záznamu na záznam. Pokud chcete najít záznam v sadě záznamů typu tabulka, zavolejte členovou Seek funkci.

Pokud není nalezen záznam odpovídající kritériím, je aktuální ukazatel záznamu nedeterminován a FindNext vrátí nulu. Pokud sada záznamů obsahuje více než jeden záznam, který splňuje kritéria, FindFirst vyhledá první výskyt, FindNext vyhledá další výskyt atd.

Upozornění

Pokud upravíte aktuální záznam, nezapomeňte změny uložit voláním Update členské funkce před přechodem na jiný záznam. Pokud přejdete na jiný záznam bez aktualizace, dojde ke ztrátě změn bez upozornění.

Použití jedné z operací Najít není stejné jako volání MoveFirst nebo MoveNext, které jednoduše vytvoří první nebo další záznam aktuální bez zadání podmínky. Operaci Najít můžete sledovat pomocí operace Přesunutí.

Při použití operací Najít mějte na paměti následující skutečnosti:

  • Pokud Find se vrátí nenulová hodnota, aktuální záznam není definován. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.

  • Operaci Najít nelze použít se sadou záznamů typu snímek, která se posunuje jen dopředu.

  • Při hledání polí obsahujících kalendářní data byste měli použít formát data USA (měsíc-den-rok), i když nepoužíváte verzi databázového stroje Microsoft Jet v USA; v opačném případě nelze najít odpovídající záznamy.

  • Při práci s databázemi ODBC a velkými dynasety můžete zjistit, že použití operací Najít je pomalé, zejména při práci s velkými sadami záznamů. Výkon můžete zlepšit pomocí dotazů SQL s přizpůsobenými klauzulemi ORDERBY nebo WHERE , parametrovými dotazy nebo CDaoQuerydef objekty, které načítají konkrétní indexované záznamy.

Související informace naleznete v tématu "FindFirst, FindLast, FindNext, FindPrevious Metody" v nápovědě k DAO.

CDaoRecordset::FindPrev

Voláním této členské funkce vyhledejte předchozí záznam, který odpovídá zadané podmínce.

BOOL FindPrev(LPCTSTR lpszFilter);

Parametry

lpszFilter
Řetězcový výraz (podobně jako klauzule WHERE v příkazu SQL bez slova WHERE) použitý k vyhledání záznamu.

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Členová FindPrev funkce zahájí hledání u aktuálního záznamu a hledá zpět na začátek sady záznamů.

Pokud chcete do hledání zahrnout všechny záznamy (ne jenom ty, které splňují určitou podmínku), použijte jednu z operací přesunout ze záznamu na záznam. Pokud chcete najít záznam v sadě záznamů typu tabulka, zavolejte členovou Seek funkci.

Pokud není nalezen záznam odpovídající kritériím, je aktuální ukazatel záznamu nedeterminován a FindPrev vrátí nulu. Pokud sada záznamů obsahuje více než jeden záznam, který splňuje kritéria, FindFirst vyhledá první výskyt, FindNext vyhledá další výskyt atd.

Upozornění

Pokud upravíte aktuální záznam, nezapomeňte změny uložit voláním Update členské funkce před přechodem na jiný záznam. Pokud přejdete na jiný záznam bez aktualizace, dojde ke ztrátě změn bez upozornění.

Použití jedné z operací Najít není stejné jako volání MoveFirst nebo MoveNext, které jednoduše vytvoří první nebo další záznam aktuální bez zadání podmínky. Operaci Najít můžete sledovat pomocí operace Přesunutí.

Při použití operací Najít mějte na paměti následující skutečnosti:

  • Pokud Find se vrátí nenulová hodnota, aktuální záznam není definován. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.

  • Operaci Najít nelze použít se sadou záznamů typu snímek, která se posunuje jen dopředu.

  • Při hledání polí obsahujících kalendářní data byste měli použít formát data USA (měsíc-den-rok), i když nepoužíváte verzi databázového stroje Microsoft Jet v USA; v opačném případě nelze najít odpovídající záznamy.

  • Při práci s databázemi ODBC a velkými dynasety můžete zjistit, že použití operací Najít je pomalé, zejména při práci s velkými sadami záznamů. Výkon můžete zlepšit pomocí dotazů SQL s přizpůsobenými klauzulemi ORDERBY nebo WHERE , parametrovými dotazy nebo CDaoQuerydef objekty, které načítají konkrétní indexované záznamy.

Související informace naleznete v tématu "FindFirst, FindLast, FindNext, FindPrevious Metody" v nápovědě k DAO.

CDaoRecordset::GetAbsolutePosition

Vrátí číslo záznamu aktuálního záznamu objektu sady záznamů.

long GetAbsolutePosition();

Návratová hodnota

Celé číslo od 0 do počtu záznamů v sadě záznamů. Odpovídá pořadové pozici aktuálního záznamu v sadě záznamů.

Poznámky

Vlastnost AbsolutePosition základního objektu DAO je založená na nule; nastavení 0 odkazuje na první záznam v sadě záznamů. Počet naplněných záznamů v sadě záznamů můžete určit voláním GetRecordCount. Volání GetRecordCount může nějakou dobu trvat, protože musí přistupovat ke všem záznamům, aby bylo možné určit počet.

Pokud neexistuje žádný aktuální záznam, protože pokud v sadě záznamů nejsou žádné záznamy, vrátí se hodnota 1. Pokud je aktuální záznam odstraněn, hodnota vlastnosti AbsolutePosition není definována a MFC vyvolá výjimku, pokud je odkazován. U sad záznamů typu dynaset se na konec sekvence přidají nové záznamy.

Poznámka:

Tato vlastnost není určena k použití jako náhradní číslo záznamu. Záložky jsou stále doporučeným způsobem uchování a návratu na danou pozici a představují jediný způsob, jak aktuální záznam umístit napříč všemi typy objektů sady záznamů. Zejména se pozice daného záznamu změní, když se odstraní záznamy, které mu předchází. Neexistuje také záruka, že daný záznam bude mít stejnou absolutní pozici, pokud se sada záznamů znovu vytvoří znovu, protože pořadí jednotlivých záznamů v sadě záznamů není zaručeno, pokud není vytvořen příkazem SQL pomocí klauzule ORDERBY .

Poznámka:

Tato členová funkce je platná pouze pro sady záznamů typu dynaset a snapshot-type.

Související informace naleznete v tématu "Absolutnípozice – vlastnost" v nápovědě k dao.

CDaoRecordset::GetBookmark

Voláním této členské funkce získáte hodnotu záložky v určitém záznamu.

COleVariant GetBookmark();

Návratová hodnota

Vrátí hodnotu představující záložku aktuálního záznamu.

Poznámky

Když je vytvořen nebo otevřen objekt sady záznamů, každý z jeho záznamů již má jedinečnou záložku, pokud je podporuje. Volání CanBookmark , které určuje, jestli sada záznamů podporuje záložky.

Záložku aktuálního záznamu můžete uložit přiřazením hodnoty záložky k objektu COleVariant . Pokud se chcete rychle vrátit k danému záznamu kdykoli po přesunutí na jiný záznam, zavolejte SetBookmark s parametrem odpovídajícím hodnotě daného COleVariant objektu.

Poznámka:

Volání requery změní záložky DAO.

Související informace najdete v tématu "Vlastnost záložky" v nápovědě k dao.

CDaoRecordset::GetCacheSize

Voláním této členské funkce získáte počet záznamů uložených v mezipaměti.

long GetCacheSize();

Návratová hodnota

Hodnota, která určuje počet záznamů v sadě záznamů typu dynaset obsahující data, která se mají místně ukládat do mezipaměti ze zdroje dat ODBC.

Poznámky

Ukládání dat do mezipaměti zlepšuje výkon aplikace, která načítá data ze vzdáleného serveru prostřednictvím objektů sady záznamů typu dynaset. Mezipaměť je místo v místní paměti, které obsahuje data naposledy načtená ze serveru v případě, že se data budou během spuštění aplikace vyžadovat znovu. Když jsou data požadována, databázový stroj Microsoft Jet nejprve zkontroluje mezipaměť požadovaných dat, a ne načítá je ze serveru, což trvá déle. Data, která nepocházejí ze zdroje dat ODBC, se neukládají do mezipaměti.

Jakýkoli zdroj dat ODBC, například připojená tabulka, může mít místní mezipaměť.

Související informace najdete v tématu "CacheSize, CacheStart Properties" v nápovědě k DAO.

CDaoRecordset::GetCacheStart

Voláním této členské funkce získáte hodnotu záložky prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.

COleVariant GetCacheStart();

Návratová hodnota

A COleVariant , který určuje záložku prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.

Poznámky

Databázový stroj Microsoft Jet požaduje záznamy v rozsahu mezipamětí z mezipaměti a požaduje záznamy mimo rozsah mezipaměti ze serveru.

Poznámka:

Záznamy načtené z mezipaměti neodráží změny provedené souběžně se zdrojovými daty jinými uživateli.

Související informace najdete v tématu "CacheSize, CacheStart Properties" v nápovědě k DAO.

CDaoRecordset::GetCurrentIndex

Voláním této členské funkce určíte index, který se aktuálně používá v objektu indexovaného typu CDaoRecordset tabulky.

CString GetCurrentIndex();

Návratová hodnota

A CString obsahující název indexu, který se aktuálně používá se sadou záznamů typu tabulky. Vrátí prázdný řetězec, pokud nebyl nastaven žádný index.

Poznámky

Tento index je základem pro řazení záznamů v sadě záznamů typu tabulky a používá ji funkce Seek member k vyhledání záznamů.

Objekt CDaoRecordset může mít více než jeden index, ale může současně používat pouze jeden index (i když objekt CDaoTableDef může mít několik indexů definovaných v něm).

Související informace najdete v tématu Index Object (Objekt indexu) a definici "current index" v nápovědě k dao.

CDaoRecordset::GetDateCreated

Voláním této členské funkce načtěte datum a čas vytvoření základní tabulky.

COleDateTime GetDateCreated();

Návratová hodnota

Objekt COleDateTime obsahující datum a čas vytvoření základní tabulky.

Poznámky

Nastavení data a času jsou odvozena od počítače, na kterém byla vytvořena základní tabulka.

Související informace najdete v tématu "DateCreated, LastUpdated Properties" v nápovědě k daO.

CDaoRecordset::GetDateLastUpdated

Voláním této členské funkce načtěte datum a čas poslední aktualizace schématu.

COleDateTime GetDateLastUpdated();

Návratová hodnota

Objekt COleDateTime obsahující datum a čas, kdy byla naposledy aktualizována struktura základní tabulky (schéma).

Poznámky

Nastavení data a času jsou odvozena od počítače, na kterém byla naposledy aktualizována základní struktura tabulky (schéma).

Související informace najdete v tématu "DateCreated, LastUpdated Properties" v nápovědě k daO.

CDaoRecordset::GetDefaultDBName

Voláním této členské funkce určíte název databáze pro tuto sadu záznamů.

virtual CString GetDefaultDBName();

Návratová hodnota

A CString obsahující cestu a název databáze, ze které je tato sada záznamů odvozena.

Poznámky

Pokud je sada záznamů vytvořená bez ukazatele na databázi CDaoDatabase, použije tato cesta sada záznamů k otevření výchozí databáze. Ve výchozím nastavení vrátí tato funkce prázdný řetězec. Když ClassWizard odvozuje novou sadu záznamů z CDaoRecordset, vytvoří tuto funkci za vás.

Následující příklad ilustruje použití dvojitého zpětného lomítka (\\) v řetězci, jak je nutné, aby byl řetězec interpretován správně.

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

Architektura volá tuto členovou funkci k získání výchozího příkazu SQL, na kterém je sada záznamů založena.

virtual CString GetDefaultSQL();

Návratová hodnota

A CString , který obsahuje výchozí příkaz SQL.

Poznámky

Může se jednat o název tabulky nebo příkaz SQL SELECT .

Implicitně definujete výchozí příkaz SQL deklarováním třídy sady záznamů pomocí třídy ClassWizard a ClassWizard za vás provede tuto úlohu.

Pokud předáte řetězec SQL s hodnotou null do open, zavolá se tato funkce k určení názvu tabulky nebo SQL pro vaši sadu záznamů.

CDaoRecordset::GetEditMode

Voláním této členské funkce určíte stav úprav, což je jedna z následujících hodnot:

short GetEditMode();

Návratová hodnota

Vrátí hodnotu, která označuje stav úprav aktuálního záznamu.

Poznámky

Hodnota Popis
dbEditNone Neprobíhá žádná operace úprav.
dbEditInProgress Edit byl volána.
dbEditAdd AddNew byl volána.

Související informace naleznete v tématu "EditMode – vlastnost" v nápovědě k dao.

CDaoRecordset::GetFieldCount

Voláním této členské funkce načtěte počet polí (sloupců) definovaných v sadě záznamů.

short GetFieldCount();

Návratová hodnota

Počet polí v sadě záznamů.

Poznámky

Související informace najdete v tématu "Počet vlastností" v nápovědě k DAO.

CDaoRecordset::GetFieldInfo

Voláním této členské funkce získáte informace o polích v sadě záznamů.

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
Index založený na nule předdefinovaného pole v kolekci Pole sady záznamů pro vyhledávání podle indexu.

fieldinfo
Odkaz na strukturu CDaoFieldInfo .

dwInfoOptions
Možnosti, které určují, které informace o sadě záznamů se mají načíst. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobují vrácení funkce. Pokud chcete dosáhnout nejlepšího výkonu, načtěte jenom požadovanou úroveň informací:

  • AFX_DAO_PRIMARY_INFO (Výchozí) Název, typ, velikost, atributy

  • AFX_DAO_SECONDARY_INFO Primární informace, plus: Pořadí pořadových řad, Povinné, Povolit nulovou délku, Pořadí kolace, Cizí název, Zdrojové pole, Zdrojová tabulka

  • AFX_DAO_ALL_INFO Primární a sekundární informace, plus: výchozí hodnota, ověřovací pravidlo, ověřovací text

lpszName
Název pole.

Poznámky

Jedna verze funkce umožňuje vyhledat pole podle indexu. Druhá verze umožňuje vyhledat pole podle názvu.

Popis vrácených informací naleznete v CDaoFieldInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Když požadujete informace na jedné úrovni, získáte také informace o všech předchozích úrovních.

Související informace naleznete v tématu Vlastnosti atributů v nápovědě k dao.

CDaoRecordset::GetFieldValue

Voláním této členské funkce načtěte data v sadě záznamů.

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
Ukazatel na řetězec, který obsahuje název pole.

varValue
Odkaz na COleVariant objekt, který bude ukládat hodnotu pole.

nIndex
Index pole v kolekci Pole sady záznamů založený na nule pro vyhledávání podle indexu.

Návratová hodnota

Dvě verze GetFieldValue , které vracejí hodnotu vrátí COleVariant objekt, který obsahuje hodnotu pole.

Poznámky

Pole můžete vyhledat podle názvu nebo podle pořadí.

Poznámka:

Je efektivnější volat jednu z verzí této členské funkce, která přebírá COleVariant odkaz na objekt jako parametr, místo volání verze, která vrací COleVariant objekt. Poslední verze této funkce se uchovávají kvůli zpětné kompatibilitě.

Použití GetFieldValue a SetFieldValue k dynamické vazbě polí za běhu místo statické vazby sloupců pomocí mechanismu DoFieldExchange .

GetFieldValueDoFieldExchange a mechanismus lze kombinovat, aby se zlepšil výkon. Použijte GetFieldValue například k načtení hodnoty, kterou potřebujete jenom na vyžádání, a přiřaďte toto volání tlačítku Další informace v rozhraní.

Související informace najdete v tématech "Objekt pole" a "Vlastnost hodnoty" v nápovědě k dao.

CDaoRecordset::GetIndexCount

Voláním této členské funkce určíte počet indexů dostupných v sadě záznamů typu tabulky.

short GetIndexCount();

Návratová hodnota

Počet indexů v sadě záznamů typu tabulky.

Poznámky

GetIndexCount je užitečné pro procházení všech indexů v sadě záznamů. Pro tento účel použijte GetIndexCount ve spojení s GetIndexInfo. Pokud tuto členovou funkci zavoláte u sad záznamů typu dynaset nebo snapshot-type, mfc vyvolá výjimku.

Související informace naleznete v tématu Vlastnosti atributů v nápovědě k dao.

CDaoRecordset::GetIndexInfo

Voláním této členské funkce získáte různé druhy informací o indexu definovaném v základní tabulce podkladové sadě záznamů.

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
Index založený na nule v kolekci indexů tabulky pro vyhledávání podle číselné pozice.

indexinfo
Odkaz na strukturu CDaoIndexInfo .

dwInfoOptions
Možnosti, které určují, které informace o indexu se mají načíst. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobují vrácení funkce. Pokud chcete dosáhnout nejlepšího výkonu, načtěte jenom požadovanou úroveň informací:

  • AFX_DAO_PRIMARY_INFO (Výchozí) Název, informace o poli, pole

  • AFX_DAO_SECONDARY_INFO Primární informace, plus: Primární, Jedinečný, Skupinový, IgnoreNulls, Required, Foreign

  • AFX_DAO_ALL_INFO Primární a sekundární informace plus: Počet jedinečných položek

lpszName
Ukazatel na název objektu indexu pro vyhledávání podle názvu.

Poznámky

Jedna verze funkce umožňuje vyhledat index podle jeho pozice v kolekci. Druhá verze umožňuje vyhledat index podle názvu.

Popis vrácených informací naleznete v CDaoIndexInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Když požadujete informace na jedné úrovni, získáte také informace o všech předchozích úrovních.

Související informace naleznete v tématu Vlastnosti atributů v nápovědě k dao.

CDaoRecordset::GetLastModifiedBookmark

Voláním této členské funkce načtěte záložku naposledy přidaného nebo aktualizovaného záznamu.

COleVariant GetLastModifiedBookmark();

Návratová hodnota

Obsahuje COleVariant záložku, která označuje naposledy přidaný nebo změněný záznam.

Poznámky

Když je vytvořen nebo otevřen objekt sady záznamů, každý z jeho záznamů již má jedinečnou záložku, pokud je podporuje. Zavolejte GetBookmark a určete, jestli sada záznamů podporuje záložky. Pokud sada záznamů nepodporuje záložky, je CDaoException vyvolán.

Když přidáte záznam, zobrazí se na konci sady záznamů a nejedná se o aktuální záznam. Pokud chcete nový záznam nastavit jako aktuální, zavolejte GetLastModifiedBookmark a pak zavolejte SetBookmark , abyste se vrátili k nově přidanému záznamu.

Související informace naleznete v tématu "LastModified – vlastnost" v nápovědě k dao.

CDaoRecordset::GetLockingMode

Voláním této členské funkce určíte typ uzamčení pro sadu záznamů.

BOOL GetLockingMode();

Návratová hodnota

Nenulové, pokud je typ uzamčení pesimistický, jinak 0 pro optimistické uzamčení záznamů.

Poznámky

Pokud je pesimistické uzamčení, datová stránka obsahující záznam, který upravujete, je uzamčena, jakmile zavoláte funkci Upravit člena. Stránka se odemkne, když zavoláte funkci Aktualizovat nebo Zavřít člena nebo některou z operací Přesunout nebo Najít.

Pokud je aktivní optimistické uzamčení, datová stránka obsahující záznam se uzamkne jenom v době, kdy se záznam aktualizuje pomocí Update členské funkce.

Při práci se zdroji dat ODBC je režim uzamčení vždy optimistický.

Související informace naleznete v tématech "LockEdits – vlastnost" a "Chování uzamčení v aplikacích s více uživateli" v nápovědě k dao.

CDaoRecordset::GetName

Voláním této členské funkce načtěte název sady záznamů.

CString GetName();

Návratová hodnota

A CString obsahující název sady záznamů.

Poznámky

Název sady záznamů musí začínat písmenem a může obsahovat maximálně 40 znaků. Může obsahovat čísla a podtržítka, ale nemůže obsahovat interpunkci ani mezery.

Související informace najdete v tématu "Vlastnost názvu" v nápovědě k DAO.

CDaoRecordset::GetParamValue

Voláním této členské funkce načtěte aktuální hodnotu zadaného parametru uloženého v podkladovém objektu DAOParameter.

virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);

Parametry

nIndex
Číselná pozice parametru v podkladovém objektu DAOParameter.

lpszName
Název parametru, jehož hodnotu chcete.

Návratová hodnota

Objekt třídy COleVariant , který obsahuje hodnotu parametru.

Poznámky

K parametru můžete přistupovat buď podle názvu, nebo podle jeho číselné pozice v kolekci.

Související informace najdete v tématu "Objekt parametru" v nápovědě k dao.

CDaoRecordset::GetPercentPosition

Při práci se sadou záznamů typu dynaset nebo snapshot-type, pokud voláte GetPercentPosition před úplným naplněním sady záznamů, je množství pohybu relativní vzhledem k počtu záznamů, které jsou přístupné voláním GetRecordCount.

float GetPercentPosition();

Návratová hodnota

Číslo mezi 0 a 100, které označuje přibližné umístění aktuálního záznamu v objektu sady záznamů na základě procenta záznamů v sadě záznamů.

Poznámky

K poslednímu záznamu můžete přejít voláním moveLast , abyste dokončili populaci všech sad záznamů, ale to může trvat značné množství času.

Můžete volat GetPercentPosition všechny tři typy objektů sady záznamů, včetně tabulek bez indexů. Nemůžete však volat GetPercentPosition snímky posouvání pouze přesměrovávání nebo sadu záznamů otevřenou z předávacího dotazu na externí databázi. Pokud neexistuje žádný aktuální záznam nebo se aktuální záznam odstranil, CDaoException vyvolá se.

Související informace najdete v tématu "PercentPosition – vlastnost" v nápovědě k dao.

CDaoRecordset::GetRecordCount

Voláním této členské funkce zjistíte, kolik záznamů v sadě záznamů bylo dosaženo.

long GetRecordCount();

Návratová hodnota

Vrátí počet záznamů, ke které se přistupuje v objektu sady záznamů.

Poznámky

GetRecordCount indikuje, kolik záznamů je obsaženo v sadě záznamů typu dynaset nebo snapshot-type, dokud nebudou všechny záznamy přístupné. Dokončení tohoto volání členské funkce může trvat značné množství času.

Jakmile se k poslednímu záznamu dostanete, vrátí hodnota celkový počet nedeletovaných záznamů v sadě záznamů. Pokud chcete vynutit přístup k poslednímu záznamu, zavolejte MoveLast pro sadu záznamů funkci nebo FindLast člena. Můžete také použít počet SQL k určení přibližného počtu záznamů, které dotaz vrátí.

Když vaše aplikace odstraní záznamy v sadě záznamů typu dynaset, návratová GetRecordCount hodnota se sníží. Záznamy odstraněné jinými uživateli se ale neprojeví GetRecordCount , dokud se aktuální záznam nenasadí do odstraněného záznamu. Pokud provedete transakci, která ovlivňuje počet záznamů a následně vrátí transakce zpět, GetRecordCount nebude odrážet skutečný počet zbývajících záznamů.

Hodnota GetRecordCount sady záznamů typu snímku nemá vliv na změny v podkladových tabulkách.

Hodnota GetRecordCount sady záznamů typu tabulky odráží přibližný počet záznamů v tabulce a je ovlivněn okamžitě při přidávání a odstranění záznamů tabulky.

Sada záznamů bez záznamů vrací hodnotu 0. Při práci s připojenými tabulkami nebo databázemi ODBC vždy GetRecordCount vrátí hodnotu 1. Requery Volání členské funkce v sadě záznamů resetuje hodnotu GetRecordCount stejně, jako kdyby byl dotaz znovu proveden.

Související informace naleznete v tématu "RecordCount – vlastnost" v nápovědě k dao.

CDaoRecordset::GetSQL

Voláním této členské funkce získáte příkaz SQL, který se použil k výběru záznamů sady záznamů při jeho otevření.

CString GetSQL() const;

Návratová hodnota

A CString , který obsahuje příkaz SQL.

Poznámky

Obvykle se jedná o příkaz SQL SELECT .

Řetězec vrácený obvykle se liší od jakéhokoli řetězce, který GetSQL jste mohli předat do sady záznamů v parametru lpszSQL členské funkci Open. Důvodem je to, že sada záznamů vytváří úplný příkaz SQL na základě toho, co jste předali Open, co jste zadali pomocí TřídyWizard a co jste mohli zadat v m_strFilter a m_strSort datových členů.

Poznámka:

Volání této členské funkce pouze po volání Open.

Související informace najdete v tématu "Vlastnost SQL" v nápovědě k dao.

CDaoRecordset::GetType

Volání této členské funkce po otevření sady záznamů určit typ objektu sady záznamů.

short GetType();

Návratová hodnota

Jedna z následujících hodnot, která označuje typ sady záznamů:

  • dbOpenTable Sada záznamů typu tabulka

  • dbOpenDynaset Sada záznamů typu Dynaset

  • dbOpenSnapshot Sada záznamů typu snímek

Poznámky

Související informace najdete v tématu "Typ vlastnosti" v nápovědě k dao.

CDaoRecordset::GetValidationRule

Voláním této členské funkce určíte pravidlo použité k ověření dat.

CString GetValidationRule();

Návratová hodnota

CString Objekt obsahující hodnotu, která ověřuje data v záznamu při změně nebo přidání do tabulky.

Poznámky

Toto pravidlo je založené na textu a použije se při každé změně podkladové tabulky. Pokud data nejsou zákonná, mfc vyvolá výjimku. Vrácená chybová zpráva je text ValidationText vlastnost podkladového pole objektu, pokud je zadán, nebo text výrazu určeného ValidationRule vlastnost podkladového pole objektu. Můžete volat GetValidationText získat text chybové zprávy.

Například pole v záznamu, které vyžaduje den v měsíci, může mít ověřovací pravidlo, například "DEN MEZI 1 A 31".

Související informace naleznete v tématu "ValidationRule – vlastnost" v nápovědě k dao.

CDaoRecordset::GetValidationText

Voláním této členské funkce načtěte text Vlastnosti ValidationText objektu podkladového pole.

CString GetValidationText();

Návratová hodnota

Objekt CString obsahující text zprávy, která se zobrazí, pokud hodnota pole nevyhovuje ověřovacímu pravidlu podkladového objektu pole.

Poznámky

Související informace naleznete v tématu "Vlastnost ValidationText" v nápovědě k dao.

CDaoRecordset::IsBOF

Volání této členské funkce před posunem ze záznamu do záznamu zjistíte, jestli jste přešli před prvním záznamem sady záznamů.

BOOL IsBOF() const;

Návratová hodnota

Nenulové, pokud sada záznamů neobsahuje žádné záznamy nebo pokud jste se před prvním záznamem posouvali dozadu; jinak 0.

Poznámky

Můžete také zavolat IsBOF a IsEOF určit, jestli sada záznamů obsahuje nějaké záznamy nebo je prázdná. Okamžitě po volání Open, pokud sada záznamů neobsahuje žádné záznamy, IsBOF vrátí nenulové. Když otevřete sadu záznamů, která má aspoň jeden záznam, první záznam je aktuální záznam a IsBOF vrátí hodnotu 0.

Pokud je prvním záznamem aktuální záznam a zavoláte MovePrev, IsBOF vrátí se následně nenulová hodnota. Pokud IsBOF vrátí nenulovou hodnotu a zavoláte MovePrev, vyvolá se výjimka. Pokud IsBOF vrátí nenulovou hodnotu, aktuální záznam není definován a jakákoli akce, která vyžaduje aktuální záznam, způsobí výjimku.

Vliv konkrétních metod na IsBOF a IsEOF nastavení:

  • Volání Open* interně vytvoří první záznam v sadě záznamů aktuální záznam voláním MoveFirst. Open Volání prázdné sady záznamů proto způsobí IsBOF a IsEOF vrátí nenulovou hodnotu. (Chování neúspěšného MoveFirst nebo MoveLast volání najdete v následující tabulce.)

  • Všechny operace přesunutí, které úspěšně vyhledávají příčinu záznamu a IsBOF IsEOF vrátí hodnotu 0.

  • Volání AddNew následované voláním Update , které úspěšně vloží nový záznam, způsobí IsBOF vrácení hodnoty 0, ale pouze pokud IsEOF je již nenulové. Stav IsEOF zůstane vždy beze změny. Jak je definováno databázovým strojem Microsoft Jet, aktuální ukazatel záznamu prázdné sady záznamů je na konci souboru, takže každý nový záznam se vloží za aktuální záznam.

  • Jakékoli Delete volání, i když odebere jediný zbývající záznam ze sady záznamů, nezmění hodnotu IsBOF nebo IsEOF.

Tato tabulka ukazuje, které operace přesunutí jsou povoleny s různými kombinacemi IsBOF/ IsEOF.

State MoveFirst, MoveLast MovePrev,

Přesunout < 0
Přesunout 0 MoveNext,

Přesunout > 0
IsBOF=nenulová,

IsEOF=0
Povoleno Výjimka Výjimka Povoleno
IsBOF=0,

IsEOF=nenulová
Povoleno Povoleno Výjimka Výjimka
Obě nenulové Výjimka Výjimka Výjimka Výjimka
Oba 0 Povoleno Povoleno Povoleno Povoleno

Povolení operace přesunutí neznamená, že operace úspěšně vyhledá záznam. Pouze značí, že je povolen pokus o provedení zadané operace přesunutí a nevygeneruje výjimku. Hodnota IsBOF členských funkcí se IsEOF může v důsledku pokusu o přesunutí změnit.

Účinek operací přesunutí, které nenaleznou záznam o hodnotě IsBOF a IsEOF nastavení, se zobrazí v následující tabulce.

Operace IsBOF IsEOF
MoveFirst, MoveLast Nenulový Nenulový
Move 0 Beze změny Beze změny
MovePrev, Move< 0 Nenulový Beze změny
MoveNext, Move> 0 Beze změny Nenulový

Související informace najdete v tématu "BOF, EOF – vlastnosti" v nápovědě k DAO.

CDaoRecordset::IsDeleted

Voláním této členské funkce určíte, jestli byl aktuální záznam odstraněn.

BOOL IsDeleted() const;

Návratová hodnota

Nenulové, pokud je sada záznamů umístěna na odstraněný záznam; jinak 0.

Poznámky

Pokud se posunete na záznam a IsDeleted vrátíte hodnotu PRAVDA (nenulová), musíte se před provedením jiných operací sady záznamů posunout k jinému záznamu.

Poznámka:

U záznamů ve snímku nebo sadě záznamů typu tabulky nemusíte kontrolovat odstraněný stav. Vzhledem k tomu, že záznamy nelze ze snímku odstranit, není nutné volat IsDeleted. U sad záznamů typu tabulky se odstraněné záznamy ze sady záznamů skutečně odeberou. Jakmile záznam odstraníte buď vy, jiný uživatel, nebo v jiné sadě záznamů, nebudete se k ho moct posunout. Proto není nutné volat IsDeleted.

Když odstraníte záznam z dynamické sady, odebere se ze sady záznamů a nebude možné se k němu vrátit. Pokud je však záznam v dynasetu odstraněn jiným uživatelem nebo v jiné sadě záznamů na základě stejné tabulky, vrátí hodnotu TRUE, IsDeleted když se později posunete na tento záznam.

Související informace naleznete v tématech "Delete Method", "LastModified Property" a "EditMode – vlastnost" v nápovědě daO.

CDaoRecordset::IsEOF

Volání této členské funkce při posouvání ze záznamu do záznamu, abyste se dozvěděli, jestli jste překročili poslední záznam sady záznamů.

BOOL IsEOF() const;

Návratová hodnota

Nenulové, pokud sada záznamů neobsahuje žádné záznamy nebo pokud jste se posunovali za poslední záznam; jinak 0.

Poznámky

Můžete také volat IsEOF , abyste zjistili, jestli sada záznamů obsahuje nějaké záznamy nebo je prázdná. Okamžitě po volání Open, pokud sada záznamů neobsahuje žádné záznamy, IsEOF vrátí nenulové. Když otevřete sadu záznamů, která má aspoň jeden záznam, první záznam je aktuální záznam a IsEOF vrátí hodnotu 0.

Pokud je posledním záznamem aktuální záznam při volání MoveNext, IsEOF vrátí se následně nenulové. Pokud IsEOF vrátí nenulovou hodnotu a zavoláte MoveNext, vyvolá se výjimka. Pokud IsEOF vrátí nenulovou hodnotu, aktuální záznam není definován a jakákoli akce, která vyžaduje aktuální záznam, způsobí výjimku.

Vliv konkrétních metod na IsBOF a IsEOF nastavení:

  • Volání Open interně vytvoří první záznam v sadě záznamů aktuální záznam voláním MoveFirst. Open Volání prázdné sady záznamů proto způsobí IsBOF a IsEOF vrátí nenulovou hodnotu. (Chování neúspěšného MoveFirst volání najdete v následující tabulce.)

  • Všechny operace přesunutí, které úspěšně vyhledávají příčinu záznamu a IsBOF IsEOF vrátí hodnotu 0.

  • Volání AddNew následované voláním Update , které úspěšně vloží nový záznam, způsobí IsBOF vrácení hodnoty 0, ale pouze pokud IsEOF je již nenulové. Stav IsEOF zůstane vždy beze změny. Jak je definováno databázovým strojem Microsoft Jet, aktuální ukazatel záznamu prázdné sady záznamů je na konci souboru, takže každý nový záznam se vloží za aktuální záznam.

  • Jakékoli Delete volání, i když odebere jediný zbývající záznam ze sady záznamů, nezmění hodnotu IsBOF nebo IsEOF.

Tato tabulka ukazuje, které operace přesunutí jsou povoleny s různými kombinacemi IsBOF/ IsEOF.

State MoveFirst, MoveLast MovePrev,

Přesunout < 0
Přesunout 0 MoveNext,

Přesunout > 0
IsBOF=nenulová,

IsEOF=0
Povoleno Výjimka Výjimka Povoleno
IsBOF=0,

IsEOF=nenulová
Povoleno Povoleno Výjimka Výjimka
Obě nenulové Výjimka Výjimka Výjimka Výjimka
Oba 0 Povoleno Povoleno Povoleno Povoleno

Povolení operace přesunutí neznamená, že operace úspěšně vyhledá záznam. Pouze značí, že je povolen pokus o provedení zadané operace přesunutí a nevygeneruje výjimku. Hodnota IsBOF členských funkcí se IsEOF může změnit v důsledku pokusu o přesunutí.

Účinek operací přesunutí, které nenaleznou záznam o hodnotě IsBOF a IsEOF nastavení, se zobrazí v následující tabulce.

Operace IsBOF IsEOF
MoveFirst, MoveLast Nenulový Nenulový
Move 0 Beze změny Beze změny
MovePrev, Move< 0 Nenulový Beze změny
MoveNext, Move> 0 Beze změny Nenulový

Související informace najdete v tématu "BOF, EOF – vlastnosti" v nápovědě k DAO.

CDaoRecordset::IsFieldDirty

Voláním této členské funkce určíte, zda byl datový člen pole dynaset označen příznakem "dirty" (změněno).

BOOL IsFieldDirty(void* pv);

Parametry

Pv
Ukazatel na datový člen pole, jehož stav chcete zkontrolovat, nebo null určit, jestli některá z polí nejsou zašpiněná.

Návratová hodnota

Nenulové, pokud je zadaný datový člen pole označen jako nezašpiněný; jinak 0.

Poznámky

Data ve všech datových členech nezašpiněného pole budou přenesena do záznamu ve zdroji dat při aktualizaci aktuálního záznamu Update voláním členské funkce CDaoRecordset (po volání Edit nebo AddNew). S těmito znalostmi můžete provést další kroky, jako je zrušení označení datového člena pole, aby se sloupec nezapsal do zdroje dat.

IsFieldDirty se implementuje prostřednictvím DoFieldExchange.

CDaoRecordset::IsFieldNull

Voláním této členské funkce určíte, zda byl datový člen zadaného pole sady záznamů označen jako Null.

BOOL IsFieldNull(void* pv);

Parametry

Pv
Ukazatel na datový člen pole, jehož stav chcete zkontrolovat, nebo NULL určit, zda některá z polí mají hodnotu Null.

Návratová hodnota

Nenulové, pokud je zadaný datový člen pole označen jako Null; jinak 0.

Poznámky

(V terminologii databáze hodnota Null znamená "bez hodnoty" a není stejná jako hodnota NULL v jazyce C++.) Pokud je datový člen pole označen příznakem Null, je interpretován jako sloupec aktuálního záznamu, pro který neexistuje žádná hodnota.

Poznámka:

V některých situacích může být použití IsFieldNull neefektivní, jak ukazuje následující příklad kódu:

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

Poznámka:

Pokud používáte dynamickou vazbu záznamu bez odvození z CDaoRecordset, nezapomeňte použít VT_NULL, jak je znázorněno v příkladu.

CDaoRecordset::IsFieldNullable

Voláním této členské funkce určíte, zda je datový člen zadaného pole nullable (lze nastavit na hodnotu Null; Hodnota NULL jazyka C++ není stejná jako null, což v terminologii databáze znamená "bez hodnoty").

BOOL IsFieldNullable(void* pv);

Parametry

Pv
Ukazatel na datový člen pole, jehož stav chcete zkontrolovat, nebo NULL určit, zda některá z polí mají hodnotu Null.

Návratová hodnota

Nenulové, pokud může být zadaný datový člen pole null; jinak 0.

Poznámky

Pole, které nesmí mít hodnotu Null, musí mít hodnotu. Pokud se pokusíte nastavit takové pole na hodnotu Null při přidávání nebo aktualizaci záznamu, zdroj dat odmítne přidání nebo aktualizaci a Update vyvolá výjimku. K výjimce dojde při volání Update, ne při volání SetFieldNull.

CDaoRecordset::IsOpen

Voláním této členské funkce určíte, jestli je sada záznamů otevřená.

BOOL IsOpen() const;

Návratová hodnota

Nenulové, pokud byla dříve volána objekt sady Open záznamů nebo Requery členská funkce a sada záznamů nebyla uzavřena, jinak 0.

Poznámky

CDaoRecordset::m_bCheckCacheForDirtyFields

Obsahuje příznak označující, jestli se pole uložená v mezipaměti automaticky označí jako zašpiněná (změněná) a null.

Poznámky

Příznak má výchozí hodnotu TRUE. Nastavení v tomto datovém členu řídí celý mechanismus ukládání do vyrovnávací paměti. Pokud příznak nastavíte na TRUE, můžete ukládání do mezipaměti vypnout na základě pole po polích pomocí mechanismu DFX. Pokud příznak nastavíte na FALSE, musíte volat SetFieldDirty a SetFieldNull sami.

Před voláním nastavte tohoto datového člena Open. Tento mechanismus je určen především pro snadné použití. Výkon může být pomalejší kvůli dvojitému ukládání polí do vyrovnávací paměti při provádění změn.

CDaoRecordset::m_nFields

Obsahuje počet datových členů pole ve třídě sady záznamů a počet sloupců vybraných sadou záznamů ze zdroje dat.

Poznámky

Konstruktor třídy sady záznamů musí inicializovat m_nFields se správným počtem staticky vázaných polí. TřídaWizard zapíše tuto inicializaci za vás, když ji použijete k deklaraci třídy sady záznamů. Můžete ho také napsat ručně.

Architektura používá toto číslo ke správě interakce mezi datovými členy pole a odpovídajícími sloupci aktuálního záznamu ve zdroji dat.

Poznámka:

Toto číslo musí odpovídat počtu výstupních sloupců registrovaných DoFieldExchange po volání SetFieldType s parametrem CDaoFieldExchange::outputColumn.

Sloupce můžete dynamicky svázat pomocí CDaoRecordset::GetFieldValue a CDaoRecordset::SetFieldValue. Pokud to uděláte, nemusíte počet zvýšit m_nFields tak, aby odrážel počet volání funkce DFX ve vaší DoFieldExchange členské funkci.

CDaoRecordset::m_nParams

Obsahuje počet členů dat parametrů ve třídě sady záznamů – počet parametrů předaných dotazem sady záznamů.

Poznámky

Pokud má vaše třída sady záznamů nějaké datové členy parametrů, konstruktor třídy musí inicializovat m_nParams se správným číslem. Hodnota m_nParams výchozí hodnota 0. Pokud přidáte datové členy parametrů , které musíte provést ručně, musíte do konstruktoru třídy přidat inicializaci tak, aby odrážela počet parametrů (které musí být alespoň tak velké jako počet zástupných symbolů '' v m_strFilter nebo m_strSort řetězci ).

Rozhraní používá toto číslo při parametrizaci dotazu sady záznamů.

Poznámka:

Toto číslo musí odpovídat počtu parametrů registrovaných DoFieldExchange po volání SetFieldType s parametrem CFieldExchange::param.

Související informace najdete v tématu "Objekt parametru" v nápovědě k dao.

CDaoRecordset::m_pDAORecordset

Obsahuje ukazatel na rozhraní OLE pro objekt sady záznamů DAO podkladového objektu CDaoRecordset .

Poznámky

Tento ukazatel použijte, pokud potřebujete přímý přístup k rozhraní DAO.

Související informace najdete v tématu "Objekt sady záznamů" v nápovědě k dao.

CDaoRecordset::m_pDatabase

Obsahuje ukazatel na CDaoDatabase objekt, přes který je sada záznamů připojena ke zdroji dat.

Poznámky

Tato proměnná se nastavuje dvěma způsoby. Při vytváření objektu sady záznamů obvykle předáte ukazatel na již otevřený CDaoDatabase objekt. Pokud místo toho předáte hodnotu NULL, CDaoRecordset vytvoří objekt CDaoDatabase a otevře se. V obou případech CDaoRecordset uloží ukazatel do této proměnné.

Za normálních okolností nebudete muset přímo použít ukazatel uložený v m_pDatabase. Pokud ale napíšete vlastní rozšíření CDaoRecordset, budete možná muset použít ukazatel. Pokud například vyvoláte vlastní CDaoException(s), budete možná potřebovat ukazatel.

Související informace najdete v tématu "Databázový objekt" v nápovědě k dao.

CDaoRecordset::m_strFilter

Obsahuje řetězec, který se používá k vytvoření klauzule WHERE příkazu SQL.

Poznámky

Nezahrnuje rezervované slovo WHERE pro filtrování sady záznamů. Použití tohoto datového členu se nevztahuje na sady záznamů typu tabulky. Použití m_strFilter nemá žádný vliv při otevírání sady záznamů pomocí CDaoQueryDef ukazatele.

Formát data USA (měsíc-den-rok) použijte při filtrování polí obsahujících kalendářní data, i když nepoužíváte verzi databázového stroje Microsoft Jet v USA; jinak nemusí být data filtrována podle očekávání.

Související informace najdete v tématu "Vlastnost filtru" v nápovědě k dao.

CDaoRecordset::m_strSort

Obsahuje řetězec obsahující klauzuli ORDERBY příkazu SQL bez rezervovaných slov ORDERBY.

Poznámky

Můžete řadit podle objektů sady záznamů typu dynaset a snímků.

Objekty sady záznamů typu tabulka nelze seřadit. Chcete-li určit pořadí řazení sady záznamů typu tabulky, zavolejte SetCurrentIndex.

Použití m_strSort nemá žádný vliv při otevírání sady záznamů pomocí CDaoQueryDef ukazatele.

Související informace naleznete v tématu "Seřadit vlastnost" v nápovědě dao.

CDaoRecordset::Move

Voláním této členské funkce umístíte záznamy lRows záznamů z aktuálního záznamu.

virtual void Move(long lRows);

Parametry

LRows
Počet záznamů, které chcete přesunout dopředu nebo dozadu. Kladné hodnoty se posunují dopředu směrem ke konci sady záznamů. Záporné hodnoty se posunují zpět směrem k začátku.

Poznámky

Můžete se pohybovat dopředu nebo dozadu. Move( 1 ) je ekvivalentní MoveNextk , a Move( -1 ) je ekvivalentní MovePrev.

Upozornění

Volání některé z Move funkcí vyvolá výjimku, pokud sada záznamů neobsahuje žádné záznamy. Obecně platí, že voláním IsBOF operace Move a IsEOF před operací Move určíte, jestli sada záznamů obsahuje nějaké záznamy. Po volání Open nebo Requery, zavolejte buď IsBOF nebo IsEOF.

Poznámka:

Pokud jste se posunuli za začátek nebo konec sady záznamů ( IsBOF nebo IsEOF vrátí nenulovou hodnotu), vyvolá volání vyvolá Move CDaoExceptionchybu .

Poznámka:

Pokud při aktualizaci nebo přidání aktuálního záznamu Move zavoláte některou z funkcí, aktualizace se ztratí bez upozornění.

Když voláte Move snímek posouvání pouze vpřed, musí být parametr lRows kladné celé číslo a záložky nejsou povoleny, takže můžete přesunout pouze vpřed.

Pokud chcete vytvořit první, poslední, další nebo předchozí záznam v sadě záznamů aktuální záznam, zavolejte MoveFirstfunkci , MoveLast, MoveNextnebo MovePrev člen.

Související informace najdete v tématech Move Method a MoveFirst, MoveLast, MoveNext, MovePrevious Methods v nápovědě k DAO.

CDaoRecordset::MoveFirst

Voláním této členské funkce provedete první záznam v sadě záznamů (pokud existuje) aktuálním záznamem.

void MoveFirst();

Poznámky

Nemusíte volat MoveFirst hned po otevření sady záznamů. V té době je prvním záznamem (pokud existuje) automaticky aktuální záznam.

Upozornění

Volání některé z Move funkcí vyvolá výjimku, pokud sada záznamů neobsahuje žádné záznamy. Obecně platí, že voláním IsBOF operace Move a IsEOF před operací Move určíte, jestli sada záznamů obsahuje nějaké záznamy. Po volání Open nebo Requery, zavolejte buď IsBOF nebo IsEOF.

Poznámka:

Pokud při aktualizaci nebo přidání aktuálního záznamu Move zavoláte některou z funkcí, aktualizace se ztratí bez upozornění.

Move Pomocí funkcí můžete přejít ze záznamu na záznam bez použití podmínky. Pomocí operací Najít vyhledejte záznamy v objektu sady záznamů typu dynaset nebo snímku, které splňují určitou podmínku. Chcete-li najít záznam v objektu sady záznamů typu tabulka, zavolejte Seek.

Pokud sada záznamů odkazuje na sadu záznamů typu tabulky, přesun se řídí aktuálním indexem tabulky. Aktuální index můžete nastavit pomocí vlastnosti Index základního objektu DAO. Pokud nenastavíte aktuální index, pořadí vrácených záznamů není definováno.

Pokud voláte MoveLast objekt sady záznamů na základě dotazu SQL nebo dotazu, je dotaz nucen dokončit a objekt sady záznamů je plně naplněn.

Funkci ani MovePrev člena nelze volat MoveFirst se snímkem posouvání pouze vpřed.

Chcete-li přesunout pozici aktuálního záznamu v objektu sady záznamů určitý počet záznamů dopředu nebo dozadu, volání Move.

Související informace najdete v tématech Move Method a MoveFirst, MoveLast, MoveNext, MovePrevious Methods v nápovědě k DAO.

CDaoRecordset::MoveLast

Voláním této členské funkce vytvořte poslední záznam (pokud existuje) v sadě záznamů aktuální záznam.

void MoveLast();

Poznámky

Upozornění

Volání některé z Move funkcí vyvolá výjimku, pokud sada záznamů neobsahuje žádné záznamy. Obecně platí, že voláním IsBOF operace Move a IsEOF před operací Move určíte, jestli sada záznamů obsahuje nějaké záznamy. Po volání Open nebo Requery, zavolejte buď IsBOF nebo IsEOF.

Poznámka:

Pokud při aktualizaci nebo přidání aktuálního záznamu Move zavoláte některou z funkcí, aktualizace se ztratí bez upozornění.

Move Pomocí funkcí můžete přejít ze záznamu na záznam bez použití podmínky. Pomocí operací Najít vyhledejte záznamy v objektu sady záznamů typu dynaset nebo snímku, které splňují určitou podmínku. Chcete-li najít záznam v objektu sady záznamů typu tabulka, zavolejte Seek.

Pokud sada záznamů odkazuje na sadu záznamů typu tabulky, přesun se řídí aktuálním indexem tabulky. Aktuální index můžete nastavit pomocí vlastnosti Index základního objektu DAO. Pokud nenastavíte aktuální index, pořadí vrácených záznamů není definováno.

Pokud voláte MoveLast objekt sady záznamů na základě dotazu SQL nebo dotazu, je dotaz nucen dokončit a objekt sady záznamů je plně naplněn.

Chcete-li přesunout pozici aktuálního záznamu v objektu sady záznamů určitý počet záznamů dopředu nebo dozadu, volání Move.

Související informace najdete v tématech Move Method a MoveFirst, MoveLast, MoveNext, MovePrevious Methods v nápovědě k DAO.

CDaoRecordset::MoveNext

Voláním této členské funkce provedete další záznam v sadě záznamů aktuálním záznamem.

void MoveNext();

Poznámky

Před pokusem o přechod na předchozí záznam doporučujeme volat IsBOF . Volání MovePrev vyvolá nenulovou CDaoException IsBOF hodnotu, která označuje, že jste se už před prvním záznamem posouvali, nebo že sada záznamů nevybírala žádné záznamy.

Upozornění

Volání některé z Move funkcí vyvolá výjimku, pokud sada záznamů neobsahuje žádné záznamy. Obecně platí, že voláním IsBOF operace Move a IsEOF před operací Move určíte, jestli sada záznamů obsahuje nějaké záznamy. Po volání Open nebo Requery, zavolejte buď IsBOF nebo IsEOF.

Poznámka:

Pokud při aktualizaci nebo přidání aktuálního záznamu Move zavoláte některou z funkcí, aktualizace se ztratí bez upozornění.

Move Pomocí funkcí můžete přejít ze záznamu na záznam bez použití podmínky. Pomocí operací Najít vyhledejte záznamy v objektu sady záznamů typu dynaset nebo snímku, které splňují určitou podmínku. Chcete-li najít záznam v objektu sady záznamů typu tabulka, zavolejte Seek.

Pokud sada záznamů odkazuje na sadu záznamů typu tabulky, přesun se řídí aktuálním indexem tabulky. Aktuální index můžete nastavit pomocí vlastnosti Index základního objektu DAO. Pokud nenastavíte aktuální index, pořadí vrácených záznamů není definováno.

Chcete-li přesunout pozici aktuálního záznamu v objektu sady záznamů určitý počet záznamů dopředu nebo dozadu, volání Move.

Související informace najdete v tématech Move Method a MoveFirst, MoveLast, MoveNext, MovePrevious Methods v nápovědě k DAO.

CDaoRecordset::MovePrev

Voláním této členské funkce vytvořte předchozí záznam v sadě záznamů jako aktuální záznam.

void MovePrev();

Poznámky

Před pokusem o přechod na předchozí záznam doporučujeme volat IsBOF . Volání MovePrev vyvolá nenulovou CDaoException IsBOF hodnotu, která označuje, že jste se už před prvním záznamem posouvali, nebo že sada záznamů nevybírala žádné záznamy.

Upozornění

Volání některé z Move funkcí vyvolá výjimku, pokud sada záznamů neobsahuje žádné záznamy. Obecně platí, že voláním IsBOF operace Move a IsEOF před operací Move určíte, jestli sada záznamů obsahuje nějaké záznamy. Po volání Open nebo Requery, zavolejte buď IsBOF nebo IsEOF.

Poznámka:

Pokud při aktualizaci nebo přidání aktuálního záznamu Move zavoláte některou z funkcí, aktualizace se ztratí bez upozornění.

Move Pomocí funkcí můžete přejít ze záznamu na záznam bez použití podmínky. Pomocí operací Najít vyhledejte záznamy v objektu sady záznamů typu dynaset nebo snímku, které splňují určitou podmínku. Chcete-li najít záznam v objektu sady záznamů typu tabulka, zavolejte Seek.

Pokud sada záznamů odkazuje na sadu záznamů typu tabulky, přesun se řídí aktuálním indexem tabulky. Aktuální index můžete nastavit pomocí vlastnosti Index základního objektu DAO. Pokud nenastavíte aktuální index, pořadí vrácených záznamů není definováno.

Funkci ani MovePrev člena nelze volat MoveFirst se snímkem posouvání pouze vpřed.

Chcete-li přesunout pozici aktuálního záznamu v objektu sady záznamů určitý počet záznamů dopředu nebo dozadu, volání Move.

Související informace najdete v tématech Move Method a MoveFirst, MoveLast, MoveNext, MovePrevious Methods v nápovědě k DAO.

CDaoRecordset::Open

Chcete-li načíst záznamy sady záznamů, je nutné volat tuto člennou funkci.

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 následujících hodnot:

  • dbOpenDynaset Sada záznamů typu dynaset s obousměrným posouváním. Tato možnost je výchozí.

  • dbOpenTable Sada záznamů typu tabulky s obousměrným posouváním.

  • dbOpenSnapshot Sada záznamů typu snímku s obousměrným posouváním.

lpszSQL
Ukazatel řetězce obsahující jedno z následujících:

  • Ukazatel NULL.

  • Název jednoho nebo více souborů tabledefs a/nebo querydefs (oddělených čárkami).

  • Příkaz SQL SELECT (volitelně s klauzulí SQL WHERE nebo ORDERBY ).

  • Průchozí dotaz.

nOptions
Jedna nebo více možností uvedených níže. Výchozí hodnota je 0. Možné hodnoty jsou následující:

  • dbAppendOnly Můžete přidávat pouze nové záznamy (pouze sada záznamů typu dynaset). Tato možnost znamená doslova, že záznamy mohou být připojeny pouze. Databázové třídy MFC ODBC mají možnost pouze připojení, která umožňuje načtení a připojení záznamů.

  • dbForwardOnly Sada záznamů je snímek posouvání jen vpřed.

  • dbSeeChanges Vygenerujte výjimku, pokud jiný uživatel mění data, která upravujete.

  • dbDenyWrite Jiní uživatelé nemohou upravovat ani přidávat záznamy.

  • dbDenyRead Jiní uživatelé nemohou zobrazit záznamy (pouze sada záznamů typu tabulka).

  • dbReadOnly Můžete zobrazit pouze záznamy; ostatní uživatelé je můžou upravovat.

  • dbInconsistent Jsou povoleny nekonzistentní aktualizace (pouze sada záznamů typu dynaset).

  • dbConsistent Jsou povoleny pouze konzistentní aktualizace (pouze sada záznamů typu dynaset).

Poznámka:

Konstanty dbConsistent a dbInconsistent vzájemně se vylučují. Můžete použít jednu nebo druhou, ale ne obě v dané instanci Open.

pTableDef
Ukazatel na objekt CDaoTableDef . Tato verze je platná pouze pro sady záznamů typu tabulky. Při použití této možnosti CDaoDatabase se ukazatel použitý k vytvoření CDaoRecordset nepoužívá. Místo toho se použije databáze, ve které se nachází tabledef.

pQueryDef
Ukazatel na objekt CDaoQueryDef . Tato verze je platná pouze pro sady záznamů typu dynaset a snapshot-type. Při použití této možnosti CDaoDatabase se ukazatel použitý k vytvoření CDaoRecordset nepoužívá. Místo toho se použije databáze, ve které se nachází objekt querydef.

Poznámky

Před voláním Openje nutné sestavit objekt sady záznamů. Můžete to udělat několika způsoby:

  • Při vytváření objektu sady záznamů předejte ukazatel na CDaoDatabase objekt, který je již otevřen.

  • Při vytváření objektu sady záznamů předejte ukazatel na CDaoDatabase objekt, který není otevřen. Sada záznamů otevře CDaoDatabase objekt, ale při zavření objektu sady záznamů jej nezavře.

  • Při vytváření objektu sady záznamů předejte ukazatel NULL. Volání objektu GetDefaultDBName sady záznamů pro získání názvu aplikace Microsoft Access . Soubor MDB, který se má otevřít. Sada záznamů pak otevře CDaoDatabase objekt a ponechá ho otevřený, dokud je otevřená sada záznamů. Při volání Close sady záznamů CDaoDatabase se objekt také zavře.

    Poznámka:

    Když sada záznamů objekt otevře CDaoDatabase , otevře zdroj dat s neclusivním přístupem.

Pro verzi Open , která používá parametr lpszSQL , můžete po otevření sady záznamů načíst záznamy jedním z několika způsobů. První možností je mít funkce DFX ve vašem DoFieldExchange. Druhou možností je použít dynamické vazby voláním GetFieldValue členské funkce. Tyto možnosti je možné implementovat samostatně nebo v kombinaci. Pokud jsou kombinovány, budete muset předat příkaz SQL sami při volání Open.

Pokud použijete druhou verzi Open místa, kde předáváte CDaoTableDef objekt, budou výsledné sloupce k dispozici pro vytvoření vazby prostřednictvím DoFieldExchange mechanismu DFX a/nebo vazby dynamicky prostřednictvím GetFieldValue.

Poznámka:

Volání lze použít pouze Open pomocí objektu CDaoTableDef pro sady záznamů typu tabulky.

Pokud použijete třetí verzi Open , ve které předáte CDaoQueryDef objekt, spustí se tento dotaz a výsledné sloupce budou k dispozici pro vytvoření vazby prostřednictvím DoFieldExchange mechanismu DFX a/nebo vazby dynamicky prostřednictvím GetFieldValue.

Poznámka:

Lze volat Open pouze pomocí objektu CDaoQueryDef pro sady záznamů typu dynaset a snapshot-type.

Pro první verzi Open , která používá lpszSQL parametr, jsou záznamy vybrány na základě kritérií zobrazených v následující tabulce.

Hodnota parametru lpszSQL Zvolené záznamy jsou určeny Příklad
NULL Řetězec vrácený funkcí GetDefaultSQL.
Čárkami oddělený seznam jednoho nebo více názvů tabulek a/nebo dotazovaných názvů. Všechny sloupce reprezentované v sadě DoFieldExchange. "Customer"
SELECT column-list FROM table-list Zadané sloupce ze zadaných tabulek a/nebo dotazů. "SELECT CustId, CustName

FROM Customer"

Obvyklým postupem je předat hodnotu NULL Open; v takovém případě Open volá GetDefaultSQL, přepisovatelná členská funkce, která ClassWizard generuje při vytváření CDaoRecordset-odvozené třídy. Tato hodnota dává tabulkovým názvům a/nebo názvům querydef, které jste zadali ve tříděWizard. Místo toho můžete zadat další informace v parametru lpszSQL .

Bez ohledu na to, co předáte, Open vytvoří konečný řetězec SQL pro dotaz (řetězec může obsahovat klauzule SQL WHERE a ORDERBY připojené k řetězci lpszSQL , který jste předali) a pak dotaz spustí. Vytvořený řetězec můžete prozkoumat voláním GetSQL po volání Open.

Datové členy polí třídy sady záznamů jsou svázány se sloupci zvolených dat. Jsou-li vráceny jakékoli záznamy, první záznam se stává aktuálním záznamem.

Chcete-li nastavit možnosti pro sadu záznamů, například filtr nebo řazení, nastavit m_strSort nebo m_strFilter po vytvoření objektu sady záznamů, ale před voláním Open. Pokud chcete aktualizovat záznamy v sadě záznamů po otevření sady záznamů, zavolejte Requery.

Pokud voláte Open sadu záznamů typu dynaset nebo snapshot-type nebo pokud zdroj dat odkazuje na příkaz SQL nebo tabledef představující připojenou tabulku, nelze pro argument typu použít dbOpenTable ; pokud ano, mfc vyvolá výjimku. Chcete-li zjistit, zda tabledef objekt představuje připojenou tabulku, vytvořte objekt CDaoTableDef a zavolejte jeho GetConnect členské funkce.

dbSeeChanges Příznak použijte, pokud chcete při úpravách nebo odstranění stejného záznamu odstranit změny provedené jiným uživatelem nebo jiným programem na vašem počítači. Pokud například dva uživatelé začnou upravovat stejný záznam, první uživatel, který zavolá členovu Update funkci, bude úspěšný. Když Update je volán druhým uživatelem, CDaoException vyvolá se vyvolá. Podobně platí, že pokud se druhý uživatel pokusí volat Delete k odstranění záznamu a první uživatel ho již změnil, dojde k CDaoException chybě.

Obvykle platí, že pokud uživatel tuto CDaoException akci získá při aktualizaci, měl by kód aktualizovat obsah polí a načíst nově změněné hodnoty. Pokud při odstraňování dojde k výjimce, může kód uživateli zobrazit data nového záznamu a zprávu s informací, že se data nedávno změnila. V tomto okamžiku může váš kód požádat o potvrzení, že uživatel stále chce záznam odstranit.

Tip

Pomocí možnosti posouvání pouze vpřed (dbForwardOnly) můžete zvýšit výkon, když vaše aplikace provede jeden průchod sadou záznamů otevřenou ze zdroje dat ODBC.

Související informace naleznete v tématu "OpenRecordset – metoda" v nápovědě k dao.

CDaoRecordset::Requery

Voláním této členské funkce znovu sestavte (aktualizovat) sadu záznamů.

virtual void Requery();

Poznámky

Jsou-li vráceny jakékoli záznamy, první záznam se stává aktuálním záznamem.

Aby sada záznamů odrážela přidání a odstranění, které vy nebo jiní uživatelé provádíte ve zdroji dat, musíte sadu záznamů znovu sestavit voláním Requery. Pokud je sada záznamů dynamickou sadou, automaticky odráží aktualizace, které vy nebo jiní uživatelé provádíte v existujících záznamech (ale ne přidávání). Pokud je sada záznamů snímek, musíte volat Requery , aby odrážely úpravy jinými uživateli a také přidání a odstranění.

Pro dynamickou sadu nebo snímek volejte Requery pokaždé, když chcete sadu záznamů znovu sestavit pomocí hodnot parametrů. Před voláním nastavte nový filtr nebo řazení nastavením m_strFilter a m_strSort .Requery Nastavte nové parametry přiřazením nových hodnot datovým členům parametrů před voláním Requery.

Pokud pokus o opětovné sestavení sady záznamů selže, sada záznamů se zavře. Před voláním Requerymůžete určit, jestli se sada záznamů může znovu dotazovat voláním členské funkce CanRestart . CanRestart nezaručuje, že Requery bude úspěšný.

Upozornění

Zavolat Requery až po zavolání Open.

Poznámka:

Volání requery změní záložky DAO.

Pokud volání CanRestart vrátí hodnotu 0, nemůžete volat Requery sadu záznamů typu dynaset ani snapshot-type, ani ji nemůžete použít v sadě záznamů typu tabulky.

Pokud po volání Requeryvrátíte nenulové IsBOF IsEOF a nenulové, dotaz nevrátil žádné záznamy a sada záznamů nebude obsahovat žádná data.

Související informace najdete v tématu Metoda Requery v nápovědě k dao.

CDaoRecordset::Seek

Voláním této členské funkce vyhledejte záznam v objektu sady záznamů indexovaného typu tabulky, který splňuje zadaná kritéria pro aktuální index a vytvoří záznam jako aktuální záznam.

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

Parametry

lpszComparison
Jeden z následujících řetězcových výrazů: "<", "<=", "=", ">=" nebo ">".

pKey1
Ukazatel na COleVariant , jehož hodnota odpovídá prvnímu poli v indexu. Povinný:

pKey2
Ukazatel na COleVariant hodnotu, jejíž hodnota odpovídá druhému poli v indexu, pokud existuje. Výchozí hodnota je NULL.

pKey3
Ukazatel na COleVariant hodnotu, je-li k dispozici, odpovídá třetímu poli v indexu. Výchozí hodnota je NULL.

pKeyArray
Ukazatel na pole variant. Velikost pole odpovídá počtu polí v indexu.

nKeys
Celé číslo odpovídající velikosti pole, což je počet polí v indexu.

Poznámka:

Nezadávejte v klíčích zástupné cardy. Zástupné dokumentace způsobí Seek , že se nevrátí žádné odpovídající záznamy.

Návratová hodnota

Nenulové, pokud jsou nalezeny odpovídající záznamy, jinak 0.

Poznámky

Ke zpracování indexů čtyř polí nebo více použijte druhou (maticové) verzi Seek .

Seek umožňuje vyhledávání indexů s vysokým výkonem u sad záznamů typu tabulky. Aktuální index je nutné nastavit voláním SetCurrentIndex před voláním Seek. Pokud index identifikuje neunique klíčové pole nebo pole, vyhledá první záznam, Seek který splňuje kritéria. Pokud index nenastavíte, vyvolá se výjimka.

Všimněte si, že pokud nevytvořujete sadu záznamů UNICODE, COleVariant musí být objekty explicitně deklarovány ANSI. To lze provést pomocí COleVariant::COleVariant( lpszSrc , vtSrc ) forma konstruktoru s vtSrc nastavena na VT_BSTRT (ANSI) nebo pomocí COleVariant funkce SetString( lpszSrc , vtSrc ) s vtSrc nastavena na .VT_BSTRT

Při volání Seekpředáte jednu nebo více hodnot klíče a relační operátor (""<, "<=", "=", "=", ">=" nebo ">"). Seekvyhledá pole zadaného klíče a vyhledá první záznam, který splňuje kritéria určená lpszComparisonem a pKey1. Po nalezení Seek vrátí nenulové hodnoty a vytvoří tento záznam jako aktuální. Pokud Seek se nepodaří najít shodu, Seek vrátí nulu a aktuální záznam není definován. Při použití daO přímo, musíte explicitně zkontrolovat NoMatch vlastnost.

Pokud lpszComparison je "=", ">=" nebo ">", Seek začíná na začátku indexu. Pokud je lpszComparison "<" nebo "<=", začíná na konci indexu a hledá zpětně, Seek pokud nejsou na konci duplicitní položky indexu. V tomto případě Seek začíná na libovolné položce mezi duplicitními položkami indexu na konci indexu.

Při použití Seeknemusí být aktuální záznam .

Pokud chcete najít záznam v sadě záznamů typu dynaset nebo snímku, která splňuje určitou podmínku, použijte operace Najít. Pokud chcete zahrnout všechny záznamy, nejen ty, které splňují určitou podmínku, použijte operace přesunutí ze záznamu na záznam.

Nelze volat Seek připojenou tabulku libovolného typu, protože připojené tabulky musí být otevřeny jako sady záznamů typu dynaset nebo snapshot-type. Pokud však voláte CDaoDatabase::Open přímo otevření instalovatelné databáze ISAM, můžete volat Seek tabulky v této databázi, i když výkon může být pomalý.

Související informace najdete v tématu "Metoda hledání" v nápovědě k DAO.

CDaoRecordset::SetAbsolutePosition

Nastaví relativní počet záznamů aktuálního záznamu objektu sady záznamů.

void SetAbsolutePosition(long lPosition);

Parametry

Umístění
Odpovídá pořadové pozici aktuálního záznamu v sadě záznamů.

Poznámky

Volání SetAbsolutePosition umožňuje umístit aktuální ukazatel záznamu na konkrétní záznam na základě jeho pořadové pozice v sadě záznamů typu dynaset nebo snímku. Aktuální číslo záznamu můžete také určit voláním metody GetAbsolutePosition.

Poznámka:

Tato členová funkce je platná pouze pro sady záznamů typu dynaset a snapshot-type.

Vlastnost AbsolutePosition základního objektu DAO je založená na nule; nastavení 0 odkazuje na první záznam v sadě záznamů. Nastavení hodnoty větší než počet vyplněných záznamů způsobí, že mfc vyvolá výjimku. Počet naplněných záznamů v sadě záznamů můžete určit voláním GetRecordCount členské funkce.

Pokud je aktuální záznam odstraněn, hodnota vlastnosti AbsolutePosition není definována a MFC vyvolá výjimku, pokud je odkazován. Na konec sekvence se přidají nové záznamy.

Poznámka:

Tato vlastnost není určena k použití jako náhradní číslo záznamu. Záložky jsou stále doporučeným způsobem uchování a návratu na danou pozici a představují jediný způsob, jak aktuální záznam umístit napříč všemi typy objektů sady záznamů, které podporují záložky. Zejména se pozice daného záznamu změní, když se odstraní záznamy, které mu předchází. Neexistuje také záruka, že daný záznam bude mít stejnou absolutní pozici, pokud se sada záznamů znovu vytvoří znovu, protože pořadí jednotlivých záznamů v sadě záznamů není zaručeno, pokud není vytvořen příkazem SQL pomocí klauzule ORDERBY .

Související informace naleznete v tématu "Absolutnípozice – vlastnost" v nápovědě k dao.

CDaoRecordset::SetBookmark

Voláním této členské funkce umístíte sadu záznamů na záznam obsahující zadanou záložku.

void SetBookmark(COleVariant varBookmark);

Parametry

varBookmark
COleVariant objekt obsahující hodnotu záložky pro určitý záznam.

Poznámky

Když se vytvoří nebo otevře objekt sady záznamů, každý z jeho záznamů už má jedinečnou záložku. Záložku aktuálního záznamu můžete načíst voláním GetBookmark a uložením hodnoty do objektu COleVariant . Později se k ho záznamu můžete vrátit voláním SetBookmark pomocí uložené hodnoty záložky.

Poznámka:

Volání requery změní záložky DAO.

Všimněte si, že pokud nevytvořujete sadu záznamů UNICODE, COleVariant musí být objekt explicitně deklarován ANSI. To lze provést pomocí COleVariant::COleVariant( lpszSrc , vtSrc ) forma konstruktoru s vtSrc nastavena na VT_BSTRT (ANSI) nebo pomocí COleVariant funkce SetString( lpszSrc , vtSrc ) s vtSrc nastavena na .VT_BSTRT

Související informace najdete v tématech "Vlastnost záložky" a Vlastnost záložka" v nápovědě daO.

CDaoRecordset::SetCacheSize

Voláním této členské funkce nastavíte počet záznamů, které se mají uložit do mezipaměti.

void SetCacheSize(long lSize);

Parametry

LSize
Určuje počet záznamů. Typická hodnota je 100. Nastavení 0 vypne ukládání do mezipaměti. Nastavení musí být mezi 5 a 1200 záznamy. Mezipaměť může používat značné množství paměti.

Poznámky

Mezipaměť je místo v místní paměti, které obsahuje data naposledy načtená ze serveru v případě, že se data budou během spuštění aplikace vyžadovat znovu. Ukládání dat do mezipaměti zlepšuje výkon aplikace, která načítá data ze vzdáleného serveru prostřednictvím objektů sady záznamů typu dynaset. Když jsou data požadována, databázový stroj Microsoft Jet nejprve zkontroluje mezipaměť požadovaných dat, a ne načítá je ze serveru, což trvá déle. Data, která nepocházejí ze zdroje dat ODBC, se neukládají do mezipaměti.

Jakýkoli zdroj dat ODBC, například připojená tabulka, může mít místní mezipaměť. Pokud chcete vytvořit mezipaměť, otevřete objekt sady záznamů ze vzdáleného zdroje dat, volejte SetCacheSize členské funkce a SetCacheStart potom volejte FillCache členovou funkci nebo krokujte záznamy pomocí jedné z operací Move. Parametr SetCacheSize lSize členské funkce může být založen na počtu záznamů, se kterými může aplikace pracovat najednou. Pokud například jako zdroj dat, která se mají zobrazit na obrazovce, používáte sadu záznamů, můžete parametr lSize předat SetCacheSize jako 20 pro zobrazení 20 záznamů najednou.

Související informace najdete v tématu "CacheSize, CacheStart Properties" v nápovědě k DAO.

CDaoRecordset::SetCacheStart

Voláním této členské funkce určíte záložku prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.

void SetCacheStart(COleVariant varBookmark);

Parametry

varBookmark
COleVariant, který určuje záložku prvního záznamu v sadě záznamů, která se má uložit do mezipaměti.

Poznámky

Hodnotu záložky libovolného záznamu můžete použít pro parametr SetCacheStart varBookmark členské funkce. Vytvořte záznam, který chcete spustit v mezipaměti s aktuálním záznamem, vytvořte záložku pro tento záznam pomocí setBookmark a předejte hodnotu záložky jako parametr členské SetCacheStart funkce.

Databázový stroj Microsoft Jet požaduje záznamy v rozsahu mezipamětí z mezipaměti a požaduje záznamy mimo rozsah mezipaměti ze serveru.

Záznamy načtené z mezipaměti neodráží změny provedené souběžně se zdrojovými daty jinými uživateli.

Pokud chcete vynutit aktualizaci všech dat uložených v mezipaměti, předejte parametr SetCacheSize lSize jako 0, znovu volejte SetCacheSize s velikostí mezipaměti, kterou jste původně požadovali, a potom volejte členovou FillCache funkci.

Všimněte si, že pokud nevytvořujete sadu záznamů UNICODE, COleVariant musí být objekt explicitně deklarován ANSI. To lze provést pomocí COleVariant::COleVariant( lpszSrc , vtSrc ) forma konstruktoru s vtSrc nastavena na VT_BSTRT (ANSI) nebo pomocí COleVariant funkce SetString( lpszSrc , vtSrc ) s vtSrc nastavena na .VT_BSTRT

Související informace naleznete v tématu CacheSize, CacheStart Properties" v nápovědě DAO.

CDaoRecordset::SetCurrentIndex

Voláním této členské funkce nastavíte index sady záznamů typu tabulky.

void SetCurrentIndex(LPCTSTR lpszIndex);

Parametry

lpszIndex
Ukazatel obsahující název indexu, který se má nastavit.

Poznámky

Záznamy v základních tabulkách nejsou uloženy v žádném konkrétním pořadí. Nastavení indexu změní pořadí záznamů vrácených z databáze, ale nemá vliv na pořadí, ve kterém jsou záznamy uloženy. Zadaný index již musí být definován. Pokud se pokusíte použít objekt indexu, který neexistuje nebo pokud index není nastaven při volání hledání, mfc vyvolá výjimku.

Nový index tabulky můžete vytvořit voláním CDaoTableDef::CreateIndex a připojením nového indexu do kolekce Indexes podkladové tabulky voláním CDaoTableDef::Append a opětovným otevřením sady záznamů.

Záznamy vrácené ze sady záznamů typu tabulky lze uspořádat pouze podle indexů definovaných pro podkladovou tabulku. Pokud chcete seřadit záznamy v jiném pořadí, můžete otevřít sadu záznamů typu dynaset nebo snapshot-type pomocí klauzule SQL ORDERBY uloženou v CDaoRecordset::m_strSort.

Související informace najdete v tématu Index Object (Objekt indexu) a definici "current index" v nápovědě k dao.

CDaoRecordset::SetFieldDirty

Voláním této členské funkce označíte datový člen sady záznamů jako změněný nebo nezměněný datový člen pole.

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

Parametry

Pv
Obsahuje adresu datového člena pole v sadě záznamů nebo null. Pokud je hodnota NULL, označí se všechny datové členy polí v sadě záznamů. (Hodnota NULL jazyka C++ není stejná jako hodnota null v terminologii databáze, což znamená"bez hodnoty".)

bDirty
TRUE, pokud je datový člen pole označen příznakem "dirty" (změněno). Jinak NEPRAVDA, pokud se datový člen pole označí příznakem "clean" (beze změny).

Poznámky

Označení polí beze změny zajistí, že se pole neaktualizuje.

Architektura označuje změněné datové členy polí, aby se zajistilo, že budou zapsány do záznamu ve zdroji dat mechanismem výměny polí záznamu DAO (DFX). Když změníte hodnotu pole, obvykle se pole automaticky zašpiní, takže se budete muset volat SetFieldDirty jen zřídka, ale někdy budete chtít zajistit, aby se sloupce explicitně aktualizovaly nebo vložili bez ohledu na to, jakou hodnotu má datový člen pole. Mechanismus DFX také využívá použití PSEUDONULL. Další informace naleznete v tématu CDaoFieldExchange::m_nOperation.

Pokud se nepoužívá mechanismus ukládání do vyrovnávací paměti, změna hodnoty pole automaticky nenastaví jako nezašpiněné. V tomto případě bude nutné explicitně nastavit pole jako špinavé. Příznak obsažený v m_bCheckCacheForDirtyFields řídí tuto automatickou kontrolu polí.

Poznámka:

Volejte tuto členovou funkci až po volání Edit nebo AddNew.

Použití hodnoty NULL pro první argument funkce použije funkci na všechna outputColumn pole, nikoli pole param v CDaoFieldExchange. Například volání

SetFieldDirty(NULL);

nastaví pouze outputColumn pole na hodnotu NULL; pole parametrů nebudou ovlivněna.

Pokud chcete pracovat na parametru, musíte zadat skutečnou adresu jednotlivých parametrů, na které chcete pracovat, například:

SetFieldDirty(&m_strParam);

To znamená, že nemůžete nastavit všechna pole parametrů na hodnotu NULL, jak je to možné s outputColumn poli.

SetFieldDirty se implementuje prostřednictvím DoFieldExchange.

CDaoRecordset::SetFieldNull

Voláním této členské funkce označíte datový člen sady záznamů datový člen pole jako null (konkrétně nemá žádnou hodnotu) nebo jako nenulovou.

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

Parametry

Pv
Obsahuje adresu datového člena pole v sadě záznamů nebo null. Pokud je hodnota NULL, označí se všechny datové členy polí v sadě záznamů. (Hodnota NULL jazyka C++ není stejná jako hodnota null v terminologii databáze, což znamená"bez hodnoty".)

bNull
Nenulové, pokud se datový člen pole označí příznakem, že nemá žádnou hodnotu (Null). Jinak hodnota 0, pokud má být datový člen pole označen jako nenulový.

Poznámky

SetFieldNull se používá pro pole vázaná v DoFieldExchange mechanismu.

Když do sady záznamů přidáte nový záznam, všechny datové členy polí se zpočátku nastaví na hodnotu Null a označí se jako "dirty" (změněno). Když načtete záznam ze zdroje dat, jeho sloupce už mají hodnoty nebo mají hodnotu Null. Pokud není vhodné vytvořit pole Null, vyvolá se výjimka CDaoException .

Pokud například používáte mechanismus dvojité vyrovnávací paměti, například pokud chcete určit pole aktuálního záznamu jako hodnotu, volání SetFieldNull s hodnotou bNull nastavenou na HODNOTU TRUE ji označí příznakem Null. Pokud bylo pole dříve označené hodnotou Null a chcete mu teď dát hodnotu, jednoduše nastavte její novou hodnotu. Není nutné odebrat příznak Null s SetFieldNull. Chcete-li zjistit, zda pole má hodnotu Null, zavolejte IsFieldNullable.

Pokud nepoužíváte mechanismus dvojité vyrovnávací paměti, změna hodnoty pole automaticky nenastaví pole jako špinavé a nenulové. Pole musí být zašpiněná a nenulová. Příznak obsažený v m_bCheckCacheForDirtyFields řídí tuto automatickou kontrolu polí.

Mechanismus DFX využívá použití PSEUDONULL. Další informace naleznete v tématu CDaoFieldExchange::m_nOperation.

Poznámka:

Volejte tuto členovou funkci až po volání Edit nebo AddNew.

Použití hodnoty NULL pro první argument funkce použije funkci pouze na outputColumn pole, nikoli pole param v CDaoFieldExchange. Například volání

SetFieldNull(NULL);

nastaví pouze outputColumn pole na hodnotu NULL; pole parametrů nebudou ovlivněna.

CDaoRecordset::SetFieldValue

Voláním této členské funkce nastavíte hodnotu pole, buď podle pořadí, nebo změnou hodnoty řetězce.

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
Ukazatel na řetězec obsahující název pole.

varValue
Odkaz na COleVariant objekt obsahující hodnotu obsahu pole.

nIndex
Celé číslo, které představuje pořadové umístění pole v kolekci Pole sady záznamů (založené na nule).

lpszValue
Ukazatel na řetězec obsahující hodnotu obsahu pole.

Poznámky

Pomocí SetFieldValue metody GetFieldValue můžete dynamicky svázat pole za běhu místo statických vazeb sloupců pomocí mechanismu DoFieldExchange .

Všimněte si, že pokud nevytvoříte sadu záznamů UNICODE, musíte buď použít formu SetFieldValue , která neobsahuje COleVariant parametr, nebo COleVariant musí být objekt explicitně deklarován ANSI. To lze provést pomocí COleVariant::COleVariant( lpszSrc , vtSrc ) forma konstruktoru s vtSrc nastavena na VT_BSTRT (ANSI) nebo pomocí COleVariant funkce SetString( lpszSrc , vtSrc ) s vtSrc nastavena na .VT_BSTRT

Související informace najdete v tématech "Objekt pole" a "Vlastnost hodnoty" v nápovědě k dao.

CDaoRecordset::SetFieldValueNull

Voláním této členské funkce nastavíte pole na hodnotu Null.

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

Parametry

nIndex
Index pole v sadě záznamů pro vyhledávání podle indexu založeného na nule.

lpszName
Název pole v sadě záznamů pro vyhledání podle názvu.

Poznámky

Hodnota NULL jazyka C++ není stejná jako hodnota Null, což v terminologii databáze znamená "bez hodnoty".

Související informace najdete v tématech "Objekt pole" a "Vlastnost hodnoty" v nápovědě k dao.

CDaoRecordset::SetLockingMode

Voláním této členské funkce nastavíte typ uzamčení sady záznamů.

void SetLockingMode(BOOL bPessimistic);

Parametry

bPessimistic
Příznak, který označuje typ uzamčení.

Poznámky

Při pesimistickém zamykání se stránka 2K obsahující záznam, který upravujete, uzamkne, jakmile zavoláte členovou Edit funkci. Stránka se odemkne, když zavoláte Update funkci nebo Close člena nebo některou z operací Přesunout nebo Najít.

Pokud je aktivní optimistické uzamčení, stránka 2K obsahující záznam se uzamkne jenom v době, kdy se záznam aktualizuje Update pomocí členské funkce.

Pokud je stránka zamknutá, žádný jiný uživatel nemůže upravovat záznamy na stejné stránce. Pokud zavoláte SetLockingMode a předáte nenulovou hodnotu a jiný uživatel už má stránku uzamčenou, při volání Editse vyvolá výjimka . Jiní uživatelé můžou číst data z uzamčených stránek.

Pokud zavoláte SetLockingMode s nulovou hodnotou a později zavoláte Update , když je stránka uzamčena jiným uživatelem, dojde k výjimce. Pokud chcete zobrazit změny provedené v záznamu jiným uživatelem (a přijít o změny), zavolejte SetBookmark členovou funkci s hodnotou záložky aktuálního záznamu.

Při práci se zdroji dat ODBC je režim uzamčení vždy optimistický.

CDaoRecordset::SetParamValue

Voláním této členské funkce nastavíte hodnotu parametru v sadě záznamů za běhu.

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

Parametry

nIndex
Číselná pozice parametru v kolekci parameters dotazu.

var
Hodnota, která se má nastavit; viz Poznámky.

lpszName
Název parametru, jehož hodnotu chcete nastavit.

Poznámky

Parametr již musí být vytvořen jako součást řetězce SQL sady záznamů. K parametru můžete přistupovat buď podle názvu, nebo podle pozice indexu v kolekci.

Zadejte hodnotu, která se má nastavit jako COleVariant objekt. Informace o nastavení požadované hodnoty a typu v COleVariant objektu naleznete v třídě COleVariant. Všimněte si, že pokud nevytvořujete sadu záznamů UNICODE, COleVariant musí být objekt explicitně deklarován ANSI. To lze provést pomocí COleVariant::COleVariant( lpszSrc , vtSrc ) forma konstruktoru s vtSrc nastavena na VT_BSTRT (ANSI) nebo pomocí COleVariant funkce SetString( lpszSrc , vtSrc ) s vtSrc nastavena na .VT_BSTRT

CDaoRecordset::SetParamValueNull

Voláním této členské funkce nastavíte parametr na hodnotu Null.

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

Parametry

nIndex
Index pole v sadě záznamů pro vyhledávání podle indexu založeného na nule.

lpszName
Název pole v sadě záznamů pro vyhledání podle názvu.

Poznámky

Hodnota NULL jazyka C++ není stejná jako hodnota Null, což v terminologii databáze znamená "bez hodnoty".

CDaoRecordset::SetPercentPosition

Voláním této členské funkce nastavíte hodnotu, která změní přibližné umístění aktuálního záznamu v objektu sady záznamů na základě procenta záznamů v sadě záznamů.

void SetPercentPosition(float fPosition);

Parametry

fPosition
Číslo mezi 0 a 100.

Poznámky

Při práci se sadou záznamů typu dynaset nebo snapshot-type nejprve naplníte sadu záznamů přesunutím na poslední záznam před voláním SetPercentPosition. Pokud zavoláte SetPercentPosition před úplným naplněním sady záznamů, množství pohybu je relativní vzhledem k počtu záznamů, ke kterému se přistupuje, jak je uvedeno hodnotou GetRecordCount. Na poslední záznam můžete přejít voláním MoveLast.

Po volání SetPercentPositionse záznam na přibližné pozici odpovídající této hodnotě změní na aktuální.

Poznámka:

Volání SetPercentPosition pro přesunutí aktuálního záznamu do konkrétního záznamu v sadě záznamů se nedoporučuje. Místo toho volejte členovou funkci SetBookmark.

Související informace najdete v tématu "PercentPosition – vlastnost" v nápovědě k dao.

CDaoRecordset::Update

Volání této členské funkce po volání funkce nebo Edit členaAddNew.

virtual void Update();

Poznámky

Toto volání je nutné k dokončení AddNew operace.Edit

A AddNew Edit připravte vyrovnávací paměť pro úpravy, ve které jsou přidaná nebo upravená data umístěna pro uložení do zdroje dat. Update uloží data. Aktualizují se jenom tato pole označená nebo zjištěná jako změněná.

Pokud zdroj dat podporuje transakce, můžete provést Update volání (a jeho odpovídající AddNew nebo Edit volat) část transakce.

Upozornění

Pokud zavoláte Update bez prvního volání nebo AddNew Edit, Update vyvolá chybu CDaoException. Pokud voláte AddNew nebo Edit, musíte volat Update před voláním MoveNext nebo zavřít buď sadu záznamů, nebo připojení zdroje dat. V opačném případě dojde ke ztrátě změn bez oznámení.

Pokud je objekt sady záznamů pesimisticky uzamčen v prostředí s více uživateli, zůstane záznam uzamčen od času Edit , dokud nebude aktualizace dokončena. Pokud je sada záznamů optimisticky uzamčená, záznam se uzamkne a porovná s předefinovaným záznamem těsně před aktualizací v databázi. Pokud se záznam od doby, kdy jste volali Edit, Update operace nezdaří a mfc vyvolá výjimku. Režim uzamčení můžete změnit pomocí SetLockingModefunkce .

Poznámka:

Optimistické zamykání se vždy používá u externích formátů databáze, jako je ODBC a instalovatelný systém ISAM.

Související informace naleznete v tématech AddNew Method, CancelUpdate Method, Delete Method, LastModified Property, Update Method a EditMode v nápovědě DAO.

Viz také

CObject – třída
Graf hierarchie
CDaoTableDef – třída
CDaoWorkspace – třída
CDaoDatabase – třída
CDaoQueryDef – třída