dugme za random unos u bazu podataka c#

1

dugme za random unos u bazu podataka c#

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

Hteo bih na osnovu prethodnih tema i podatkaa sto tamo ima, da napravim jedno dugme koje ce random uneti korisnika i dogadjaj u bazu, dok cu ja staviti data pickere(od-do) sto se tice vremena, kasnije bih i to stavio da bude random, tj ako stavim raspon datuma da izmedju tih datuma stavi random u bazu.

zanima me kako da krenem, odakle, gledao sam po internetu i nisam nasao nigde za random unos u bazu podataka, samo iz nje.
Znaci imam dva combo-a sa podacima nekim i dva data pickera i to da mi unese u bazu random u odredjene kolone u bazu.

Odradio sam rucno, znaci izaberem iz oba comboa i iz oba data pickera i on to lepo stavi u bazu, ali kako bih random to resio sa recimo jednim textBox-om gde upisujem recimo broj, i ako stavim na primer 4, on ce 4 random unosa ubaciti u bazu.


Hvala! Smile Ziveli



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š

Imaš ovakvu formu:



Question

Ako da, sve potrebne podatke imaš u programu. Šta radi Random dugme? Jednostavno uzme neki random red i jednog ComboBoxa i random red iz drugog ComboBoxa i to je to.



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

