Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Wangarad 30. 11. 2022, 22:50:14
-
Zdravicko.
S SQL nacitam data do datatable takto
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
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?
-
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.
-
if (dr['chyba'] == 76) // if id==2
Ten 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:
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
-
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.