Poslao: 04 Okt 2014 09:54
|
offline
- tomislav91
- Počasni građanin
- 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!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 04 Okt 2014 10:48
|
offline
- tomislav91
- Počasni građanin
- 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();
}
|
|
|
|
Poslao: 04 Okt 2014 11:47
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
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š. 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.
|
|
|
|
|
|
|
Poslao: 04 Okt 2014 13:22
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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 = "...";
//...
|
|
|
|
Poslao: 04 Okt 2014 15:08
|
offline
- tomislav91
- Počasni građanin
- 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....
|
|
|
|
Poslao: 04 Okt 2014 15:55
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Au, čoveče, koliko ti umeš da zakomplikuješ nešto tako jednostavno.
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.
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.
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.
|
|
|
|