Poslao: 08 Okt 2014 11:12
|
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
|
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.
|
|
Poslao: 08 Okt 2014 11:19
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
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);
}
}
|
|
|
|
|
Poslao: 08 Okt 2014 12:01
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
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?
|
|
|
|
Poslao: 08 Okt 2014 12:16
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Zezaš ti nas malo, a? 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).
|
|
|
|
|
Poslao: 08 Okt 2014 12:23
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
|
|
|
|
Poslao: 08 Okt 2014 12:55
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
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?
|
|
|
|
Poslao: 08 Okt 2014 13:15
|
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
|
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;
|
|
|
|
Poslao: 08 Okt 2014 13:32
|
offline
- tomislav91
- Počasni građanin
- Pridružio: 31 Maj 2008
- Poruke: 885
|
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();
}
}
|
|
|
|