Pa da, ali to treba u query da ubacim ako dobro kontam, jer hocu da ubaci random deo, a imam samo dugme da ubaci to sto izaberem

 private void btnSave_Click(object sender, EventArgs e)         {                       string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";                                   OleDbCommand command1 = new OleDbCommand();             command1.Connection = connection;             command1.CommandText = query;             OleDbDataReader reader;             try             {                 connection.Open();                 reader = command1.ExecuteReader();                 MessageBox.Show("saved");                 while (reader.Read())                 {                 }             }             catch (Exception ex1)             {                 MessageBox.Show("error" + ex1);             }             connection.Close();         }

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

Čekaj, čekaj, druže. Naredbe modifikacije nisu upiti. Dakle, nije ispravno da tekst komande imenuješ sa query. Ono, nema veze kako se zove promenljiva, radiće svakako. No, poenta je da (naučimo da) radimo nešto ispravno. Very Happy

Obzirom da komanda za unos nije upit, ona se izvršava kao takva, sa ExecuteNonQuery().

Šta sada uraditi za random? Pazi, tebi su u programu dostupni svi podaci. Sve je tu i samo tebe čeka da ga pročitaš. Very Happy Dakle, treba naći način da pročitaš n-ti red iz ComboBox-a. Kada to nađeš, kao indeks reda (n) ubaciš neki random broj (generišeš ga) i to je sve.

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

pa ne mogu da nadjem nacin kako da izvucem taj n ti deo...

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

Uh bre, Tomo! Very Happy

Najjednostavnije rešenje (možda malo i tupavo) je da programski selektuješ random red. Kako? Tako što postaviš indeks selektovanog reda ručno: ComboBox1.SelectedIndex = n; a zatim pročitaš tekst. Very Happy

Mislim da se i direktno može čitati red sa određenim indeksom, ali se ne sećam sintakse. Pogledaću kasnije ako stignem pa javljam.

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

Citat:
ComboBox1.SelectedIndex = n; a zatim pročitaš tekst


Uh Very Happy pa ja nikad nisam radio sa c# Very Happy tako da Very Happy
ne kontam bas ovo sto si napisao Very Happy

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

Vidim. Vidim i da je način na koji to radiš loš.

Umeš da generišeš random broj od 0 do n-1? n je u ovom slučaju broj različitih korisnika, odnosno različitih događaja. Kada generišeš broj samo ga dodeli propertiju SelectedIndex kao što je gore navedeno. To uradi pre kreiranja stringa za tekst komande i to je sve. Ovako nešto: Random r = new Random(); comboBox1.SelectedIndex = r.Next(m); //Max range, m je broj korisnika comboBox2.SelectedIndex = r.Next(n); //n je broj događaja string textKomande = "..."; //...

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

a to m,n? to treba nekako da generisem, to je kao promenljiva, zar ne?

ovako bi nekako resio da combo box1 bude izabran random kada pritisnem dugme

private void button1_Click(object sender, EventArgs e)         {             Random random = new Random();             int newSelectedIndex = comboBox1.SelectedIndex;             while (newSelectedIndex == comboBox1.SelectedIndex)             {                 newSelectedIndex = random.Next(0, comboBox1.Items.Count);             }             comboBox1.SelectedIndex = newSelectedIndex;         }

sad samo kako to impelemtirati u query da on tako random unosi u bazu....

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

Au, čoveče, koliko ti umeš da zakomplikuješ nešto tako jednostavno. Very Happy
tomislav91 ::a to m,n? to treba nekako da generisem, to je kao promenljiva, zar ne?Piše sve u komentarima iznad, hajde skoncentriši se malo. Wink
tomislav91 ::sad samo kako to impelemtirati u query da on tako random unosi u bazu....I ovo piše: vasa.93 ::To uradi pre kreiranja stringa za tekst komande i to je sve. Ovako nešto: Random r = new Random(); comboBox1.SelectedIndex = r.Next(m); //Max range, m je broj korisnika comboBox2.SelectedIndex = r.Next(n); //n je broj događaja string textKomande = "..."; //ovo je ekvivalentno tvom "string query = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo)...", nadalje ide kao što jeste //... Evo kako to treba da izgleda ukratko: private void button1_Click(object sender, EventArgs e)         {             int staro1 = comboBox1.SelectedIndex;             int staro2 = comboBox2.SelectedIndex;             comboBox1.SelectedIndex = (new Random()).Next(comboBox1.Items.Count);             comboBox2.SelectedIndex = (new Random()).Next(comboBox2.Items.Count);             string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";             OleDbCommand command1 = new OleDbCommand();             command1.Connection = connection;             command1.CommandText = tekstKomande;             //...             comboBox1.SelectedIndex = staro1;             comboBox2.SelectedIndex = staro2;         }
Na kraju, kao što rekoh da ću da pogledam... tomislav91 ::pa ne mogu da nadjem nacin kako da izvucem taj n ti deo... http://lmgtfy.com/?q=c%23+combobox+read+item+passing+index
Prvi link: http://www.codeproject.com/Questions/357445/how-to.....ing-its-in
Dakle, imaš sve što ti je potrebno u 10 sekundi. Wink

Kao što vidiš, možeš da dobiješ vrednost sa određenog indeksa bez promene selekcije i to ovako: string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.Items[(new Random()).Next(comboBox1.Items.Count)].ToString() + "','" + this.comboBox1.Items[(new Random()).Next(comboBox1.Items.Count)].ToString() + "','" + this.dtpOd.Value.Date + "','" + this.dtpDo.Value.Date + "') ;";
Hajde da pojasnimo detalje: this.comboBox1.Items[(new Random()).Next(comboBox1.Items.Count)].ToString()- comboBox1.Items.Count predstavlja broj redova u ComboBoxu, tj. broj korisnika, odnosno događaja. Dakle, to je ono m ili n.

- (new Random()).Next(n) vraća jedan random broj od 0 do n-1.

- this.comboBox1.Items[random].ToString() vraća tekst reda sa random indeksom, tj. baš ono što tebi treba.

Ko je trenutno na forumu
 

Ukupno su 1211 korisnika na forumu :: 51 registrovanih, 8 sakrivenih i 1152 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: 357magnum, Acivi, adamantadv, ajo baba, armor, Atomski čoban, bladesu, bokisha253, Brana01, cinoeye, darcaud, dekan.m, Dimitrise93, djboj, dragoljub11987, dule10savic, flash12, Futurama, Georgius, goxin, Kaplar2, Karla, Kubovac, Lieutenant, Metanoja, mgolub, mikrimaus, milenko crazy north, milimoj, Milos ZA, mkukoleca, moldway, ozzy, Panter, panzerwaffe, pein, Rakenica, raketaš, robertino, royst33, ruger357, sombrero, stalja, suton, Tragač, tubular, Wrangler, zdrebac, Žrnov, žeks62, 1107