Seznam záznamů: Přidávání, aktualizace a odstranění záznamů (ODBC).
Toto téma se vztahuje na třídy MFC ODBC.
Poznámka:
Teď můžete záznamy přidávat hromadně efektivněji. Další informace naleznete v tématu Sada záznamů: Přidání záznamů hromadně (ODBC).
Poznámka:
Toto téma se vztahuje na objekty odvozené z toho, ze CRecordset
kterých hromadné načítání řádků nebylo implementováno. Pokud používáte hromadné načítání řádků, přečtěte si téma Sada záznamů: Hromadné načítání záznamů (ODBC).
Aktualizovatelné snímky a dynamické sady umožňují přidávat, upravovat (aktualizovat) a odstraňovat záznamy. Toto téma vysvětluje:
Další informace o tom, jak se aktualizace provádějí a jak se aktualizace zobrazují ostatním uživatelům, najdete v tématu Sada záznamů: Jak sady záznamů aktualizují záznamy (ODBC). Když záznam přidáte, upravíte nebo odstraníte, obvykle sada záznamů okamžitě změní zdroj dat. Místo toho můžete dávkové skupiny souvisejících aktualizací do transakcí. Pokud probíhá transakce, aktualizace se nedokončí, dokud transakci nezapíšete. To vám umožní vrátit změny zpět nebo vrátit zpět. Informace o transakcích naleznete v tématu Transakce (ODBC).
Následující tabulka shrnuje možnosti dostupné pro sady záznamů s různými charakteristikami aktualizace.
Možnosti čtení/aktualizace sady záznamů
Typ | Čteno | Upravit záznam | Odstranit záznam | Přidání nového (připojení) |
---|---|---|---|---|
Jen pro čtení | Y | N | N | N |
Pouze připojení | Y | N | N | Y |
Plně aktualizovatelné | Y | Y | Y | Y |
Určení, jestli je sada záznamů aktualizovatelná
Objekt sady záznamů je aktualizovatelný, pokud je zdroj dat aktualizovatelný a otevřeli jste sadu záznamů jako aktualizovatelnou. Jeho aktualizovatelnost také závisí na používaném příkazu SQL, možnostech ovladače ODBC a na tom, zda je knihovna kurzorů ODBC v paměti. Sadu záznamů nebo zdroj dat jen pro čtení nelze aktualizovat.
Určení, jestli je sada záznamů aktualizovatelná
Volejte členskou funkci CanUpdate objektu sady záznamů.
CanUpdate
vrátí nenulovou hodnotu, pokud je sada záznamů aktualizovatelná.
Ve výchozím nastavení jsou sady záznamů plně aktualizovatelné (můžete provádět AddNew
, Edit
a Delete
operace). Můžete ale také použít možnost appendOnly k otevření aktualizovatelných sad záznamů. Sada záznamů otevřená tímto způsobem umožňuje pouze přidání nových záznamů s AddNew
. Existující záznamy nelze upravovat ani odstraňovat. Můžete otestovat, jestli je sada záznamů otevřená pouze pro připojení voláním členské funkce CanAppend . CanAppend
vrátí nenulovou hodnotu, pokud je sada záznamů plně aktualizovatelná nebo otevřená pouze pro připojení.
Následující kód ukazuje, jak můžete použít CanUpdate
pro objekt sady záznamů s názvem rsStudentSet
:
if( !rsStudentSet.Open( ) )
return FALSE;
if( !rsStudentSet.CanUpdate( ) )
{
AfxMessageBox( "Unable to update the Student recordset." );
return;
}
Upozornění
Při přípravě na aktualizaci sady záznamů voláním Update
dbejte na to, aby sada záznamů obsahovala všechny sloupce, které tvoří primární klíč tabulky (nebo všechny sloupce libovolného jedinečného indexu v tabulce). V některých případech může architektura použít pouze sloupce vybrané v sadě záznamů k identifikaci záznamu v tabulce, který se má aktualizovat. Bez všech potřebných sloupců může být v tabulce aktualizováno více záznamů, což může poškodit referenční integritu tabulky. V tomto případě architektura vyvolá výjimky při volání Update
.
Přidání záznamu do sady záznamů
Pokud její členová funkce CanAppend vrátí nenulovou hodnotu, můžete do sady záznamů přidat nové záznamy.
Přidání nového záznamu do sady záznamů
Ujistěte se, že je sada záznamů připojená.
Volání objektu sady záznamů AddNew členské funkce.
AddNew
připraví sadu záznamů tak, aby fungovala jako vyrovnávací paměť pro úpravy. Všechny datové členy pole jsou nastaveny na speciální hodnotu Null a označeny jako nezměněné, takže při volání aktualizace se do zdroje dat zapisují pouze změněné (špinavé) hodnoty.Nastavte hodnoty datových členů polí nového záznamu.
Přiřaďte hodnoty datovým členům pole. Ty, které nepřiřazujete, nejsou zapsány do zdroje dat.
Volejte členskou funkci objektu
Update
sady záznamů.Update
dokončí přidání zápisem nového záznamu do zdroje dat. Informace o tom, že se vám nepodaří volatUpdate
, naleznete v tématu Sada záznamů: Jak sady záznamů aktualizují záznamy (ODBC).
Informace o tom, jak přidávání záznamů funguje a o tom, kdy jsou přidané záznamy viditelné v sadě záznamů, naleznete v tématu Sada záznamů: Jak AddNew, Edit a Delete Work (ODBC).
Následující příklad ukazuje, jak přidat nový záznam:
if( !rsStudent.Open( ) )
return FALSE;
if( !rsStudent.CanAppend( ) )
return FALSE; // no field values were set
rsStudent.AddNew( );
rsStudent.m_strName = strName;
rsStudent.m_strCity = strCity;
rsStudent.m_strStreet = strStreet;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not added; no field values were set." );
return FALSE;
}
Tip
Pokud chcete zrušit AddNew
nebo Edit
volat, stačí provést jiné volání AddNew
nebo Edit
volat Move
pomocí parametru AFX_MOVE_REFRESH . Datové členy se resetují na předchozí hodnoty a vy jste stále v režimu nebo Add
v Edit
režimu.
Úprava záznamu v sadě záznamů
Existující záznamy můžete upravit, pokud členská funkce CanUpdate sady záznamů vrátí nenulovou hodnotu.
Úprava existujícího záznamu v sadě záznamů
Ujistěte se, že je sada záznamů aktualizovatelná.
Posuňte se k záznamu, který chcete aktualizovat.
Volejte členskou funkci edit objektu sady záznamů.
Edit
připraví sadu záznamů tak, aby fungovala jako vyrovnávací paměť pro úpravy. Všichni členové dat polí jsou označeni, aby sada záznamů později dokázali zjistit, jestli byly změněny. Při volání aktualizace se do zdroje dat zapisují nové hodnoty pro změněné datové členy pole.Nastavte hodnoty datových členů polí nového záznamu.
Přiřaďte hodnoty datovým členům pole. Ty, které nepřiřazujete, zůstanou beze změny.
Volejte členskou funkci objektu
Update
sady záznamů.Update
dokončí úpravy zápisem změněného záznamu do zdroje dat. Informace o tom, že se vám nepodaří volatUpdate
, naleznete v tématu Sada záznamů: Jak sady záznamů aktualizují záznamy (ODBC).
Po úpravě záznamu zůstane upravený záznam aktuálním záznamem.
Následující příklad ukazuje Edit
operaci. Předpokládá, že se uživatel přesunul do záznamu, který chce upravit.
rsStudent.Edit( );
rsStudent.m_strStreet = strNewStreet;
rsStudent.m_strCity = strNewCity;
rsStudent.m_strState = strNewState;
rsStudent.m_strPostalCode = strNewPostalCode;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not updated; no field values were set." );
return FALSE;
}
Tip
Pokud chcete zrušit AddNew
nebo Edit
volat, stačí provést jiné volání AddNew
nebo Edit
volat Move
pomocí parametru AFX_MOVE_REFRESH . Datové členy se resetují na předchozí hodnoty a vy jste stále v režimu nebo Add
v Edit
režimu.
Odstranění záznamu ze sady záznamů
Záznamy můžete odstranit, pokud členská funkce CanUpdate sady záznamů vrátí nenulovou hodnotu.
Odstranění záznamu
Ujistěte se, že je sada záznamů aktualizovatelná.
Posuňte se k záznamu, který chcete aktualizovat.
Volejte členskou funkci delete objektu sady záznamů.
Delete
záznam se okamžitě označí jako odstraněný, a to jak v sadě záznamů, tak ve zdroji dat.Na rozdíl od
AddNew
aEdit
Delete
nemá odpovídajícíUpdate
volání.Posuňte se k jinému záznamu.
Poznámka:
Při procházení sady záznamů nemusí být odstraněné záznamy vynechány. Další informace najdete v členské funkci IsDeleted .
Následující příklad ukazuje Delete
operaci. Předpokládá se, že se uživatel přesunul na záznam, který chce uživatel odstranit. Po Delete
zavolání je důležité přejít na nový záznam.
rsStudent.Delete( );
rsStudent.MoveNext( );
Další informace o efektech AddNew
funkcí , Edit
a Delete
členů naleznete v tématu Sada záznamů: How Recordsets Update Records (ODBC).