Диплом: Автоматизация рабочего места менеджера отдела продаж для АО "АЭИ "ПРАЙМ"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
90
ПРИЛОЖЕНИЯ
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text.RegularExpressions;
namespace GLOBAL2
{
public partial class frmEditInDocs : Form
{
internal string rights;
string PathToFile;
frmEditInDocsSettings FrmEditInDocsSettings;//форма настройки
public int limitedID { get; set; } // ConstID - айди, ограничивающий открытие
одного и того же элемента дважды
//(например при редактировании)
public int rowStatus { get; set; } // статус строки, (-1) - режим выбора:
кликом по гриду
public bool isSDI { get; set; }
public event EventHandler<EventArgs> RaiseInDocSelected;
DataTable tblInDocs = new DataTable("InDocs");
DataTable tblInDocsRow = new DataTable("InDocsRow");
DataTable tblImageList = new DataTable("ImageList");
DataSet ds = new DataSet();
ImageList imgList = new ImageList();
CurrentFilter currentFilter;
bool checkChanges;
bool exitCancel;
DataRow row;
byte[] doc;
int dgvRowIndex;
int tblRowIndex;
int currentConstID;
bool EntryInDgv = false;
DateTime DefaultDate { get; set; }
DateTime DefaultInDate { get; set; }
int DefaultInDocType { get; set; }
public byte[] Doc
{
get { return doc; }
set { doc = value; }
}
91
public frmEditInDocs()
{
InitializeComponent();
dgvInDocs.AutoGenerateColumns = false;
imgList.Images.Add(GLOBAL2.Properties.Resources.document);
}
//загрузка формы с заявками
private void frmEditInDocs_Load(object sender, EventArgs e)
{
ComboBoxFill(cboDept, @"SELECT ID,
Description
FROM dbo.Dept AS d
ORDER BY
Description");
ComboBoxFill(cboInDocType, "SELECT ID, Description, NameInFile FROM
InDocTypes Order By Description");
ds.Tables.Add(tblInDocs);
ds.Tables.Add(tblInDocsRow);
ds.Tables.Add(tblImageList);
checkChanges = false;
DgvInDocsFill();
dgvInDocs.DataSource = tblInDocs;
UpdateHeaderText();
if (!FillTable(tblImageList, "SELECT * FROM ImageList ORDER BY
GroupName, Ord")) { Close(); }
SwitchMode(rowStatus);
this.Location =
GLOBAL2.Properties.Settings.Default.frmEditInDocsLocation;
DefaultDate = DateTime.Now;
DefaultInDate = DateTime.Now;
DefaultInDocType = 0;
}
//
//
//заполнение комбо-бокса с клиентами
private void ComboBoxFill(ComboBox cb, string cmdtext)
{
SqlCommand cmd = new SqlCommand(cmdtext, new
SqlConnection(SessionProperties.currentConnectionString));
DataTable dt = new DataTable();
try
{
cmd.Connection.Open();
dt.Load(cmd.ExecuteReader());
cb.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!!!", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
finally
{
92
cmd.Connection.Close();
}
cb.ValueMember = "ID";
cb.DisplayMember = "Description";
}
// заполнение таблиц
private bool FillTable(DataTable tbl, string sqlText)
{
SqlConnection cn = new
SqlConnection(SessionProperties.currentConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sqlText;
SqlDataReader reader = null;
tbl.Clear();
tbl.Columns.Clear();
try
{
cn.Open();
reader = cmd.ExecuteReader();
tbl.Load(reader);
cn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "FillTable(" + tbl.ToString() +
", " + sqlText + ")", MessageBoxButtons.OK, MessageBoxIcon.Stop);
return false;
}
return true;
}
}// рисование картинок на контролах*/
private void SwitchMode(int mode)
{
switch (mode)
{
case -1: // режим выбора
tsbPeriod.Enabled = true;
tsbDocNew.Enabled = false;
tsbDocEdit.Enabled = false;
tsbDocDelete.Enabled = false;
tsbHistory.Enabled = false;
tsbSettings.Enabled = true;
cboDept.Enabled = false;
cboInDocType.Enabled = false;
tbNum.Enabled = false;
dtpDate.Enabled = false;
dtpInDate.Enabled = false;
tbDescription.Enabled = false;
btnImgFile.Enabled = false;
btnOk.Enabled = false;
93
btnScan.Enabled = false;
exitCancel = true;
checkChanges = false;
dgvInDocs.Enabled = true;
dgvInDocs.Focus();
break;
case 0://новый
tsbPeriod.Enabled = false;
tsbDocNew.Enabled = false;
tsbDocEdit.Enabled = false;
tsbDocDelete.Enabled = false;
tsbSettings.Enabled = false;
cboDept.SelectedValue = 0;
cboDept.Enabled = true;
cboInDocType.SelectedValue = DefaultInDocType;
cboInDocType.Enabled = true;
tbNum.Text = "";
tbNum.Enabled = true;
dtpDate.Value = DefaultDate;
dtpDate.Enabled = true;
dtpInDate.Value = DefaultInDate;
dtpInDate.Enabled = true;
tbDescription.Text = "";
tbDescription.Enabled = true;
lblImgFile.Text = "";
btnImgFile.Enabled = true;
btnFolder.Enabled = true;
btnScan.Enabled = true;
btnOk.Enabled = false;
exitCancel = false;
checkChanges = true;
rowStatus = mode;
btnExit.Text = "Esc - отмена";
EntryInDgv = false;
dgvInDocs.Enabled = false;
cboDept.Focus();
break;
case 1://правка
tsbPeriod.Enabled = false;
tsbDocNew.Enabled = false;
tsbDocEdit.Enabled = false;
tsbDocDelete.Enabled = false;
tsbSettings.Enabled = false;
cboDept.Enabled = true;
cboInDocType.Enabled = true;
tbNum.Enabled = true;
dtpDate.Enabled = true;
dtpInDate.Enabled = true;
tbDescription.Enabled = true;
btnImgFile.Enabled = true;
btnFolder.Enabled = true;
btnScan.Enabled = true;
btnOk.Enabled = false;
//dgvInDocs.Enabled = false;
exitCancel = false;
94
checkChanges = true;
rowStatus = mode;
btnExit.Text = "Esc - отмена";
EntryInDgv = false;
dgvInDocs.Enabled = false;
cboDept.Focus();
break;
case 2://просмотр документов
tsbPeriod.Enabled = true;
tsbDocNew.Enabled = true;
tsbDocEdit.Enabled = true;
tsbDocDelete.Enabled = true;
tsbSettings.Enabled = true;
cboDept.Enabled = false;
cboDept.SelectedValue = 0;
cboInDocType.Enabled = false;
cboInDocType.SelectedValue = 0;
tbNum.Enabled = false;
dtpDate.Enabled = false;
dtpInDate.Enabled = false;
tbDescription.Enabled = false;
btnImgFile.Enabled = false;
btnFolder.Enabled = false;
btnOk.Enabled = false;
btnScan.Enabled = false;
dgvInDocs.Enabled = true;
exitCancel = true;
checkChanges = false;
btnExit.Text = "Esc - выход";
if (this.Text.Contains("*"))
{
this.Text = this.Text.Substring(0,
this.Text.Length - 1);
}
dgvInDocs.Enabled = true;
dgvInDocs.Focus();
break;
}
}// установка режима формы
private void ControlsRefresh(DataGridViewCellEventArgs e)
{
if (!EntryInDgv)
{
SwitchMode(2);
EntryInDgv = true;
}
row = ((DataRowView)dgvInDocs.Rows[e.RowIndex].DataBoundItem).Row;
tblRowIndex = Array.IndexOf(tblInDocs.Select(), row);
cboDept.SelectedValue = row["DeptID"].ToString();
cboDept.Text = row["Dept"].ToString();
cboInDocType.SelectedValue = row["InDocTypesID"].ToString();
cboInDocType.Text = row["DocType"].ToString();
tbNum.Text = row["Num"].ToString();
dtpDate.Value = Convert.ToDateTime(row["Date"]);
95
dtpInDate.Value = Convert.ToDateTime(row["InDate"]);
tbDescription.Text = row["Description"].ToString();
lblImgFile.Text = row["ImgFile"].ToString();
currentConstID = (int)row["ConstID"];
}//обновление связанных с текущей строкой конролов
public static bool SaveChanges(DateTime Date, DateTime InDate,
int ConstID = 0,
int InDocTypeID = 0,
string Num ="",
int DeptID = 0,
string Description = "",
string ImgFile ="",
byte[] Img = null,
int rowStatus = 0)
{
SqlConnection cn = new
SqlConnection(SessionProperties.currentConnectionString);
SqlCommand cmd = new SqlCommand("dbo.EditInDocs", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 0;
cmd.Parameters.Add("@ConstID", SqlDbType.Int);
cmd.Parameters["@ConstID"].Value = ConstID;
cmd.Parameters.Add("@InDocTypesID", SqlDbType.Int);
cmd.Parameters["@InDocTypesID"].Value = InDocTypeID;
cmd.Parameters.Add("@Num", SqlDbType.NVarChar, 20);
cmd.Parameters["@Num"].Value = Num;
cmd.Parameters.Add("@Date", SqlDbType.DateTime);
cmd.Parameters["@Date"].Value = Date;
cmd.Parameters.Add("@DeptID", SqlDbType.Int);
cmd.Parameters["@DeptID"].Value = DeptID;
cmd.Parameters.Add("@InDate", SqlDbType.DateTime);
cmd.Parameters["@InDate"].Value = InDate;
cmd.Parameters.Add("@Description", SqlDbType.NVarChar, 254);
cmd.Parameters["@Description"].Value = Description;
cmd.Parameters.Add("@ImgFile", SqlDbType.NVarChar, 254);
cmd.Parameters["@ImgFile"].Value = ImgFile;
cmd.Parameters.Add("@Img", SqlDbType.Image);
cmd.Parameters["@Img"].Value = Img;
cmd.Parameters.Add("@SessionsID", SqlDbType.Int);
cmd.Parameters["@SessionsID"].Value = SessionProperties.sessionID;
cmd.Parameters.Add("@RowStatus", SqlDbType.Int);
cmd.Parameters["@RowStatus"].Value = rowStatus;
cmd.Parameters.Add("@Msg", SqlDbType.NVarChar, 400);
cmd.Parameters["@Msg"].Value = "";
96
cmd.Parameters["@Msg"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("@Res", SqlDbType.Int);
cmd.Parameters["@Res"].Value = 0;
cmd.Parameters["@Res"].Direction = ParameterDirection.Output;
SessionProperties.lastError = "";
try
{
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
int result = (int)cmd.Parameters["@Res"].Value;
if (result >= 0)
{
return true; // успех
}
else
{
MessageBox.Show((string)cmd.Parameters["@Msg"].Value, "Ошибка!!!",
MessageBoxButtons.OK, MessageBoxIcon.Stop);
return false; //Ошибка хранимой процедуры
}
}
catch (Exception ex)
{
SessionProperties.lastError = ex.Message;
MessageBox.Show(SessionProperties.lastError, "Ошибка!!!",
MessageBoxButtons.OK, MessageBoxIcon.Stop);
return false; // Ошибка SQL
}
}//сохранение изменений
private void DataChanged(object sender, EventArgs e)
{
if (checkChanges)
{
if (this.Text.IndexOf('*') == -1)
{
this.Text += "*";
}
btnOk.Enabled = true;
}
}
//вывод заявок в грид за определенный период
private void DgvInDocsFill()
{
SqlCommand cmd = new SqlCommand("SELECT * FROM PCOrders WHERE Date BETWEEN
@begDate AND @endDate ORDER BY Description", new
SqlConnection(SessionProperties.currentConnectionString));
cmd.Parameters.Add("@begDate",SqlDbType.DateTime);
cmd.Parameters.Add("@endDate",SqlDbType.DateTime);
cmd.Parameters["@begDate"].Value = SessionProperties.begDate;
cmd.Parameters["@endDate"].Value = SessionProperties.endDate;
try
97
{
cmd.Connection.Open();
tblInDocs.Clear();
tblInDocs.Load(cmd.ExecuteReader());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "DgvInDocsFill()",MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
finally
{
cmd.Connection.Close();
}
}
//изменение заголовка
private void UpdateHeaderText()
{
this.Text = "Заявки на комплектующие для ПК за период с " +
SessionProperties.begDate.ToShortDateString() + " по " +
SessionProperties.endDate.ToShortDateString();
}
// удаление заявки
private void DocDelete()
{
var result = MessageBox.Show("Удалить документ?", "Внимание???",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (SaveChanges(Date: dtpDate.Value, InDate: dtpInDate.Value, ConstID:
currentConstID, rowStatus: 2))
{
DgvInDocsFill();
RestoreRowIndexPosition();
}
}
}
//выход
private void btnExit_Click(object sender, EventArgs e)
{
if (exitCancel)
{
Close();
}
else
{
btnExit.Text = "Esc - Выход";
SwitchMode(2);
}
}
//сохранение новой заявки
private void btnOk_Click(object sender, EventArgs e)
{
98
if (rowStatus == 0)
{
DataTable dt = SearchSimilarDoc((int)cboDept.SelectedValue,
(int)cboInDocType.SelectedValue,tbNum.Text);
if (dt.Rows.Count > 0)
{
frmEditInDocsChoosingReplaceDoc _frmEditInDocsChoosingReplaceDoc =
new frmEditInDocsChoosingReplaceDoc(dt);
DialogResult dResult =
_frmEditInDocsChoosingReplaceDoc.ShowDialog();
if (DialogResult.Yes == dResult)
{
rowStatus = 1;
currentConstID = SessionProperties.retInt;
}
if (DialogResult.Cancel == dResult)
{
return;
}
}
if (lblImgFile.Text == "" && doc == null)
{
MessageBox.Show("Нет документа!!!", "Внимание!!!",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
if (SaveChanges(dtpDate.Value,dtpInDate.Value, InDocTypeID :
(int)cboInDocType.SelectedValue,ConstID: currentConstID,
Num : tbNum.Text, DeptID : (int)cboDept.SelectedValue, Description :
tbDescription.Text,
ImgFile: lblImgFile.Text, Img: doc, rowStatus: rowStatus))
{
DefaultDate = dtpDate.Value;
DefaultInDate = dtpInDate.Value;
DefaultInDocType = (int)cboInDocType.SelectedValue;
DgvInDocsFill();
RestoreRowIndexPosition();
doc = null;
SwitchMode(2);
}
}
//поиск заявки
private DataTable SearchSimilarDoc(int DeptID,int InDocTypesID,string DocNum)
{
DataTable resTable = new DataTable();
SqlCommand cmd = new SqlCommand("SELECT * FROM PCOrders WHERE DeptID =
@DeptID AND InDocTypesID = @InDocTypesID AND Num = @DocNum ORDER BY Description", new
SqlConnection(SessionProperties.currentConnectionString));
cmd.Parameters.Add("@DeptID", SqlDbType.Int).Value = DeptID;
cmd.Parameters.Add("@InDocTypesID", SqlDbType.Int).Value = InDocTypesID;
cmd.Parameters.Add("@DocNum", SqlDbType.NVarChar).Value = DocNum;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(resTable);
return resTable;
99
}
private void RestoreRowIndexPosition()
{
try
{
if (dgvInDocs.Rows.Count > 0)
{
DataRow[] searchedRows =
((DataTable)dgvInDocs.DataSource).Select("ConstID = " + currentConstID.ToString());
int rowIndex;
if (searchedRows.Length > 0)
{
rowIndex = tblInDocs.Rows.IndexOf(searchedRows[0]);
}
else
{
rowIndex = (dgvRowIndex >= dgvInDocs.Rows.Count) ?
dgvInDocs.Rows.Count - 1 : dgvRowIndex;
}
if (rowIndex > dgvInDocs.Rows.Count - 1)
{
dgvInDocs.CurrentCell = dgvInDocs[0, 0];
}
else
dgvInDocs.CurrentCell = dgvInDocs[0, rowIndex];
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,
"RestoreRowIndexPosition()",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void dgvInDocs_CellMouseDoubleClick(object sender,
DataGridViewCellMouseEventArgs e)
{
if (rowStatus == -1)//режим выбора
{
DataRow row =
((DataRowView)dgvInDocs.Rows[e.RowIndex].DataBoundItem).Row;//строка из привязанной
таблицы
SessionProperties.retInt = (int)row["ConstID"];//возврат
(сохранение в статическом объекте) значения из формы
SessionProperties.retString = (string)row["FullName"];
EventHandler<EventArgs> handler = RaiseInDocSelected;
if (handler != null)
{
//оператор для вызова события.
handler(this, e);
}
Close();

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)