Sdílet prostřednictvím


Seznam záznamů: Přidávání, aktualizace a odstranění záznamů (ODBC).

Toto téma platí pro třídy knihovny MFC rozhraní ODBC.

[!POZNÁMKA]

Nyní můžete přidávat záznamy hromadně a efektivněji.Další informace naleznete v tématu sady záznamů: přidávání záznamů hromadné (ODBC).

[!POZNÁMKA]

Toto téma se týká objektů odvozených z třídy CRecordset, ve které nebylo naimplementováno hromadné načítání řádku. Pokud používáte hromadné načítání řádku, naleznete v sady záznamů: Fetching Records in Bulk (ODBC).

Aktualizovatelné sady záznamů a dynamické sady umožňují přidat, upravit (aktualizovat) a odstranit záznamy.Toto téma vysvětluje:

  • Jak určit, zda je vaše sada záznamů aktualizovatelná.

  • Jak přidat nový záznam.

  • Jak upravit existující záznam.

  • Jak odstranit záznam.

Další informace o způsobu zpracování aktualizací ven a zjistit, jak budou aktualizace zobrazeny ostatním uživatelům, Sada záznamů: Jak sady záznamů aktualizace záznamů (ODBC).Obvykle když přidáte, upravíte nebo odstraníte záznam, sada záznamů okamžitě změní zdroj dat.Místo toho můžete dávkovat skupiny souvisejících aktualizací do transakcí.Pokud transakce probíhá, aktualizace se nestane dokončenou, dokud transakci nepotvrdíte.To vám umožňuje vzít zpět nebo vrátit zpět změny.Pro informace o transakcích si prohlédněte Transakce (ODBC).

Následující tabulka shrnuje dostupné možnosti pro sady záznamů s různými vlastnostmi aktualizace.

Možnosti Čtení/Aktualizace sady záznamů

Typ

Číst

Úprava záznamu

Odstranění záznamu

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í, zda je sada záznamů aktualizovatelná

Objekt sady záznamů je aktualizovatelný, pokud je aktualizovatelný zdroj dat a pokud jste otevřeli sadu záznamů jako aktualizovatelnou.Její aktualizovatelnost také závisí na použitém příkazu SQL, možnostech ovladače rozhraní ODBC a na tom, zda je knihovna kurzorů rozhraní ODBC v paměti.Nemůžete aktualizovat sadu záznamů nebo zdroj dat jen pro čtení.

Pro určení, zda je vaše sada záznamů aktualizovatelná

  • Zavolejte metodu CanUpdate objektu sady záznamů.

    CanUpdate vrací nenulovou hodnotu, pokud je sada záznamů aktualizovatelná.

Ve výchozím nastavení jsou sady záznamů plně aktualizovatelné (lze provést operace AddNew, Edit a Delete).Můžete však také použít možnost appendOnly pro otevření aktualizovatelných sad záznamů.Sada záznamů otevřená tímto způsobem umožňuje pouze přidávání nových záznamů pomocí AddNew.Nemůžete upravovat nebo odstraňovat existující záznamy.Můžete otestovat, zda je sada záznamů otevřená pouze pro přidávání voláním členské funkce CanAppend.CanAppend vrací nenulovou hodnotu, pokud je sada záznamů buď plně aktualizovatelná, nebo otevřená pouze pro přidávání.

Následující kód ukazuje, jak je možné 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;
}
Poznámka k upozorněníUpozornění

Když připravujete sady záznamů pro aktualizaci voláním Update, ujistěte se, že vaše sada záznamů zahrnuje všechny sloupce, tvořící primární klíč tabulky (nebo všechny sloupce libovolných jedinečných indexů tabulky).V některých případech může architektura použít pouze vybrané sloupce ve Vaší sadě záznamů, k identifikaci který záznam ve Vaší tabulce má být aktualizován.Bez všech nezbytných sloupců může být aktualizováno více záznamů tabulky s případným poškozením referenční integrity tabulky.V tomto případě vyvolá architektura výjimky při volání Update.

Přidání záznamu do sady záznamů

Můžete přidat nové záznamy do sady záznamů, pokud jeho členská funkce CanAppend vrací nenulovou hodnotu.

