Sdílet prostřednictvím


Úpravy dat v datových sadách

 

Publikováno: duben 2016

Úpravy dat v datových tabulkách tak, jak upravit data v tabulce v libovolné databázi – proces může zahrnovat vložení, aktualizace a odstranění záznamů v tabulce. Ve formuláři vázané na data můžete určit, která pole jsou uživatelsky upravitelný. V těchto případech datové vazby infrastruktury zpracovává všechny sledování změn tak, aby změny lze odeslat zpět do databáze později. Pokud programově provést úpravy dat a máte v úmyslu odesílají tyto změny zpět do databáze, musíte použít objektů a metod, které provádí sledování změn pro vás.

Kromě změna na skutečná data, můžete se také dotázat DataTable vrátit určité řádky dat, například jednotlivé řádky, určitých verzí sady řádků (původní a navrhovaná), pouze řádky, které se změnily a řádků s chybami.

Chcete-li upravit řádky v datové sadě

Chcete-li upravit existující řádek v DataTable, budete muset vyhledejte DataRow chcete upravit a potom přiřadit aktualizované hodnoty požadovaných sloupců.

Pokud si nejste jisti, index řádku, na kterou chcete upravit, použijte FindBy metody na hledání podle primárního klíče.

            NorthwindDataSet.CustomersRow customersRow = 
                northwindDataSet1.Customers.FindByCustomerID("ALFKI");

            customersRow.CompanyName = "Updated Company Name";
            customersRow.City = "Seattle";;
        Dim customersRow As NorthwindDataSet.CustomersRow
        customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")

        customersRow.CompanyName = "Updated Company Name"
        customersRow.City = "Seattle"

Pokud znáte index řádku, můžete získat přístup a upraví řádků takto:

            northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
            northwindDataSet1.Customers[4].City = "Seattle";
        NorthwindDataSet1.Customers(4).CompanyName = "Updated Company Name"
        NorthwindDataSet1.Customers(4).City = "Seattle"

Vložení nového řádku do datové sady

Aplikace používající ovládací prvky vázané na data obvykle přidávat nové záznamy prostřednictvím "Přidat nové tlačítko na BindingNavigator – ovládací prvek.

Ruční přidání nových záznamů do datové sady, vytvořte nový datový řádek voláním metody na objektu DataTable. Přidání řádku k DataRow kolekce (Rows) z DataTable

            NorthwindDataSet.CustomersRow newCustomersRow = 
                northwindDataSet1.Customers.NewCustomersRow();

            newCustomersRow.CustomerID = "ALFKI";
            newCustomersRow.CompanyName = "Alfreds Futterkiste";

            northwindDataSet1.Customers.Rows.Add(newCustomersRow);
        Dim newCustomersRow As NorthwindDataSet.CustomersRow
        newCustomersRow = NorthwindDataSet1.Customers.NewCustomersRow()

        newCustomersRow.CustomerID = "ALFKI"
        newCustomersRow.CompanyName = "Alfreds Futterkiste"

        NorthwindDataSet1.Customers.Rows.Add(newCustomersRow)

Chcete-li zachovat informace, že datová sada potřebuje k odesílání aktualizací ke zdroji dat, použijte Delete Metoda odebere řádky v tabulce. Například, pokud vaše aplikace používá TableAdapter (nebo DataAdapter), je adaptér Update metoda odstraní řádků v databázi, které mají RowState z Deleted.

Pokud aplikace není nutné odesílat aktualizace zpět do zdroje dat, pak je možné odebrat záznamy přímým přístupem k řádku shromažďování dat (Remove).

K odstranění záznamů z tabulky dat

  • Volání Delete metodu DataRow.

    Tato metoda se neodeberou fyzicky záznamu; Místo toho označí záznam pro odstranění.

    Poznámka

    Pokud se zobrazí vlastnosti count DataRowCollection, výsledný počet zahrnuje záznamy, které jsou označené k odstranění. Získat přesný počet pouze záznamy, které nejsou označené k odstranění, lze Projděte kolekci, prohlížení RowState Vlastnosti každý záznam (mají záznamy, které jsou označené k odstranění RowState z Deleted). Alternativně můžete vytvořit zobrazení dat pro datovou sadu, která filtry na základě řádku stavů a zjistit vlastnost count odtud.

    Následující příklad ukazuje způsob volání Delete Metoda označit první řádek v Customers tabulky jako odstraněné:

                northwindDataSet1.Customers.Rows[0].Delete();
    
            NorthwindDataSet1.Customers.Rows(0).Delete()
    

