zasto ne upisuje u bazu mesece,dane i sate dobro?

5

zasto ne upisuje u bazu mesece,dane i sate dobro?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Tako... obrati samo pažnju da zatvoriš reader kad završiš s njim.
Što se tiče greške, nešto očigledno radiš pogrešno kod random unosa. Ili ne izabereš ništa u comboboxu, ili radiš nešto čudno s podacima u comboboxu kad radiš taj random unos.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Huskar
  • strukovni inzenjer elektrotehnike i racunarstva
  • Pridružio: 31 Maj 2008
  • Poruke: 881
  • Gde živiš: Kula

da stavim reader.close(); pre connection.close();?

pa ne znam, on je radio normalno, samo sam ubacio taj deo koda koji je bio kod rucnog unosa, tj taj query

  private void button1_Click(object sender, EventArgs e)         {             if (String.IsNullOrEmpty(txtBroj.Text))             {                 MessageBox.Show("Unesite broj random generisanih unosa prvo!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);                             }             else             {                 int intTextBox;                 intTextBox = Convert.ToInt32(txtBroj.Text);                 intTextBox = int.Parse(txtBroj.Text);                 for (int i = 0; i < intTextBox + 1; i++)                 {                     int staro1 = comboBox1.SelectedIndex;                     int staro2 = comboBox2.SelectedIndex;                     staro1 = (rand.Next(comboBox1.Items.Count));                   staro2 = (rand.Next(comboBox2.Items.Count));                     double msDiff = dtpDo.Value.Date.Subtract(dtpOd.Value.Date).TotalSeconds;                     double randNo = rand.Next(0, (int)(msDiff + 1));                     DateTime dateRand = dtpOd.Value.Date.AddSeconds(randNo);                     DateTime s = dateRand;                     string tekstKomande = "insert into Tomislav (korisnik_id, dogadjaj_id, Datum) values('" + (comboBox1.SelectedItem as ComboBoxItem).Value.ToString() + "','" + (comboBox2.SelectedItem as ComboBoxItem).Value.ToString() + "','" + s+ "') ;";                     OleDbCommand command1 = new OleDbCommand();                     command1.Connection = connection;                     command1.CommandText = tekstKomande;                     OleDbDataReader reader;                     try                     {                         connection.Open();                         reader = command1.ExecuteReader();                         while (reader.Read())                         {                         }                     }                     catch (Exception ex1)                     {                         MessageBox.Show("Greska!"+ex1, "Debug Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);                         this.Close();                     }                     connection.Close();                     comboBox1.SelectedIndex = staro1;                     comboBox2.SelectedIndex = staro2;                                     }                 MessageBox.Show("Saved", "Upis podataka", MessageBoxButtons.OK, MessageBoxIcon.Information);             }         }



online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14266
  • Gde živiš: Niš

Napisano: 08 Okt 2014 11:23

I šta ti je ovde random osim datuma, majke ti? Very Happy

Dopuna: 08 Okt 2014 11:27

Dakle, ništa nije selektovano i to je greška. Referenca na selektovan objekat je null i zbog toga ne možeš da pročitaš Value jer ne postoji.

Šta si pokušao sa prve četri linije u for petlji?

Dopuna: 08 Okt 2014 11:34

Slobodno povezuj malo ono što ti se piše. Wink

Umesto (comboBox1.SelectedItem as ComboBoxItem).Value.ToString() treba nešto ovako da stoji: (comboBox1.Items[(new Random()).Next(comboBox1.Items.Count)] as ComboBoxItem).Value.ToString()

Ako neće ovako, onda ide ono gde pamtiš stari indeks sektovanog, postavljaš random, odradiš unos i vraćaš stari indeks.

Dopuna: 08 Okt 2014 11:37

Svakako, ovo tvoje je ustvari ovaj drugi način, i radiće kad središ ovu zbrku sa prve četiri linije u for petlji...

offline
  • Huskar
  • strukovni inzenjer elektrotehnike i racunarstva
  • Pridružio: 31 Maj 2008
  • Poruke: 881
  • Gde živiš: Kula