Pro přidání nového záznamu do sady záznamů

  1. Ujistěte se, zda je možno do sady záznamů přidávat

  2. Zavolejte členskou funkci AddNew objektu sady záznamů.

    AddNew připraví sadu záznamů tak, aby pracovala jako vyrovnávací paměť úprav.Všechny datové členy položek jsou nastaveny na zvláštní hodnotu Null a označeny jako nezměněné, protože pouze změněné (špinavé) hodnoty jsou zapsány do zdroje dat při volání Update.

  3. Nastavte hodnoty datových členů položek nového záznamu.

    Přiřaďte hodnoty datovým členům položek.Ty, které nepřiřadíte, nejsou zapsány do zdroje dat.

  4. Zavolejte členskou funkci Update objektu sady záznamů.

    Update dokončí přidání zapsáním nového záznamu do zdroje dat.Pro informace o se stane, pokud nedodržíte volání aktualizace, viz Sada záznamů: Jak sady záznamů aktualizace záznamů (ODBC).

Informace o tom, jak funguje přidávání záznamů a kdy jsou přidané záznamy viditelné ve vaší sadě záznamů naleznete v tématu Sada záznamů: jak AddNew, Edit a práce odstranit (rozhraní 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

Chcete-li zrušit volání AddNew nebo Edit, jednoduše proveďte jiné volání AddNew nebo Edit nebo volejte Move s parametrem AFX_MOVE_REFRESH.Datové členy jsou obnoveny na jejich předchozí hodnoty a jste stále v režimu Edit nebo Add.

Úprava záznamu v sadě záznamů

Můžete upravit existující záznamy, pokud členská funkce CanUpdate vaší sady záznamů vrací nenulovou hodnotu.

Pro úpravu existujícího záznamu v sadě záznamů

  1. Ujistěte se, zda je sada záznamů aktualizovatelná.

  2. Posuňte se na záznam, který chcete aktualizovat.

  3. Zavolejte členskou funkci Edit objektu sady záznamů.

    Edit připraví sadu záznamů tak, aby pracovala jako vyrovnávací paměť úprav.Všechny datové členy položek jsou označeny tak, aby mohla později sada záznamů říct, zda byly změněny.Nové hodnoty pro změněné datové členy položek jsou zapsány do zdroje dat, když zavoláte Update.

  4. Nastavte hodnoty datových členů položek nového záznamu.

    Přiřaďte hodnoty datovým členům položek.Ty, kterým nepřiřadíte hodnoty, zůstanou nezměněny.

  5. Zavolejte členskou funkci Update objektu sady záznamů.

    Update dokončí úpravu zapsáním změněného záznamu do zdroje dat.Pro informace o se stane, pokud nedodržíte volání aktualizace, viz Sada záznamů: Jak sady záznamů aktualizace záznamů (ODBC).

Po úpravě záznamu zůstane upravovaný záznam aktuálním záznamem.

Následující příklad ukazuje operaci Edit.Předpokládá, že se uživatel přesunul na záznam, který chce upravovat.

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

Chcete-li zrušit volání AddNew nebo Edit, jednoduše proveďte jiné volání AddNew nebo Edit nebo volejte Move s parametrem AFX_MOVE_REFRESH.Datové členy jsou obnoveny na jejich předchozí hodnoty a jste stále v režimu Edit nebo Add.

Odstranění záznamu ze sady záznamů

Můžete odstranit záznamy, jestliže členská funkce CanUpdate vaší sady záznamů vrací nenulovou hodnotu.

Pro odstranění záznamu

  1. Ujistěte se, zda je sada záznamů aktualizovatelná.

  2. Posuňte se na záznam, který chcete aktualizovat.

  3. Zavolejte členskou funkci Delete objektu sady záznamů.

    Delete okamžitě označí záznam jako odstraněný, jak v sadě záznamů, tak ve zdroji dat.

    Na rozdíl od AddNew a Edit nemá Delete žádné volání odpovídající Update.

  4. Přechod na jiný záznam.

    [!POZNÁMKA]

    Při procházení sadou záznamů nemusí být odstraněné záznamy přeskočeny.Další informace naleznete v tématu ke členské funkci IsDeleted.

Následující příklad ukazuje operaci Delete.Předpokládá, že se uživatel přesunul na záznam, který chce odstranit.Po volání Delete je důležité se přesunout na nový záznam.

rsStudent.Delete( );
rsStudent.MoveNext( );

Další informace o účincích AddNew, Upravit, a Odstranit členské funkce, viz Sada záznamů: Jak sady záznamů aktualizace záznamů (ODBC).

Viz také

Koncepty

Sada záznamů (ODBC)

Sada záznamů: Zamykání záznamů (ODBC)