CDaoRecordset – třída
Představuje sadu záznamů vybraných ze zdroje dat.
Poznámka:
Objekt pro přístup k datům (DAO) se podporuje prostřednictvím Office 2013. DAO 3.6 je konečná verze a je zastaralá.
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 CDaoRecordset tabulky . |
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ů můžou 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 tabulka, 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
CDaoRecordset
Požadavky
Záhlaví: 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á, že hodnota nemá žádnou hodnotu 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, kde se nový záznam vloží, není zaručeno. 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. Před voláním byste měli volat AddNew
CDaoWorkspace::BeginTrans.
Volání AddNew
sady záznamů, jejíž Open
členská funkce 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ě je nutné explicitně nastavit pole, které je špinavé. 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ů zcela založené 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é jako sady záznamů určené jen pro posouvání 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 nevolá Update
, CancelUpdate
zruší všechny změny provedené po Edit
volání nebo AddNew
byla volána.
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
nebo AddNew
čekající operace, CancelUpdate
způsobí prostředí MFC vyvolání výjimky. Voláním členské funkce GetEditMode určete, jestli existuje čekající operace, která se dá 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í podporované, zavolejte zavřít a pak otevřete , 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 dbForwardOnly
aplikaci , 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
Close
znovu . 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 Delete
aktuá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 upravovat ani používat, 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í Delete
musí 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 Edit
volání Delete
není následované voláním Update
.
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 vazbujete sloupce 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á, je 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ě je nutné explicitně nastavit pole, které je špinavé. 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ředem upravený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í SetLockingMode
funkce .
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 tabulky nebo dynaset, 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. Před voláním a po otevření sady záznamů byste měli volat CDaoWorkspace::BeginTrans
Edit
. Volání CDaoWorkspace::CommitTrans
není náhradou za volání Update
k Edit
dokončení 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žená 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 tuto oblast se ignoruje a nenačte 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é FindFirst
funkce , FindLast
, FindNext
a 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
je. Obecně a hlavně 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 jste to ještě neudělali. 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í definovaný. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.Operaci Najít nemůžete použít se sadou záznamů typu snímek, která se posunuje jen dopředu.
Formát data USA (měsíc-den-rok) byste měli použít při hledání polí obsahujících kalendářní data, 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í definovaný. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.Operaci Najít nemůžete použít se sadou záznamů typu snímek, která se posunuje jen dopředu.
Formát data USA (měsíc-den-rok) byste měli použít při hledání polí obsahujících kalendářní data, 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í definovaný. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.Operaci Najít nemůžete použít se sadou záznamů typu snímek, která se posunuje jen dopředu.
Formát data USA (měsíc-den-rok) byste měli použít při hledání polí obsahujících kalendářní data, 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í definovaný. V tomto případě je nutné umístit ukazatel aktuálního záznamu zpět na platný záznam.Operaci Najít nemůžete použít se sadou záznamů typu snímek, která se posunuje jen dopředu.
Formát data USA (měsíc-den-rok) byste měli použít při hledání polí obsahujících kalendářní data, 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čená 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 ani 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 po přesunutí na jiný záznam, zavolejte SetBookmark
parametr odpovídající hodnotě tohoto 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, ve které jsou data naposledy načtená ze serveru v případě, že se data znovu požadují, zatímco je aplikace spuštěná. 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, atributyAFX_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á tabulkaAFX_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 .
GetFieldValue
DoFieldExchange
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 s GetIndexCount
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, poleAFX_DAO_SECONDARY_INFO
Primární informace, plus: Primární, Jedinečný, Skupinový, IgnoreNulls, Required, ForeignAFX_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, CDaoException
je 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é zamykání, datová stránka obsahující záznam, který upravujete, se uzamkne, 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 ale volat GetPercentPosition
snímky, které se přesměrovává jenom přesměrovávat, ani v sadě záznamů otevřené 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
neznačí, kolik záznamů je obsaženo v sadě záznamů typu dynaset nebo snímků, 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 tabulkadbOpenDynaset
Sada záznamů typu DynasetdbOpenSnapshot
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
Objekt CString
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 legální, 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
CString
Objekt 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ímMoveFirst
.Open
Volání prázdné sady záznamů proto způsobíIsBOF
aIsEOF
vrátí nenulovou hodnotu. (Chování neúspěšnéhoMoveFirst
neboMoveLast
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ímUpdate
, které úspěšně vloží nový záznam, způsobíIsBOF
vrácení hodnoty 0, ale pouze pokudIsEOF
je již nenulové. StavIsEOF
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í hodnotuIsBOF
neboIsEOF
.
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 to znamená, ž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 moct na tento záznam posunout. Proto není nutné volat IsDeleted
.
Když odstraníte záznam z dynamické sady, odebere se ze sady záznamů a nebudete se moct k sadě záznamů posunout zpět. 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ímMoveFirst
.Open
Volání prázdné sady záznamů proto způsobíIsBOF
aIsEOF
vrátí nenulovou hodnotu. (Chování neúspěšnéhoMoveFirst
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ímUpdate
, které úspěšně vloží nový záznam, způsobíIsBOF
vrácení hodnoty 0, ale pouze pokudIsEOF
je již nenulové. StavIsEOF
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í hodnotuIsBOF
neboIsEOF
.
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 to znamená, ž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 zašpiněného pole se přenesou 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, například zrušit agregace datového člena pole a označit sloupec tak, aby se 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á, že hodnota nemá žádnou hodnotu a není stejná jako hodnota NULL v jazyce C++.) Pokud je datový člen pole označený příznakem Null, interpretuje se 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í , 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é nemůže 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 nebo členská funkce objektu Open
Requery
sady záznamů 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
, 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
souboru . 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ů.
Nelze řadit objekty sady záznamů typu tabulka. 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í MoveNext
k , 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
CDaoException
chybu .
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í jen vpřed, musí být parametr lRows kladné celé číslo a záložky nejsou povolené, 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 MoveFirst
funkci , MoveLast
, MoveNext
nebo 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 nemůžete volat MoveFirst
se snímkem posouvání jen 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í, které MovePrev
vyvolá nenulovou IsBOF
CDaoException
hodnotu, což znamená, ž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í, které MovePrev
vyvolá nenulovou IsBOF
CDaoException
hodnotu, což znamená, ž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 nemůžete volat MoveFirst
se snímkem posouvání jen 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é nemůžou upravovat ani přidávat záznamy.dbDenyRead
Jiní uživatelé nemůžou 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 Open
je 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řeCDaoDatabase
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řeCDaoDatabase
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 sloučené, 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, jsou 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 jsou 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, nemůžete 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 vyřadit 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 zavolejte Requery
, když chcete sadu záznamů znovu sestavit pomocí hodnot parametrů. Nastavte nový filtr nebo řazení podle nastavení m_strFilter
a m_strSort
před voláním 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 Requery
můžete určit, jestli se sada záznamů dá znovu dotazovat voláním CanRestart
členské funkce. CanRestart
nezaručuje, že Requery
to bude úspěšné.
Upozornění
Zavolat Requery
až po zavolání Open
.
Poznámka:
Volání Requery
změn záložek 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í Requery
vrá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.
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í Seek
předáte jednu nebo více hodnot klíče a relační operátor (""<, "<=", "=", "=", ">=" nebo ">"). Seek
vyhledá 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í Seek
nemusí 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 jakéhokoli 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čená 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 ani 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.
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 1 200 záznamy. Mezipaměť může používat značné množství paměti.
Poznámky
Mezipaměť je místo v místní paměti, ve které jsou data naposledy načtená ze serveru v případě, že se data znovu požadují, zatímco je aplikace spuštěná. 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 používáte sadu záznamů jako zdroj dat, která se mají zobrazit na obrazovce, 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.
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 se neukládají 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 změní, 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 hodnotu datového člena 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ě je nutné explicitně nastavit pole jako špinavé. Příznak obsažený v m_bCheckCacheForDirtyFields řídí tuto automatickou kontrolu polí.
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ů nejsou ovlivněná.
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 teď chcete dát hodnotu, nastavte její novou hodnotu. Příznak Null nemusíte odebírat s příznakem 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.
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ů nejsou ovlivněná.
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 .
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á, že nemá žádnou hodnotu.
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
Pokud je pesimistické zamykání, stránka 2K obsahující záznam, který upravujete, je uzamčena hned po volání Edit
členské funkce. 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í Edit
se 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. 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á, že nemá žádnou hodnotu.
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í SetPercentPosition
se 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ředem upravený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í SetLockingMode
funkce .
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