Sdílet prostřednictvím


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á

  1. 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, Edita 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 Updatedbejte 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ů

  1. Ujistěte se, že je sada záznamů připojená.

  2. 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.

  3. 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.

  4. 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ří volat Update, 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ů

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

  2. Posuňte se k záznamu, který chcete aktualizovat.

  3. 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.

  4. 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.

  5. 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ří volat Update, 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

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

  2. Posuňte se k záznamu, který chcete aktualizovat.

  3. 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 a EditDelete nemá odpovídající Update volání.

  4. 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 AddNewfunkcí , Edita Delete členů naleznete v tématu Sada záznamů: How Recordsets Update Records (ODBC).

Viz také

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