c# u combo boxu ponavljaje podataka iz baze

1

c# u combo boxu ponavljaje podataka iz baze

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Ponavlja unose iz baze, zasto?

 private void Form1_Load(object sender, EventArgs e)         {             try             {                 connection.Open();                 OleDbCommand command=new OleDbCommand();                 command.Connection=connection;                 string query="select * from korisnici,dogadjaji";                 command.CommandText=query;                                 OleDbDataReader reader=command.ExecuteReader();                 while(reader.Read())                 {                     comboBox1.Items.Add(reader["korisnik"].ToString());                     comboBox2.Items.Add(reader["dogadjaj"].ToString());                                 }                             }             catch(Exception ex)             {                 MessageBox.Show("error" + ex);             }             connection.Close();         }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14822
  • Gde živiš: Niš

Napisano: 03 Okt 2014 21:05

Ne ponavlja unose, već čita onako kako si mu rekao. Wink Otvori bazu i videćeš da imaš za svaku liniju u comboBoxu po jedan red u bazi. Wink

Svakako, selektuj samo događaje, pa eliminiši duplikate klauzulom DISTINCT.

Dopuna: 03 Okt 2014 21:11

I da, ne znam koliko će opširna biti baza, ali ovoliko ponavljanja podataka nije najsjajnije rešenje. Very Happy



offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Probao sam, kucajuci
"SELECT distinct * from dogadjaji, korisnici";
ali nece...Pa ja hocu samo iz tabele korisnici da izaberem tabelu korisnik, iz tabele dogadjaji da izaberem dogadjaj, i da to stavim u combo box-ove, kao sto se i moze videti iz koda, ali ne razumem zasto mi kopira unose.
U bazi su normalni unosi, nema ponavljajucih

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14822
  • Gde živiš: Niš

Aha. A da ne radi on implicitno cross join u pozadini kada tabele navedeš za zarezom? Ne bi trebalo, barem nije tako u SQL-u (ako se uopšte dobro sećam Very Happy). Drugo, bio bi isti broj svih ponavljanja... Hajde uslikaj tabele i okači slike.

Takođe, ne izdvaja duplikate jer duplikati ne postoje kada koristiš *. Umesto toga selektuj određene kolone i odatle će biti uklonjeni duplikati.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14822
  • Gde živiš: Niš

Napisano: 03 Okt 2014 21:28

Koliko vidim u prethodnoj temi, ti imaš samo jednu tabelu gde imaš atribute Korisnik i Događaj. Zar ne?

Dopuna: 03 Okt 2014 21:30

Svakako, moraćeš to u dva odvojena upita. Ovako: SELECT DISTINCT korisnik FROM korisnici;

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

ne, napravio sam dve tabele sad, evo unosa u tabelama

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14822
  • Gde živiš: Niš

Da, ovo je definitivno Dekartov proizvod, tj. Cross join (svaki sa svakim Very Happy). Tek sada videh da postoji pretraživanje slika i pretraživanje ulica. Malopre mi se učinilo da je to jedno te isto.

Dakle, dva odvojena upita i rešio si problem. Very Happy Možeš da rešiš i ugnježdenim upitom, ali je to ovde besmisleno jer je sam spoj nepotreban.

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Da, to sam i pokusao, ali ako koristim

private void Form1_Load(object sender, EventArgs e)         {             try             {                 connection.Open();                 OleDbCommand command=new OleDbCommand();                 command.Connection=connection;                 string query = "select korisnik from korisnici";                 //code to add to combobox1                 string query2 = "select dogadjaj from dogadjaji";                 //code to add to combobox 2                 command.CommandText=query;                                 OleDbDataReader reader=command.ExecuteReader();                 while(reader.Read())                 {                                         comboBox2.Items.Add(reader["dogadjaj"].ToString());                     comboBox1.Items.Add(reader["korisnik"].ToString());                                                     }                             }             catch(Exception ex)             {                 MessageBox.Show("error" + ex);             }             connection.Close();         }

imam deo command.CommandText=query;
i to ce da radi samo za taj upit, a kako onda moram jos jednu tu dodavati komandu za query2? sve duplo? to mi malo nelogicno

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14822
  • Gde živiš: Niš

A možda da pročitaš iz jedne tabele, promeniš string upita, pa zatim pročitaš iz druge tabele? Smile Kako god, ti si ovde zamešao babe i žabe i to nije dobro. U principu, duplikate možeš da ukloniš i "ručno" u programu, ali što bi to radio kada sve već imaš gotovo? Very Happy

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

pogubio sam se, ne kontam sta treba da odradim :DDD
prosto pitanje, kako da iz dve tabele uzmem dve kolone i stavim u combo box, eto Very Happy xaxa Very Happy ne mogu da skontam gd eje greska

Ko je trenutno na forumu
 

Ukupno su 1110 korisnika na forumu :: 46 registrovanih, 7 sakrivenih i 1057 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: AC-DC, ArchaBasha, babaroga, Bane san, bokisha253, Boris BM, cavatina, Denaya, djuradj, Excalibur13, Frunze, galerija, Hans Gajger, ikan, ILGromovnik, Još malo pa deda, kikisp, krkalon, Krusarac, kunktator, kybonacci, mercedesamg, Mi lao shu, MiG-29M2, mikrimaus, MilosKop, milutin134, novator, oldtimer, operniki, panzerwaffe, pein, procesor, raykan, Ripanjac, robertino, ruso, Simon simonović, Sirius, su27, uruk, vathra, vladas87, ZetaMan, Žoržo, šumar bk2