C#.NET změna hodnoty v DataTable

C#.NET změna hodnoty v DataTable
« kdy: 30. 11. 2022, 22:50:14 »
Zdravicko.
S SQL nacitam data do datatable takto
Kód: [Vybrat]
SqlCommand command = new SqlCommand("Select  * from test WHERE DT_Start > @from and Location = @location ", backup_cnn);
            command.Parameters.AddWithValue("@from", FromDate);
            command.Parameters.AddWithValue("@location", Location);
            SqlDataAdapter adapters = new SqlDataAdapter();
            adapters.SelectCommand = command;
            DataTable tables6 = new DataTable();
            adapters.Fill(tables6);
       
            dataGridView6.DataSource = tables6;
To mi funguje ako ma. Ale dajme tomu ze mi to vracia stlpec chyba kde je ciselny kod a rad by som ho zmenil takze pouzijem toto
Kód: [Vybrat]
DataTable tables6 = new DataTable();
            adapters.Fill(tables6);
            foreach (DataRow dr in tables6.Rows) // search whole table
            {
                if (dr['chyba'] == 76) // if id==2
                {
                    dr["chyba"] = " Chyba 1"; //change the name
                                                //break; break or not depending on you
                }
            }
            dataGridView6.DataSource = tables6;
Problemje ze mi to upravuje len prvy vysledok a ked je viacero riadkov s rovnakym ID pre chybu upravuje len jednu.
Ako to spravit lepsie?
« Poslední změna: 01. 12. 2022, 10:44:27 od Petr Krčmář »


tecka

  • ***
  • 141
    • Zobrazit profil
    • E-mail
Re:C#.NET zmena hodnoty v DataTable
« Odpověď #1 kdy: 01. 12. 2022, 07:46:16 »
Kód: [Vybrat]
dr['chyba']
Řetězec v apostrofech je podle mě syntaktická chyba a ani se to nezkompiluje. Jestli se ti něco spustilo, tak možná nějaká starší verze, možná s breakem.

Bugsa

  • ***
  • 118
    • Zobrazit profil
    • E-mail
Re:C#.NET zmena hodnoty v DataTable
« Odpověď #2 kdy: 01. 12. 2022, 07:53:20 »
Kód: [Vybrat]
if (dr['chyba'] == 76) // if id==2Ten tvůj kód nemůže jít přeložit.
Toto není validní C# kód. String musí být v uvozovkách " a nemůžeš porovnávat object s intem.

A taky si nejsem jist jestli je ten sloupec "chyba" opravdu typu "int". Na mém testovacím DataTable je vše string, takže minimální úprava, aby to fungovalo je:
Kód: [Vybrat]
foreach (DataRow dr in dt.Rows) // search whole table
{
    if (dr["chyba"].ToString() == "76") // if id==2
    {
        dr["chyba"] = " Chyba 1"; //change the name
                                    //break; break or not depending on you
    }
}

Tady máš ukázku funkčního kódu https://dotnetfiddle.net/zsBvB7
« Poslední změna: 01. 12. 2022, 07:56:19 od Bugsa »

Re:C#.NET změna hodnoty v DataTable
« Odpověď #3 kdy: 01. 12. 2022, 18:20:40 »
Sice to přímo nesouvisí s dotazem, ale doporučil bych naučit se používat příkaz using, abyste předešel problémům se zapomínáním uvolňovat různé objekty zabírající prostředky (SqlConnection, SqlCommand, SqlDataAdapter...)

A pro samotný problém použijte debugging - prokrokujete si ten cyklus a uvidíte, co se doopravdy děje.