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: 14809
  • 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: 14809
  • 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: 14809
  • 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: 14809
  • 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: 14809
  • 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 716 korisnika na forumu :: 43 registrovanih, 7 sakrivenih i 666 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: Apok, Ben Roj, bestguarder, bojankrstc, CikaKURE, dankisha, Dannyboy, Dimitrise93, djboj, DonRumataEstorski, Georgius, Griffon vulture, Hans Gajger, indja, Joja, ladro, ljuba, mercedesamg, milenko crazy north, milutin134, NoOneEver Dreams, pera12345, Petarvu, pristinski korpus, radoznao, rodoljub, S-lash, sasakrajina, Sir Budimir, slonic_tonic, solic, stegonosa, Stoilkovic, theNedjeljko, trajkoni018, Tvrtko I, vaso1, vathra, wizzardone, YU-UKI, zillbg, |_MeD_|, 125