Citat:
plague:
Jesi prosao kroz debug da vidis tacno sta se desava?
Greske ima sigurno, nego si je obradio preko Exceptiona. Verovatno nisi uzeo u obzir situaciju koja ti se desava koju igrom slucaja obradjuje Catch blok.
Znaci kada ti program "zablokira" i kada klik ne reaguje, stavi break na event koji ne reaguje i prati tok programa.
[Offtopic]
Ne znam da li si video, ali listView1.SelectedItems[0].Index ce ti vratiti index elementa unutar liste. Ako imas slucaj da imas u bazi zapise sa:
ID = 1, ID = 2, ID = 3,...
Kada ih prikazes u listi, i kliknes na npr 2. element, listView1.SelectedItems[0].Index ce ti vratiti 1. A ti neces da brises prvi zapis iz baze, nego drugi, tacnije onaj sto ima ID = 2. Razumes na sta mislim?
[/Offtopic]
Debug i ne uđe u blok button-a, samo se vrati korak nazad.
Ne znam, pogledao sam ceo kod i nema praznog catch bloka, a dugme ne blokira jednostavno ne radi, kao kad ga samo staviš na formu..
Znam to, dovoljno je ispred Index staviti +1
Evo ceo kog pa vidi ako te ne mrzi...
klasa Konekcija:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ZID2_Program
{
public class Konekcija
{
SqlConnection con;
public SqlConnection KonekcioniString()
{
con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=zid2;Integrated Security=True");
return con; //vraca objekat klase SqlConnection sa vrednosu konekcionog stringa baze magacin
}
public void OtvoriKonekciju()
{
if (con.State == ConnectionState.Closed)
{
con.Open(); //ako je konekcija zatvorena ti je otvori
}
}
public void ZatvoriKonekciju()
{
if (con.State == ConnectionState.Open)
{
con.Close(); //u slucaju da je konekcija otvorena ti je zatvori
}
}
}
}
klasa Radnja:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ZID2_Program
{
public class Radnja
{
public int id;
public string sifra_robe;
public string naziv_robe;
public int Id
{
get { return id; } //vrati vrednost sifre robe
set { id = value; } //sifra robe ce biti jednaka vrednoscu unesenoj u textbox1
}
public string Sifra_robe
{
get { return sifra_robe; }
set { sifra_robe = value; }
}
public string Naziv_robe
{
get { return naziv_robe; } //vrati vrednost naziva robe
set { naziv_robe = value; } //naziv robe ce biti jednaka vrednoscu unesenoj u textbox2
}
}
}
klasa Magacin:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ZID2_Program
{
public class Magacin
{
public int id;
public string sifra_robe;
public string naziv_robe;
public int Id
{
get { return id; } //vrati vrednost sifre robe
set { id = value; } //sifra robe ce biti jednaka vrednoscu unesenoj u textbox1
}
public string Sifra_robe
{
get { return sifra_robe; }
set { sifra_robe = value; }
}
public string Naziv_robe
{
get { return naziv_robe; } //vrati vrednost naziva robe
set { naziv_robe = value; } //naziv robe ce biti jednaka vrednoscu unesenoj u textbox2
}
}
}
klasa Radnja_Provider
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace ZID2_Program
{
public class Radnja_Provider
{
Konekcija kon;
Radnja r; //objekat Magacina
public DataTable OcitajRadnju()
{
try
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
r = new Radnja();
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandText = "select * from radnja order by sifra_robe";
kon.OtvoriKonekciju();
da.SelectCommand = kom;
da.Fill(dt);
return dt;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
public void Ubaci_robu_u_Radnju(Radnja r)
{
try
{
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandType = CommandType.Text; //radi se o tekstualnom tipu komande
kom.CommandText = "insert into radnja(sifra_robe,naziv_robe) values(@sifra_robe,@naziv_robe)";
kom.Parameters.AddWithValue("@sifra_robe", r.sifra_robe);
kom.Parameters.AddWithValue("@naziv_robe", r.naziv_robe);
kon.OtvoriKonekciju();
kom.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
kon.ZatvoriKonekciju();
}
}
public void Izbaci_Robu_iz_radnje(int ID)
{
try
{
Magacin m = new Magacin();
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandType = CommandType.Text; //radi se o tekstualnom tipu komande
kom.CommandText = "DELETE FROM radnja WHERE id = @id";
kom.Parameters.AddWithValue("@id", m.id);
kom.Parameters["@id"].Value = ID;
kon.OtvoriKonekciju();
kom.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
kon.ZatvoriKonekciju();
}
}
}
}
klasa Magacin_Provider
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace ZID2_Program
{
public class Magacin_Provider
{
Konekcija kon;
Magacin m; //objekat Magacina
public DataTable OcitajMagacin()
{
try
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
m = new Magacin();
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandText = "select * from magacin";
kon.OtvoriKonekciju();
da.SelectCommand = kom;
da.Fill(dt);
return dt;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
public void Ubaci_robu_u_Magacin(Magacin m)
{
try
{
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandType = CommandType.Text; //radi se o tekstualnom tipu komande
kom.CommandText = "INSERT INTO magacin(sifra_robe,naziv_robe) VALUES(@sifra_robe,@naziv_robe)";
kom.Parameters.AddWithValue("@sifra_robe", m.sifra_robe); //unesi u kolonu sifra robe sa podrazumevanom vrednoscu iz textbox1
kom.Parameters.AddWithValue("@naziv_robe", m.naziv_robe);
kon.OtvoriKonekciju();//otvori konekciju
kom.ExecuteNonQuery(); //ubaci u bazu
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
kon.ZatvoriKonekciju(); // u svakom slucaju zatvori konekciju
}
}
public void Izbaci_Robu_iz_magacina(int ID)
{
try
{
Magacin m = new Magacin();
kon = new Konekcija(); //objekat konekcije
SqlCommand kom = new SqlCommand(); //objekat komande
kom.Connection = kon.KonekcioniString();
kom.CommandType = CommandType.Text; //radi se o tekstualnom tipu komande
kom.CommandText = "DELETE FROM magacin WHERE sifra_robe = @sifra_robe";
kom.Parameters.AddWithValue("@sifra_robe", m.id);
kom.Parameters["@sifra_robe"].Value = ID;
kon.OtvoriKonekciju();
kom.ExecuteNonQuery();
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
kon.ZatvoriKonekciju();
}
}
}
}
Forma
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ZID2_Program
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Radnja rx = new Radnja();
Radnja_Provider rp = new Radnja_Provider();
Magacin m = new Magacin();
Magacin_Provider mp = new Magacin_Provider();
Konekcija kon = new Konekcija();
int ID;
void OsveziRadnju()
{
try
{
foreach(DataRow r in rp.OcitajRadnju().Rows)
{
ListViewItem lvi = new ListViewItem(r["sifra_robe"].ToString());
lvi.SubItems.Add(r["naziv_robe"].ToString());
listView1.Items.Add(lvi);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void OsveziMagacin()
{
try
{
foreach (DataRow r in mp.OcitajMagacin().Rows)
{
ListViewItem lvi = new ListViewItem(r["sifra_robe"].ToString());
lvi.SubItems.Add(r["naziv_robe"].ToString());
listView2.Items.Add(lvi);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void Ubaci_u_Radnju()
{
rx.sifra_robe = textBox1.Text;
rx.naziv_robe = textBox2.Text;
rp.Ubaci_robu_u_Radnju(rx);
}
void Ubaci_u_Magacin()
{
m.sifra_robe = textBox1.Text;
m.naziv_robe = textBox2.Text;
mp.Ubaci_robu_u_Magacin(m);
}
void Izbaci_iz_Radnje()
{
try
{
ID = Convert.ToInt32(listView1.SelectedItems[0].Index);
}
catch
{
throw;
}
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
OsveziRadnju();
OsveziMagacin();
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
Ubaci_u_Radnju();
OsveziRadnju();
}
private void button2_Click(object sender, EventArgs e)
{
listView2.Items.Clear();
Ubaci_u_Magacin();
OsveziMagacin();
}
private void button3_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
rp.Izbaci_Robu_iz_radnje(ID);
OsveziRadnju();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
Izbaci_iz_Radnje();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 10000;
OsveziRadnju();
OsveziMagacin();
}
}
}