Poslao: 05 Okt 2014 10:44
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
evo ga taj deo koda koji sluzi za to pretrvaranje, gde je problem??? Ako izaberem danasnji dan i pre 5 nedelja on u bazi upise (ako u textBoxu izaberem 10 recimo random unosa), sve mesece u godini, a ne samo u tom periodu, dok godine uradi kako treba, ako stavim pre 5 godina i sad, samo mesece, dane i sate nesto ne funkcionise?
//godina dtpOd
String aa = dtpOd.Value.Date.Year.ToString();
int aaInt;
aaInt = Convert.ToInt32(aa);
aaInt = int.Parse(aa);
//godina dtpDo
String bb = dtpDo.Value.Date.Year.ToString();
int bbInt;
bbInt = Convert.ToInt32(bb);
bbInt = int.Parse(bb);
//random godine
Random r1 = new Random();
int randomYear1 = r1.Next(aaInt, bbInt);
Random r2 = new Random();
int randomYear2 = r2.Next(randomYear1, bbInt);
//random mesec i dan za dtpOd
int randomMonthNr1 = r1.Next(1, 13);
int maxDayNr1 = DateTime.DaysInMonth(randomYear1, randomMonthNr1);
int randomDayNr1 = r1.Next(1, (maxDayNr1 + 1));
//random mesec i dan za dtpDo
int randomMonthNr2 = r2.Next(1, 13);
int maxDayNr2 = DateTime.DaysInMonth(randomYear2, randomMonthNr2);
int randomDayNr2 = r2.Next(1, (maxDayNr2 + 1));
//random korisnici i dogadjaji
comboBox1.SelectedIndex = (new Random()).Next(comboBox1.Items.Count);
comboBox2.SelectedIndex = (new Random()).Next(comboBox2.Items.Count);
//random vreme
Random sat1 = new Random();
Random minut1 = new Random();
Random sekund1 = new Random();
int randomSati1 = sat1.Next(0, 24);
int randomMinuti1 = minut1.Next(0, 59);
int randomSekunde1 = sekund1.Next(0, 59);
Random sat2 = new Random();
Random minut2 = new Random();
Random sekund2 = new Random();
int randomSati2 = sat2.Next(randomSati1, 24);
int randomMinuti2 = minut2.Next(randomMinuti1, 59);
int a = 1;
int randomSekunde2 = sekund2.Next(randomSekunde1 + a, 59); //randomSekunde1 + 1, 59 ; ovo +1 da bude razlike u vremenima ako se desi preklapanje
//upis stringova za random unos
string s1 = "" + maxDayNr1 + "." + randomMonthNr1 + "." + randomYear1 + " " + randomSati1 + ":" + randomMinuti1 + ":" + randomSekunde1;
string s2 = "" + maxDayNr2 + "." + randomMonthNr2 + "." + randomYear2 + " " + randomSati2 + ":" + randomMinuti2 + ":" + randomSekunde2;
string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + s1 + "','" + s2 + "') ;";
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 05 Okt 2014 12:07
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Predlazm ti da od datuma od i datuma do uzmes property Ticks i samo izaberes nekoliko slucajnih vrednosti izmedju ta dva broja. DateTime struktura ima konstruktor koji ce ti na osnovu dobijenog broja vratiti ispunjenu strukturu (dan, mesec, godina, sati, minuti, sekunde, milisekunde).
|
|
|
|
Poslao: 05 Okt 2014 12:44
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
hmmmmmm, pokusacu, nisam radio sa tim.
Znaci predlazes da sklonim to sto sam i godine pretvarao i sve, i da taj ticks ubacim?
Probao sam ovako nekako
if (dtpOd.Value.Ticks < dtpDo.Value.Ticks)
{
byte[] buffer = new byte[sizeof(long)];
Random random = new Random();
random.NextBytes(buffer);
long value1 = (Math.Abs(BitConverter.ToInt32(buffer, 0)) % (dtpDo.Value.Ticks - dtpOd.Value.Ticks)) + dtpOd.Value.Ticks;
random.NextBytes(buffer);
long value2 = (Math.Abs(BitConverter.ToInt32(buffer, 0)) % (dtpDo.Value.Ticks - dtpOd.Value.Ticks)) + dtpOd.Value.Ticks;
DateTime datumOd = new DateTime(Math.Min(value1, value2));
DateTime datumDo = new DateTime(Math.Max(value1, value2));
}
string tekstKomande = "insert into Tomislav (Korisnik, Dogadjaj, DatumOd, DatumDo) values('" + this.comboBox1.SelectedItem + "','" + this.comboBox2.SelectedItem + "','" + datumOd + "','" + datumDo + "') ;";
ali izbaci gresku da ne moze datumOd i datumDo da se ubaci u string(does not exist in current context)
|
|
|
|
Poslao: 05 Okt 2014 13:40
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Ne mozes da ga ubacis u string jer se datumOd i datumDo ne vide u bloku u kojem sklapas string. Definisani su u if bloku sto znaci da izvan tog bloka nisu vidljivi. Predlazem ti da jos malo proucis sintaksu C# jezika. Obrati posebnu paznju na vidljivost elemenata.
|
|
|
|
|
Poslao: 05 Okt 2014 15:11
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Neka promenljive datumOd i datumDo budu lokalne za funkciju, a u if bloku im samo dodeli vrednost. Dakle, samo promenljive deklariši pre if bloka i to je to.
Svakako, Srkijev predlog je na mestu skroz. Ovo su same osnove.
|
|
|
|
Poslao: 05 Okt 2014 16:28
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
vasa.93 ::Neka promenljive datumOd i datumDo budu lokalne za funkciju, a u if bloku im samo dodeli vrednost. Dakle, samo promenljive deklariši pre if bloka i to je to.
Svakako, Srkijev predlog je na mestu skroz. Ovo su same osnove.
pa deklarisao sam pre if-a , tj probao i nista, opet isto, ja ne mogu u queriju da ih pozovem.
|
|
|
|
Poslao: 06 Okt 2014 07:10
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Da li si siguran da dobijes istu gresku sad kad si definisao promenljive pre if-a? Pre bih rekao da sad imas neku drugu gresku u kojoj pise da ne mozes da spojis datum sa stringom.
|
|
|
|
Poslao: 06 Okt 2014 11:25
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Ako si deklarisao pre if bloka, ove linije moraš da izmeniš: DateTime datumOd = new DateTime(Math.Min(value1, value2));
DateTime datumDo = new DateTime(Math.Max(value1, value2)); Jesi li uradio to?
Kakvu grešku konkretno dobijaš?
|
|
|
|
Poslao: 06 Okt 2014 13:54
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
Napisano: 06 Okt 2014 12:00
Odustao sam od te ideje Pokusao sam ovako, da u textBox stavim random, i odradi, ali pogledajte sliku, ne stavi mi vreme, kako to da izvedem? Mislio sam da ovu dateRand promenljivu stavim u bazu...To odabira random datum izmedju ta 2...
double msDiff = dateTimePicker2.Value.Date.Subtract(dateTimePicker1.Value.Date).TotalSeconds;
double randNo = rand.Next(0, (int)(msDiff + 1));
DateTime dateRand = dateTimePicker1.Value.Date.AddSeconds(randNo);
textBox1.Text = dateRand.ToLongDateString();
Dopuna: 06 Okt 2014 13:54
Na kraju sam izbrisao jednu iz tabele kolonu, DatumOd i DatumDo, ostavio sam samo datum, da upise kad je korisnik radio radnju, a ne od kad do kad...
Sad samo filtriranje po datumu, (dva date pickera i kad odaberem range da mi izbaci u tom periodu koji korisnik je sta radio i naravno datum i vreme)....
Probao sam ovako nekako
string query = "select * from Tomislav where Datum BETWEEN @SDate AND @EDate";
OleDbCommand cmd = new OleDbCommand(query, connection);
cmd.Parameters.AddWithValue("@SDate", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@EDate", dateTimePicker2.Value);
DataSet ds = new DataSet();
OleDbDataAdapter da= new OleDbDataAdapter();
connection.Open();
da.SelectCommand = cmd;
da.Fill(ds, "Tomislav");
dataGridView1.DataSource = ds.Tables[0];
Ali izbaci gresku, tj exception,
I ponekad unosi nemaju vreme, zasto to?
|
|
|
|