Professional Documents
Culture Documents
Локалитети се налазе близу градова. Потребно је креирати табелу у којој би се чували подаци о имену
града, његовом позивном броју, поштанском броју и броју становника.
Обзиром да су се границе Србије мењале кроз историју и да и ван граница наше земље можемо наћи
антиквитете везане за наш народ потребно је чувати податке и о држави у којој се град налази, као и
позивни број за државу и њен бој становника.
Креирати десктоп апликацију која ће омогућити рад са постојећом базом. Структура менија дата је на
следећим сликама:
Уношење података о типу антиквитета обавља се преко форме чији је изглед дат на слици:
Ставка менија Po arheologu, приказује називе локалитета, координате његове географске дужине и
ширине, за оне локалитете у чијем истраживању је учествовао тражени археолог.
Повезујемо NajblziGrad из табеле Lokalitet са GradID из табеле Grad. При повезивању морамо у табели
Grad да преправимо у пољу GradID Field Size из Double у Intiger.
OleDbConnection konekcija;
OleDbCommand komanda;
DataTable dt;
OleDbDataAdapter da;
void Konekcija()
{
konekcija = new OleDbConnection();
konekcija.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=|DataDirectory|\Antikviteti i lokacije - osnovno.accdb";
Konekcija();
string insert = "INSERT INTO
TIP_ANTIKVITETA(TipAntikvitetaID,Tip)";
string values = "VALUES (@TipAntikvitetaID,@Tip)";
komanda.Parameters.AddWithValue("@TipAntikvitetaID",
textBox1.Text);
komanda.Parameters.AddWithValue("@Tip",
textBox2.Text);
komanda.CommandText = string.Format(insert + " " +
values);
try
{
konekcija.Open();
komanda.ExecuteNonQuery();
MessageBox.Show("Podatak dodat u bazu");
konekcija.Close();
}
catch
{
MessageBox.Show("Greska");
textBox1.Text = textBox2.Text = "";
textBox1.Focus();
}
}
else
{
MessageBox.Show("Podatak postoji u bazi");
textBox1.Text = textBox2.Text = "";
textBox1.Focus();
}
}
else
{
MessageBox.Show("Morate popuniti vrednosti");
textBox1.Text = textBox2.Text = "";
textBox1.Focus();
}
if (textBox1.Text != string.Empty)
{
Konekcija();
komanda.CommandText = string.Format("DELETE FROM
TIP_ANTIKVITETA WHERE TipAntikvitetaID=@TipAntikvitetaID");
komanda.Parameters.AddWithValue("@TipAntikvitetaID",
textBox1.Text);
try
{
konekcija.Open();
komanda.ExecuteNonQuery();
MessageBox.Show("Podatak obrisan iz baze");
konekcija.Close();
}
catch
{
MessageBox.Show("Greska");
}
}
else
MessageBox.Show("Morate popuniti");
}
}
Форма Периоди (слично као Антиквитети)
OleDbConnection konekcija;
OleDbCommand komanda;
DataTable dt;
OleDbDataAdapter da;
void Konekcija()
{
konekcija = new OleDbConnection();
konekcija.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=|DataDirectory|\Antikviteti i lokacije - osnovno.accdb";
komanda = new OleDbCommand();
komanda.Connection = konekcija;
//konekcija.Open();
}
//metoda za konekciju na bazu PERIOD
void Konekcija_na_PERIOD()
{
Konekcija();
komanda.CommandText = "SELECT * FROM PERIOD";
dt = new DataTable();
da = new OleDbDataAdapter();
da.SelectCommand = komanda;
da.Fill(dt);
konekcija.Open();
}
public bool postoji_u_bazi()
{
bool postoji = false;
Konekcija_na_PERIOD();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (textBox1.Text == dt.Rows[i]["PeriodID"].ToString())
{
postoji = true;
break;
}
}
konekcija.Close();
return postoji;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != string.Empty && textBox2.Text !=
string.Empty)
{
if (postoji_u_bazi() == false)
{
Konekcija();
string insert = "INSERT INTO PERIOD(PeriodID,Period)";
string values = "VALUES(@PeriodID,@Period)";
komanda.Parameters.AddWithValue("@PeriodID",
textBox1.Text);
komanda.Parameters.AddWithValue("@Period",
textBox2.Text);
catch
{
MessageBox.Show("Greska");
}
}
else
{
MessageBox.Show("Podatak postoji u bazi");
textBox1.Text = textBox2.Text = "";
textBox1.Focus();
}
}
else
{
MessageBox.Show("Morate popuniti podatke");
textBox1.Text = textBox2.Text = "";
textBox1.Focus();
}
}
OleDbConnection konekcija;
OleDbCommand komanda;
DataTable dt;
OleDbDataAdapter da;
void Konekcija()
{
konekcija = new OleDbConnection();
konekcija.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=|DataDirectory|\Antikviteti i lokacije - osnovno.accdb";
button2.Enabled = true;
if (textBox1.Text != string.Empty)
{
Konekcija();
dt = new DataTable();
da = new OleDbDataAdapter();
da.SelectCommand = komanda;
da.Fill(dt);
dataGridView1.DataSource = dt;
konekcija.Close();
}
else
MessageBox.Show("Morate popuniti");
}
catch
{
MessageBox.Show("Greska");
}
}
//догађај Цртање
duzina =
Convert.ToString(dt.Rows[id]["KoordinateDuzina"]);
sirina =
Convert.ToString(dt.Rows[id]["KoordinateSirina"]);
string[] du = duzina.Split(' ');
string[] si = sirina.Split(' ');
double x = 0;
double y = 0;
if (du[1] == "istočno")
{
x = Convert.ToDouble(du[0]);
}
else
{
x = -Convert.ToDouble(du[0]);
}
if (si[1] == "severno")
{
y = -Convert.ToDouble(si[0]);
}
else
{
y = Convert.ToDouble(si[0]);
}
Pen olovka = new Pen(Color.Red, 3);
Graphics g = pictureBox1.CreateGraphics();
g.Clear(Color.White);
g.DrawRectangle(olovka, 0, 0, pictureBox1.Width - 1,
pictureBox1.Height - 1);
g.DrawLine(olovka, pictureBox1.Width / 2, 0,
pictureBox1.Width / 2, pictureBox1.Height);
g.DrawLine(olovka, 0, pictureBox1.Height / 2,
pictureBox1.Width, pictureBox1.Height / 2);
g.DrawEllipse(olovka, pictureBox1.Width / 2 + ((int)x -
5), pictureBox1.Height / 2 + ((int)y - 5), 5, 5);
}
catch
{
MessageBox.Show("Greska");
}
}
//претходним кодом узимамо вредности из базе и постављамо их у променљиве duzina и
sirina.
// Даље пошто се вредности duzina и sirina састоје из два дела (вредности и скраћенице
правца) морамо да их поделимо:
Променљива du представља низ у коме први елемент представља бројчану вредност, а
други скраћеницу праваца (SGS – север , JGD- југ, ZGD – запад, IGD- исток). Исти
принцип је код променљива si.
int ID;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
ID = e.RowIndex;
}
Форма По антиквитету
OleDbConnection konekcija;
OleDbCommand komanda;
DataTable dt;
OleDbDataAdapter da;
string duzina, sirina;
void Konekcija()
{
konekcija = new OleDbConnection();
konekcija.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=|DataDirectory|\Antikviteti i lokacije - osnovno.accdb";
konekcija.Open();
komanda = new OleDbCommand();
komanda.Connection = konekcija;
}
//прикажи податке
if (textBox1.Text != string.Empty)
{
button2.Enabled = true;
Konekcija();
duzina =
Convert.ToString(dt.Rows[id]["KoordinateDuzina"]);
sirina =
Convert.ToString(dt.Rows[id]["KoordinateSirina"]);
string[] du = duzina.Split(' ');
string[] si = sirina.Split(' ');
double x = 0;
double y = 0;
if (du[1] == "istočno")
{
x = Convert.ToDouble(du[0]);
}
else
{
x = -Convert.ToDouble(du[0]);
}
if (si[1] == "severno")
{
y = -Convert.ToDouble(si[0]);
}
else
{
y = Convert.ToDouble(si[0]);
}
Pen olovka = new Pen(Color.Red, 3);
Graphics g = pictureBox1.CreateGraphics();
g.Clear(Color.White);
g.DrawRectangle(olovka, 0, 0, pictureBox1.Width - 1,
pictureBox1.Height - 1);
g.DrawLine(olovka, pictureBox1.Width / 2, 0,
pictureBox1.Width / 2, pictureBox1.Height);
g.DrawLine(olovka, 0, pictureBox1.Height / 2,
pictureBox1.Width, pictureBox1.Height / 2);
g.DrawEllipse(olovka, pictureBox1.Width / 2 + ((int)x -
5), pictureBox1.Height / 2 + ((int)y - 5), 5, 5);
}
catch
{
MessageBox.Show("Greska");
}
//бирамо вредности из Грида
int id;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
id = e.RowIndex;