private void LogoffToolStripMenuItem_Click(object sender, EventArgs e) { tmr.Stop(); bool tmp_login_ok = false; bool tmp_exit = false; hidewin = false; this.TopMost = prop.Mod_operator_top_most; this.TopMost = false; if (closeCounter()) { if (!tmp_exit) { // открываем окно запроса пользователя PSA.Lib.Interface.frmLogin fLogin = new PSA.Lib.Interface.frmLogin(); // спрашиваем пока не угадает пароль или не надоест угадывать while (!tmp_login_ok) { switch (fLogin.ShowDialog()) { case DialogResult.Cancel: { tmp_login_ok = true; tmp_exit = true; break; } case DialogResult.OK: { tmp_login_ok = true; if (fLogin.usr.prmCanLoginOperator) { this.Show(); } else { tmp_exit = true; MessageBox.Show("Доступ в модуль оператора заперщен!", "Вход в программу", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; } } } if (!tmp_exit) { // если мы уже тут, значит пароль все же угадали // Получаем данные о пользователе usr = fLogin.usr; this.Text = "Оператор - " + usr.Name + " - Photoland System Automation " + Application.ProductVersion; //запрашиваем машину и бумагу this.TopMost = false; frmSelectMashineAndPaper f = new frmSelectMashineAndPaper(); f.db_connection = this.db_connection; f.ShowDialog(); this.TopMost = prop.Mod_operator_top_most; if (f.DialogResult == System.Windows.Forms.DialogResult.OK) { usr.Id_Mashine = f.txtMashine.SelectedValue.ToString(); usr.Mashine = f.txtMashine.Text; //usr.Id_Paper = f.txtPaper.SelectedValue.ToString(); //usr.Paper = f.txtPaper.Text; lblMashine.Text = usr.Mashine.Trim(); //lblPaper.Text = usr.Paper.Trim(); // Показываем окно this.Focus(); SqlCommand _counter_cmd = new SqlCommand(); _counter_cmd.Connection = db_connection; _counter_cmd.CommandTimeout = 9000; _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " + "FROM dbo.counters " + "WHERE (id_counter = " + "(SELECT MAX(id_counter) AS id " + "FROM dbo.counters AS counters_1 " + "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))"; SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd); DataTable _counter_tbl = new DataTable(); _counter_da.Fill(_counter_tbl); bool stop = false; if (_counter_tbl.Rows.Count > 0) { if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == "")) { if (MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() + " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" + "Автоматически закрываем значением " + f.txtCounter.Value.ToString() + "?", "Закрытие счетчика", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() + ", c2date = getdate(), c0 = 0 " + "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString(); _counter_cmd.ExecuteNonQuery(); } else { stop = true; } } } if (!stop) { _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" + usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() + ", getdate())"; _counter_cmd.ExecuteNonQuery(); _counter1 = long.Parse(f.txtCounter.Value.ToString()); _counter1Date = DateTime.Now; recalcCounter(true); if (!usr.prmCanDelEditBrak) { btnDelBrak.Enabled = false; btnEditBrak.Enabled = false; } if (prop.Fly_window_operator) { this.Top = (-1) * (this.Height - 10); } // заполняем таблицу заказов FillOrderList(); // заполняем таблицу "браков" FillTehAction(); FillCounters(); ClearOrders(); hidewin = true; } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } } this.TopMost = prop.Mod_operator_top_most; tmr.Start(); }
private void btnChangePaper_Click(object sender, EventArgs e) { if (CheckState(db_connection)) { tmr.Stop(); this.TopMost = false; if (closeCounter()) { frmSelectMashineAndPaper f = new frmSelectMashineAndPaper(); f.db_connection = db_connection; f._id_mashine = usr.Id_Mashine; //f._id_paper = usr.Id_Paper; f.ShowDialog(); if (f.DialogResult == System.Windows.Forms.DialogResult.OK) { usr.Id_Mashine = f.txtMashine.SelectedValue.ToString(); usr.Mashine = f.txtMashine.Text; //usr.Id_Paper = f.txtPaper.SelectedValue.ToString(); //usr.Paper = f.txtPaper.Text; SqlCommand _counter_cmd = new SqlCommand(); _counter_cmd.Connection = db_connection; _counter_cmd.CommandTimeout = 9000; _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " + "FROM dbo.counters " + "WHERE (id_counter = " + "(SELECT MAX(id_counter) AS id " + "FROM dbo.counters AS counters_1 " + "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))"; SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd); DataTable _counter_tbl = new DataTable(); _counter_da.Fill(_counter_tbl); if (_counter_tbl.Rows.Count > 0) { if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == "")) { MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() + " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" + "Автоматически закрываем значением " + f.txtCounter.Value.ToString()); _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() + ", c2date = getdate(), c0 = 0 " + "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString(); _counter_cmd.ExecuteNonQuery(); } } _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" + usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() + ", getdate())"; _counter_cmd.ExecuteNonQuery(); _counter1 = long.Parse(f.txtCounter.Value.ToString()); _counter1Date = DateTime.Now; recalcCounter(true); lblMashine.Text = usr.Mashine.Trim(); //lblPaper.Text = usr.Paper.Trim(); } else { hidewin = false; globalexit = true; this.Close(); } } this.TopMost = prop.Mod_operator_top_most; tmr.Start(); } }
private void frmMain_Load(object sender, EventArgs e) { try { StreamWriter sw = new StreamWriter(prop.Dir_export + "\\Operator_" + Environment.MachineName + "_" + Environment.UserName + ".info", false, Encoding.GetEncoding(1251)); sw.Write("Date: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\nMashine: " + Environment.MachineName + "\nUser: "******"\nOperator mod: " + Application.ProductVersion); sw.Close(); } catch { } if (!Checking.checkVersion(Modules.Operator, Application.ProductVersion)) if (MessageBox.Show("Внимание! Существует более новая версия модуля!\nУстановить обновление?", "Контроль обновлений", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) System.Diagnostics.Process.Start(System.Environment.GetCommandLineArgs()[0].Substring( 0, System.Environment.GetCommandLineArgs()[0].LastIndexOf('\\') ) + "\\PSA.Update.cmd"); bool tmp_login_ok = false; bool tmp_exit = false; if(!PSA.Lib.Util.Semaphore.semInventory) { tmr.Interval = prop.UpdateOrderTableInOperator*1000; tmr.Stop(); hidewin = false; this.TopMost = prop.Mod_operator_top_most; // Проверяем, если есть ограничение на запуск одной копии и программа уже запущена if ((app.Search_twin()) && (prop.Run_one_copy_oprator)) { // То выдаем сообщение и закрываем программу MessageBox.Show("Программа уже запущена!"); globalexit = true; Application.Exit(); } else { this.TopMost = false; // Если ограничение на запуск одной копии пройдено, то продолжаем... // Открываем соединение с базой try { db_connection.ConnectionString = prop.Connection_string; db_connection.Open(); } catch (Exception ex) { ErrorNfo.WriteErrorInfo(ex); // Если не удалось подключиться к базе, то // выдаем сообщение об ошибке и открываем форму // подключения к базе данных MessageBox.Show("Ошибка подключения к базе данных!\n" + ex.Message + "\n" + ex.Source + "\nПроверьте настройки подключения!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); try { this.TopMost = false; frmSetup fOptions = new frmSetup(); fOptions.ShowDialog(); prop = new PSA.Lib.Util.Settings(); // Опять пробуем подключиться к базе db_connection.ConnectionString = prop.Connection_string; db_connection.Open(); this.TopMost = prop.Mod_operator_top_most; } catch (Exception exc) { ErrorNfo.WriteErrorInfo(exc); // Если после второй попытки не удалось подключиться, то закрываем программу. MessageBox.Show("Ошибка подключения к базе данных!\n" + exc.Message + "\n" + exc.Source, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); tmp_exit = true; } } if (!tmp_exit) { // открываем окно запроса пользователя PSA.Lib.Interface.frmLogin fLogin = new PSA.Lib.Interface.frmLogin(); // спрашиваем пока не угадает пароль или не надоест угадывать while (!tmp_login_ok) { switch (fLogin.ShowDialog()) { case DialogResult.Cancel: { tmp_login_ok = true; tmp_exit = true; break; } case DialogResult.OK: { tmp_login_ok = true; if (fLogin.usr.prmCanLoginOperator) { this.Show(); } else { tmp_exit = true; MessageBox.Show("Доступ в модуль оператора заперщен!", "Вход в программу", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; } } } if (!tmp_exit) { // если мы уже тут, значит пароль все же угадали // Получаем данные о пользователе usr = fLogin.usr; this.Text = "Оператор - " + usr.Name + " - Photoland System Automation " + Application.ProductVersion; txtDateCounter1.Value = DateTime.Now.AddDays(-10); txtDateCounter2.Value = DateTime.Now; //запрашиваем машину и бумагу this.TopMost = false; frmSelectMashineAndPaper f = new frmSelectMashineAndPaper(); f.db_connection = this.db_connection; f.ShowDialog(); this.TopMost = prop.Mod_operator_top_most; if (f.DialogResult == System.Windows.Forms.DialogResult.OK) { usr.Id_Mashine = f.txtMashine.SelectedValue.ToString(); usr.Mashine = f.txtMashine.Text; //usr.Id_Paper = f.txtPaper.SelectedValue.ToString(); //usr.Paper = f.txtPaper.Text; SqlCommand _counter_cmd = new SqlCommand(); _counter_cmd.Connection = db_connection; _counter_cmd.CommandTimeout = 9000; _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " + "FROM dbo.counters " + "WHERE (id_counter = " + "(SELECT MAX(id_counter) AS id " + "FROM dbo.counters AS counters_1 " + "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))"; SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd); DataTable _counter_tbl = new DataTable(); _counter_da.Fill(_counter_tbl); bool stop = false; if (_counter_tbl.Rows.Count > 0) { if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == "")) { if (MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() + " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" + "Автоматически закрываем значением " + f.txtCounter.Value.ToString() + "?", "Закрытие счетчика", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() + ", c2date = getdate(), c0 = (SELECT(ISNULL((" + "SELECT SUM(CASE tech_defect " + "WHEN 0 THEN actual_quantity " + "WHEN 1 THEN defect_quantity " + "WHEN 2 THEN defect_quantity " + "WHEN 3 THEN defect_quantity " + "WHEN 4 THEN 0 " + "WHEN 5 THEN defect_quantity " + "WHEN 6 THEN defect_quantity " + "WHEN 7 THEN 0 " + "WHEN 8 THEN defect_quantity " + "WHEN 9 THEN 0 " + "WHEN 10 THEN 0 " + "END)" + "FROM dbo.orderbody " + "WHERE (datework >= " + "(SELECT c1date " + "FROM dbo.counters " + "WHERE (id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString() + "))) AND (datework <= GETDATE()) AND (id_user_work = " + usr.Id_user + ") AND (id_mashine = N'" + usr.Id_Mashine.Trim() + "')" + "), 0))) " + "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString(); _counter_cmd.ExecuteNonQuery(); } else { stop = true; } } } if (!stop) { _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" + usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() + ", getdate())"; _counter_cmd.ExecuteNonQuery(); _counter1 = long.Parse(f.txtCounter.Value.ToString()); _counter1Date = DateTime.Now; recalcCounter(true); lblMashine.Text = usr.Mashine.Trim(); //lblPaper.Text = usr.Paper.Trim(); // Показываем окно this.Focus(); if (!usr.prmCanDelEditBrak) { btnDelBrak.Enabled = false; btnEditBrak.Enabled = false; btnEditBrak1.Enabled = false; btnDelBrak1.Enabled = false; } if (prop.Fly_window_operator) { this.Top = (-1) * (this.Height - 10); } // заполняем фильтры FillFilter(); // заполняем таблицу заказов FillOrderList(); // заполняем таблицу "браков" FillTehAction(); FillDiscardTable(); FillCounters(); hidewin = true; ClearOrders(); tmr.Start(); } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } } else { globalexit = true; Application.Exit(); } this.TopMost = prop.Mod_operator_top_most; } } else { MessageBox.Show("В момент проведения инвентаризации вход в модуль запрещен!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); globalexit = true; hidewin = false; Application.Exit(); } }