Napisano: 08 Okt 2014 11:59

Evo ovaj kod mi je upisao random sve u bazu
 private void button1_Click(object sender, EventArgs e)         {             if (String.IsNullOrEmpty(txtBroj.Text))             {                 MessageBox.Show("Unesite broj random generisanih unosa prvo!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);                             }             else             {                 int intTextBox;                 intTextBox = Convert.ToInt32(txtBroj.Text);                 intTextBox = int.Parse(txtBroj.Text);                 for (int i = 0; i < intTextBox + 1; i++)                 {                                         double msDiff = dtpDo.Value.Date.Subtract(dtpOd.Value.Date).TotalSeconds;                     double randNo = rand.Next(0, (int)(msDiff + 1));                     DateTime dateRand = dtpOd.Value.Date.AddSeconds(randNo);                     DateTime s = dateRand;                     string tekstKomande = "insert into Tomislav (korisnik_id, dogadjaj_id, Datum) values('" + (comboBox1.Items[(new Random()).Next(comboBox1.Items.Count)] as ComboBoxItem).Value.ToString() + "','" + (comboBox2.Items[(new Random()).Next(comboBox2.Items.Count)] as ComboBoxItem).Value.ToString() + "','" + s + "') ;";                     OleDbCommand command1 = new OleDbCommand();                     command1.Connection = connection;                     command1.CommandText = tekstKomande;                     OleDbDataReader reader;                     try                     {                         connection.Open();                         reader = command1.ExecuteReader();                         while (reader.Read())                         {                         }                     }                     catch (Exception ex1)                     {                         MessageBox.Show("Greska!"+ex1, "Debug Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);                         this.Close();                     }                     connection.Close();                                                       }                 MessageBox.Show("Saved", "Upis podataka", MessageBoxButtons.OK, MessageBoxIcon.Information);             }         }



Dopuna: 08 Okt 2014 12:01

