Sdílet prostřednictvím


Záznamů: Přidávání, aktualizaci a odstraňová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 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 načítání řádku hromadné záznamů: načítání záznamů hromadné (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 aktualizace provádí ven a aktualizace pohledu jiných uživatelů, viz záznamů: jak sady záznamů aktualizaci 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ů

Type

Čtení

Ú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 vaše sada záznamů je 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 příkazu SQL, který používáte, možnostech ovladače rozhraní ODBC a 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 v případě selhání volání aktualizace, viz záznamů: jak sady záznamů aktualizaci záznamů (ODBC).

Informace o způsobu přidávání záznamů works a při přidané záznamy jsou viditelné v vaše záznamů naleznete v tématu záznamů: jak metodu AddNew, úpravy a odstranění práce (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 v případě selhání volání aktualizace, viz záznamů: jak sady záznamů aktualizaci 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.Pro další informace si prohlédněte členskou 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 funkce členů viz záznamů: jak sady záznamů aktualizaci záznamů (ODBC).

Viz také

Koncepty

Sady záznamů (ODBC)

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