using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; namespace autodoprava { /// /// MainForm - trida vytvari hlavni formular pro zadavani objednavek do databaze /// public partial class MainForm { // retezek pro pripojeni k databazi private string connectionString = "server=160.217.96.3;database=krhanj00;uid=student;pwd=student"; // spojeni public static SqlConnection mySqlConnection; // pokud je vstup validni private bool validni = false; // pro vsechny kontrolky, jestli jsou validni private bool[] validniKontrolky = new bool[7]; // rika se kterou objednavkou se prave pracuje private string beznaObjednavka; // seznamy private SortedDictionary seznamObjednavek = new SortedDictionary(); private SortedDictionary seznamZakazniku = new SortedDictionary(); private SortedDictionary seznamAut = new SortedDictionary(); private SortedDictionary seznamDispeceru = new SortedDictionary(); // promenne private int id_objednavka; private int zakaznik; private string odkud; private string kam; private string datumZadani; private string typZbozi; private string cena; private string auto; private string dispecer; /// /// Main() - vstupni metoda programu /// /// parametry prikazoveho radku [STAThread] public static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } /// /// MainForm() - konstruktor s inicializaci formulare /// public MainForm() { InitializeComponent(); // zakazeme tlacitko OK b_akce.Enabled = false; // rekneme ze jsou vsechny kontrolky nevalidni for(int i = 0; i < validniKontrolky.Length; i++) { validniKontrolky[i] = false; } // vycitime hlavni formular VycistitObjednavku(); // informujeme uzivatele Informovat("Vítejte ... Připojte se k databazi (Menu - Soubor - Připojit)"); } /// /// NacistObjednavky() - metoda nacte cisla objednavek do listBoxu /// public void NacistObjednavky() { // prikaz SQL string s = "SELECT id_objednavka FROM dbo.objednavka ORDER BY id_objednavka"; // vycistime seznam i listBox seznamObjednavek.Clear(); listBox.Items.Clear(); try { // spojeni SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); // pro vsechny nalezy for(int i = 0; mySqlDataReader.Read(); i++) { // vyplnime seznamy seznamObjednavek.Add(i,(int)mySqlDataReader["id_objednavka"]); listBox.Items.Add(mySqlDataReader["id_objednavka"]); } // uzavreme spojeni mySqlDataReader.Close(); mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování"); } // zmenime tlacitko b_akce.Text = "Vložit"; } /// /// ZobrazitObjednavku() - vyplni kontrolky udaji o objednavce, na kterou jsme klikli v listBoxu /// /// cislo objednavky /// vraci jestli bylo nacteni objednavky uspesne public bool ZobrazitObjednavku(string cislo) { // vycistime si kontrolky VycistitObjednavku(); try { // vytvorime prikaz int id = Int32.Parse(cislo); string s = "SELECT id_objednavka,zakaznik,odkud,kam,datum_zadani,typ_zbozi,cena,auto,dispecer FROM dbo.objednavka WHERE id_objednavka=" + id; // spojeni SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); // vsechna data predame kontrolkam while(mySqlDataReader.Read()) { tb_cisloObjednavky.Text = mySqlDataReader["id_objednavka"].ToString(); // jelikoz nechceme zobrazit id ale opravdovy nazev, tak pak udelame toto: cb_zakaznik.SelectedIndex = -1; for(int i = 0; i < seznamZakazniku.Count; i++) { if(seznamZakazniku[i] == (int)mySqlDataReader["zakaznik"]) { cb_zakaznik.SelectedIndex = i; } } // jinak: //cb_zakaznik.Text = mySqlDataReader["zakaznik"].ToString(); tb_odkud.Text = mySqlDataReader["odkud"].ToString(); tb_kam.Text = mySqlDataReader["kam"].ToString(); dtp_datumZadani.Text = mySqlDataReader["datum_zadani"].ToString(); cb_typZbozi.Text = mySqlDataReader["typ_zbozi"].ToString(); tb_cena.Text = mySqlDataReader["cena"].ToString(); cb_auto.SelectedIndex = -1; for(int i = 0; i < seznamAut.Count; i++) { if(seznamAut[i] == mySqlDataReader["auto"].ToString()) { cb_auto.SelectedIndex = i; } } //cb_auto.Text = mySqlDataReader["auto"].ToString(); cb_dispecer.SelectedIndex = -1; for(int i = 0; i < seznamDispeceru.Count; i++) { if(seznamDispeceru[i] == mySqlDataReader["dispecer"].ToString()) { cb_dispecer.SelectedIndex = i; } } //cb_dispecer.Text = mySqlDataReader["dispecer"].ToString(); } // uzavreme spojeni mySqlDataReader.Close(); mySqlConnection.Close(); // vratime true return true; } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se načtení objednávky!","Varování"); // pokud nejaka chyba, vracime false return false; } } /// /// VycistitObjednavku() - nastaveni kontrolek na defaultni hodnoty /// public void VycistitObjednavku() { tb_cisloObjednavky.Text = ""; cb_zakaznik.Text = ""; tb_odkud.Text = ""; tb_kam.Text = ""; dtp_datumZadani.Text = ""; cb_typZbozi.Text = cb_typZbozi.Items[0].ToString(); // typZbozi je jiz nasteven validni validniKontrolky[3] = true; tb_cena.Text = "0,00"; // cena je jiz nastevena validni validniKontrolky[4] = true; cb_auto.Text = ""; cb_dispecer.Text = ""; errorProviderObjednavka.Clear(); } /// /// NacistZakazniky() - nacte zakazniky do kontrolky /// public void NacistZakazniky() { string s = "SELECT id_zakaznik,nazev FROM dbo.zakaznik ORDER BY nazev"; seznamZakazniku.Clear(); cb_zakaznik.Items.Clear(); try { SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); for(int i = 0; mySqlDataReader.Read(); i++) { seznamZakazniku.Add(i,(int)mySqlDataReader["id_zakaznik"]); cb_zakaznik.Items.Add(mySqlDataReader["nazev"]); } mySqlDataReader.Close(); mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování"); } } /// /// NacistAuta() - nacte auta do kontrolky /// public void NacistAuta() { string s = "SELECT spz,typ FROM dbo.auto ORDER BY spz"; seznamAut.Clear(); cb_auto.Items.Clear(); try { SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); for(int i = 0; mySqlDataReader.Read(); i++) { seznamAut.Add(i, mySqlDataReader["spz"].ToString()); cb_auto.Items.Add(mySqlDataReader["spz"] + " " + mySqlDataReader["typ"]); } mySqlDataReader.Close(); mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování"); } } /// /// NacistDispecery() - nacte dispecery do kontrolky /// public void NacistDispecery() { string s = "SELECT rodne_cislo,jmeno,prijmeni FROM dbo.zamestnanec WHERE profese='dispečer' ORDER BY prijmeni"; seznamDispeceru.Clear(); cb_dispecer.Items.Clear(); try { SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); for(int i = 0; mySqlDataReader.Read(); i++) { seznamDispeceru.Add(i,mySqlDataReader["rodne_cislo"].ToString()); cb_dispecer.Items.Add(mySqlDataReader["jmeno"] + " " + mySqlDataReader["prijmeni"] + " " + mySqlDataReader["rodne_cislo"]); } mySqlDataReader.Close(); mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování"); } } /// /// OdstranitZaznam() - metoda se stara o odstranovani vybranych zaznamu /// public void OdstranitZaznam(string prikazSQL) { if(MessageBox.Show("Opravdu chcete smazat tento záznam?","Varování", MessageBoxButtons.OKCancel)==DialogResult.OK) { try { SqlCommand mySqlCommand = MainForm.mySqlConnection.CreateCommand(); mySqlCommand.CommandText = prikazSQL; MainForm.mySqlConnection.Open(); mySqlCommand.ExecuteNonQuery(); MainForm.mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se smazání záznamu z databáze!","Varování"); } } } #region tlacitka Storno x OK /// /// B_akceClick() - po kliknuti na Vlozit ci Editovat /// /// objekt /// udalost void B_akceClick(object sender, System.EventArgs e) { // predani hodnot z kontrolek promennym zakaznik = seznamZakazniku[cb_zakaznik.SelectedIndex]; odkud = tb_odkud.Text; kam = tb_kam.Text; datumZadani = dtp_datumZadani.Value.Day +"."+ dtp_datumZadani.Value.Month +"."+ dtp_datumZadani.Value.Year; typZbozi = cb_typZbozi.Text; cena = tb_cena.Text.Replace(',','.'); auto = seznamAut[cb_auto.SelectedIndex]; dispecer = seznamDispeceru[cb_dispecer.SelectedIndex]; // jestli jde o vlozeni nebo editaci string s = ""; if(b_akce.Text == "Vložit") { s = "INSERT INTO dbo.objednavka (zakaznik, odkud, kam, datum_zadani, typ_zbozi, cena, auto, dispecer) VALUES " + "("+zakaznik+",'"+odkud+"','"+kam+"','"+datumZadani+"','"+typZbozi+"',"+cena+",'"+auto+"','"+dispecer+"')"; } if(b_akce.Text == "Editovat") { id_objednavka = Int32.Parse(tb_cisloObjednavky.Text); s = "UPDATE dbo.objednavka SET zakaznik="+zakaznik+", odkud='"+odkud+"', kam='"+kam+"', datum_zadani='"+datumZadani+"', typ_zbozi='"+typZbozi+"', cena="+cena+", auto='"+auto+"', dispecer='"+dispecer+"' WHERE id_objednavka="+id_objednavka; } try { SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = s; mySqlConnection.Open(); mySqlCommand.ExecuteNonQuery(); mySqlConnection.Close(); } catch { mySqlConnection.Close(); MessageBox.Show("Nezdařilo se vložení záznamu do databáze!","Varování"); } // nastavime vse jako na zacatku VycistitObjednavku(); b_akce.Text = "Vložit"; b_akce.Enabled = false; NacistObjednavky(); } /// /// B_stornoClick() - po kliknuti na Storno /// /// objekt /// udalost void B_stornoClick(object sender, System.EventArgs e) { VycistitObjednavku(); listBox.SelectedIndex = -1; b_akce.Text = "Vložit"; b_akce.Enabled = false; } #endregion #region tlacitka Pridat x Odstranit /// /// B_pridatZakaznikaClick() - po kliknuti na Pridat (u zakaznika) /// /// objekt /// udalost void B_pridatZakaznikaClick(object sender, System.EventArgs e) { new ZakaznikForm().ShowDialog(); NacistZakazniky(); } /// /// B_pridatAutoClick() - po kliknuti na Pridat (u auta) /// /// objekt /// udalost void B_pridatAutoClick(object sender, System.EventArgs e) { new AutoForm().ShowDialog(); NacistAuta(); } /// /// B_pridatDispeceraClick() - po kliknuti na Pridat (u dispecera) /// /// objekt /// udalost void B_pridatDispeceraClick(object sender, System.EventArgs e) { new ZamestnanecForm().ShowDialog(); NacistDispecery(); } /// /// B_odstranitZakaznikaClick() - po kliknuti na odstranit (u zakaznika) /// /// objekt /// udalost void B_odstranitZakaznikaClick(object sender, System.EventArgs e) { if(cb_zakaznik.Text != "") { try { int podminka = seznamZakazniku[cb_zakaznik.SelectedIndex]; string s = "DELETE FROM dbo.zakaznik WHERE id_zkaznik="+podminka; OdstranitZaznam(s); NacistZakazniky(); cb_zakaznik.Text = ""; } catch { MessageBox.Show("Název musí být vybrán ze seznamu!","Varování"); } } else { MessageBox.Show("Není vybrán žádný záznám!","Varování"); } } /// /// B_odstranitAutoClick() - po kliknuti na odstranit (u auta) /// /// objekt /// udalost void B_odstranitAutoClick(object sender, System.EventArgs e) { if(cb_auto.Text != "") { try { string podminka = seznamAut[cb_auto.SelectedIndex]; string s = "DELETE FROM dbo.auto WHERE spz='"+podminka+"'"; OdstranitZaznam(s); NacistAuta(); cb_auto.Text = ""; } catch { MessageBox.Show("Název musí být vybrán ze seznamu!","Varování"); } } else { MessageBox.Show("Není vybrán žádný záznám!","Varování"); } } /// /// B_odstranitDispeceraClick() - po kliknuti na odstranit (u dispecera) /// /// objekt /// udalost void B_odstranitDispeceraClick(object sender, System.EventArgs e) { if(cb_dispecer.Text != "") { try { string podminka = seznamDispeceru[cb_zakaznik.SelectedIndex]; string s = "DELETE FROM dbo.zamestnanec WHERE rodne_cislo='"+podminka+"'"; OdstranitZaznam(s); NacistDispecery(); cb_dispecer.Text = ""; } catch { MessageBox.Show("Název musí být vybrán ze seznamu!","Varování"); } } else { MessageBox.Show("Není vybrán žádný záznám!","Varování"); } } #endregion #region udalosti na kontrolkach /// /// ListBoxClick() - po kliknuti na listBox /// /// objekt /// udalost void ListBoxClick(object sender, System.EventArgs e) { if(listBox.SelectedItem != null) { beznaObjednavka = listBox.SelectedItem.ToString(); if(ZobrazitObjednavku(beznaObjednavka)) { string s = "Objednávka " + beznaObjednavka + " byla načtena v pořádku ..."; Informovat(s); b_akce.Text = "Editovat"; b_akce.Enabled = false; for(int i = 0; i < validniKontrolky.Length; i++) { validniKontrolky[i] = true; } } else { string s = "Objednávku " + beznaObjednavka + " se nepodařilo správně načíst"; Varovat(s); } } } #endregion #region menu /// /// MenuSouborKonecClick() - po kliknuti na konec /// /// objekt /// udalost void MenuSouborKonecClick(object sender, System.EventArgs e) { this.Close(); } /// /// MenuSouborPripojitClick() - po kliknuti na Pripojit /// /// objekt /// udalost void MenuSouborPripojitClick(object sender, System.EventArgs e) { try { mySqlConnection = new SqlConnection(connectionString); mySqlConnection.Open(); if(mySqlConnection.State == ConnectionState.Open) { Informovat("Připojení proběhlo v pořádku (" + mySqlConnection.ConnectionString + ")"); } mySqlConnection.Close(); } catch { Varovat("Chyba při navazování spojení"); } NacistZakazniky(); NacistAuta(); NacistDispecery(); NacistObjednavky(); } #endregion #region status - vypisy pro uzivatele /// /// Varovat() zmeni vlastnost Text pro kontrolku status /// /// varovani pro uzivatele public void Varovat(string s) { status.ForeColor = Color.Red; status.Text = " ! ! ! " + s + " ! ! ! "; } /// /// Informovat() zmeni vlastnost Text pro kontrolku status /// /// informace pro uzivatele public void Informovat(string s) { status.ForeColor = Color.Blue; status.Text = s; } #endregion #region validace void Tb_odkudValidated(object sender, System.EventArgs e) { string s = ((TextBox)sender).Text; switch(((TextBox)sender).Name) { case "tb_odkud": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[1] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[1] = true; } break; case "tb_kam": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[2] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[2] = true; } break; case "tb_cena": try { decimal i = decimal.Parse(s); if(i < 100000000) { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[4] = true; } else { this.errorProviderObjednavka.SetError((Control)sender,"Musí být menší než 100 000 000!"); validniKontrolky[4] = false; } } catch { this.errorProviderObjednavka.SetError((Control)sender,"Musí být číslo!"); validniKontrolky[4] = false; } break; } validni = true; foreach(bool b in validniKontrolky) { if(b == false) { validni = false; } } b_akce.Enabled = validni; } void Cb_zakaznikValidated(object sender, System.EventArgs e) { string s = ((ComboBox)sender).Text; switch(((ComboBox)sender).Name) { case "cb_zakaznik": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[0] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[0] = true; } break; case "cb_typZbozi": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[3] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[3] = true; } break; case "cb_auto": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[5] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[5] = true; } break; case "cb_dispecer": if(s == "") { this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!"); validniKontrolky[6] = false; } else { this.errorProviderObjednavka.SetError((Control)sender,""); validniKontrolky[6] = true; } break; } validni = true; foreach(bool b in validniKontrolky) { if(b == false) { validni = false; } } b_akce.Enabled = validni; } #endregion #region kontextove menu /// /// SmazatToolStripMenuItemClick() - po kliknuti na smazat v kontextovem menu /// /// objekt /// udalost void SmazatToolStripMenuItemClick(object sender, System.EventArgs e) { if(listBox.SelectedItem != null) { try { int podminka = Int32.Parse(listBox.SelectedItem.ToString()); string s = "DELETE FROM dbo.objednavka WHERE id_objednavka="+podminka; OdstranitZaznam(s); NacistObjednavky(); } catch { MessageBox.Show("Chyba pri prevodu cisla objednavky!","Varování"); } } } #endregion } }