Určení, zda existují změnit řádky

Provedení změn záznamů v datové sadě, informace o tyto změny uloženy, dokud je nepotvrdíte. Změny se potvrdí při volání AcceptChanges Metoda datovou sadu, tabulka dat nebo volání Update Metoda adaptér TableAdapter nebo data.

Změny jsou sledovány v každý řádek dat dvěma způsoby:

HasChanges Vrací metoda datové sady true Pokud byly provedeny změny v datové sadě. Po zjištění, zda existují změněných řádků, můžete zavolat GetChanges metodu DataSet nebo DataTable vrátit sadu změněných řádků. Další informace naleznete v tématu Postupy: Načítání změněných řádků.

Chcete-li zjistit, pokud byly provedeny žádné změny do všech řádků

  • Volání HasChanges Metoda datové sady zkontrolujete změněna řádků.

    Následující příklad ukazuje, jak zkontrolovat návratovou hodnotou z HasChanges Metoda ke zjištění, zda jsou všechny změněných řádků v datové sadě s názvem NorthwindDataset1.

                if (northwindDataSet1.HasChanges()) 
                {
                    // Changed rows were detected, add appropriate code.
                }
                else
                {
                    // No changed rows were detected, add appropriate code.
                }
    
            If NorthwindDataSet1.HasChanges() Then
    
                ' Changed rows were detected, add appropriate code.
            Else
                ' No changed rows were detected, add appropriate code. 
            End If
    

Určení typu změny

Můžete také zkontrolovat, chcete-li zobrazit, jaké změny byly provedeny v datové sadě předáním hodnoty z DataRowState výčet, který HasChanges Metoda.

Určit, jaký typ změny byly provedeny v řádku

  • Předat DataRowState hodnota, která se HasChanges Metoda.

    Následující příklad ukazuje, jak zkontrolovat datovou sadu s názvem NorthwindDataset1 k určení, pokud byly všech nových řádků do ní přidat:

                if (northwindDataSet1.HasChanges(DataRowState.Added)) 
                {
                    // New rows have been added to the dataset, add appropriate code.
                }
                else
                {
                    // No new rows have been added to the dataset, add appropriate code.
                }
    
            If NorthwindDataSet1.HasChanges(DataRowState.Added) Then
    
                ' New rows have been added to the dataset, add appropriate code.
            Else
                ' No new rows have been added to the dataset, add appropriate code.
            End If
    

K vyhledání řádků s chybami

Při práci s jednotlivých sloupců a řádků dat, může nastat situace, kdy záznam obsahuje chybu. Můžete zkontrolovat HasErrors Vlastnosti k určení, zda existují chyby v DataSet, DataTable, nebo DataRow.

  1. Zkontrolujte HasErrors vlastnosti chcete zobrazit, pokud nejsou žádné chyby v datové sadě.

  2. Pokud HasErrors vlastnost je true, iterovat kolekce tabulek, pak se řádky, které najde řádek s chybou.

            private void FindErrors() 
            {
                if (dataSet1.HasErrors)
                {
                    foreach (DataTable table in dataSet1.Tables)
                    {
                        if (table.HasErrors)
                        {
                            foreach (DataRow row in table.Rows)
                            {
                                if (row.HasErrors)
                                {
                                    // Process error here.
                                }
                            }
                        }
                    }
                }
            }
    
        Private Sub FindErrors()
            Dim table As Data.DataTable
            Dim row As Data.DataRow
    
            If DataSet1.HasErrors Then
    
                For Each table In DataSet1.Tables
                    If table.HasErrors Then
    
                        For Each row In table.Rows
                            If row.HasErrors Then
    
                                ' Process error here.
                            End If
                        Next
                    End If
                Next
            End If
        End Sub