E sad u izvestaju ne stoji, nista, iako sam stavio u kodu
private void Izvestaj_Load(object sender, EventArgs e)         {             connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Tomy\Desktop\zadatak2\zadatak2\fedek_OldVersion(2002-2003).mdb;User Id=admin;Password=;";             dt = new DataTable();             OleDbDataAdapter sda = new OleDbDataAdapter("SELECT korisnik_id.korisnik, dogadjaj_id.dogadjaj, Datum from Tomislav",connection);             sda.Fill(dt);

On bi trebao da mi ustvari iscita samo ta imena, ali kako kada je sad to id?

online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14266
  • Gde živiš: Niš

Zezaš ti nas malo, a? Wink I to sam ti napisao na prošloj strani: vasa.93 :: Međutim, ako ti treba informacija o akciji (nazovimo je tako, misli se na događaj koji je izvršio korisnik), tu informaciju tražiš u spoju prve dve tabele. Kako spajaš? Tako što koristiš tabelu Tomislav kao posrednika u spoju (pošto je u pitanju MxN spoj, no da ne komplikujemoy to ćeš već razjasniti). Pored toga, tabela Tomislav čuva i sve informacije vezane za akciju (datum kod tebe). Dakle, spoj koristiš samo onda kada su ti potrebne sve informacije o akciju (recimo kod prikaza svih akcija, kao u formi na prethodnoj strani).

offline
  • Huskar
  • strukovni inzenjer elektrotehnike i racunarstva
  • Pridružio: 31 Maj 2008
  • Poruke: 881
  • Gde živiš: Kula

Znam, treba jos da provalim kako to :DDDDD

online
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14266
  • Gde živiš: Niš

Pa provalio si. Još si na prošloj strani napisao odgovarajuću komandu spoja. Sad samo to treba da prikažeš u dgv i to je to.

offline
  • Huskar
  • strukovni inzenjer elektrotehnike i racunarstva
  • Pridružio: 31 Maj 2008
  • Poruke: 881
  • Gde živiš: Kula

Napisano: 08 Okt 2014 12:40

hmm ne secam se, moracu da pogledam:D

Dopuna: 08 Okt 2014 12:52

SELECT Tomislav.korisnik_ID, Tomislav.dogadjaj_ID, Tomislav.Datum, dogadjaji.dogadjaj, korisnici.korisnik
FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID;
ovo zar ne?

Dopuna: 08 Okt 2014 12:55

Ali to sam uneo u bazu, kao query i sacuvao...time sam dobio da sam ih spojio, zar ne?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Mislim da ne shvataš baš kako sve to funkcioniše. Taj "query" si napravio u Access bazi. Sad moraš iz njega da čitaš podatke, ali nisam siguran da OleDbCommand to omogućava. Recimo da si query nazvao MojQuery, onda komanda treba da izgleda:
SELECT * FROM MojQuery
Ako to ne radi, onda moraš i u kodu da napišeš iste komande kao kad si kreirao query u Access-u:
SELECT Tomislav.korisnik_ID, Tomislav.dogadjaj_ID, Tomislav.Datum, dogadjaji.dogadjaj, korisnici.korisnik FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID;

offline
  • Huskar
  • strukovni inzenjer elektrotehnike i racunarstva
  • Pridružio: 31 Maj 2008
  • Poruke: 881
  • Gde živiš: Kula

stavio sam ovkao, jer ne zelim id da se prikaze
 OleDbDataAdapter sda = new OleDbDataAdapter("SELECT korisnici.korisnik,dogadjaji.dogadjaj,Tomislav.Datum FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID;", connection);
Ali mi sada filtriranje ne radi po datumu, tu biram izmedu dva datuma u datapickeru, dok takodje ne radi ako filtriram po imenu korisnika i dogadjaja, tu radi odmah kada upisujem

private void textBox3_TextChanged(object sender, EventArgs e)      {          DataView DW2 = new DataView(dt);          DW2.RowFilter = string.Format("dogadjaji.dogadjaj LIKE '%{0}%'", textBox3.Text);          dataGridView1.DataSource = DW2;      }      private void textBox1_TextChanged(object sender, EventArgs e)      {          DataView DW1 = new DataView(dt);          DW1.RowFilter = string.Format("korisnici.korisnik LIKE '%{0}%'", textBox1.Text);          dataGridView1.DataSource = DW1;      }      private void button1_Click(object sender, EventArgs e)      {          if(dateTimePicker1.Value>dateTimePicker2.Value)          {              MessageBox.Show("Takav opseg nije moguc. Datum Od mora biti veci od datuma Do.", "Opseg datuma", MessageBoxButtons.OK, MessageBoxIcon.Error);                  }          else{                    string query = "select korisnici.korisnik, dogadjaji.dogadjaj, Datum from Tomislav where Datum BETWEEN ? AND ?"; OleDbCommand cmd = new OleDbCommand(query, connection); cmd.Parameters.AddWithValue("SDate", DbType.DateTime).Value = dateTimePicker1.Value; cmd.Parameters.AddWithValue("EDate", DbType.DateTime).Value = dateTimePicker2.Value; DataSet ds = new DataSet(); OleDbDataAdapter da= new OleDbDataAdapter(); connection.Open(); da.SelectCommand = cmd; da.Fill(ds, "Tomislav"); dataGridView1.DataSource = ds.Tables[0]; connection.Close();      }   }

Ko je trenutno na forumu
 

Ukupno su 671 korisnika na forumu :: 33 registrovanih, 5 sakrivenih i 633 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 2967 - dana 31 Okt 2019 06:37

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., AK - 230, bieffe, Bloody, croato, dozorni, Duh sa sekirom, frenki1986, Futurama, galijot, goxin, greenmachine, kovacicbozo, Kubovac, KUZMAR, lacko2, Ljuba011, Markoni29, mean_machine, MegaVLAdaR, mihajlot2013, Milan A. Nikolic, milanstankovic087, ofbeyond, pein, Rakenica, robertino2, Rote Baron, royst33, vasa.93, VJ, Vlada1389, vlvl