using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
namespace СУБД_Швейная_фабрика
{
public partial class FormManager : Form
{
public FormManager()
{
InitializeComponent();
}
///
/// Заполнение DataGridView с заказами текущего заказчика
///
void FillListZakaz()
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
con.Open();
string TxtQuery =
@"select Izdeliya.nameizd as izd,
Zakaz.countizd as countizd,
Tkani.nametkan as tkan,
Furnitura.namefur as fur,
Zakaz.countfur as countfur,
Users.fam as zakazchik
from Zakaz, Users, Tkani, Furnitura, Izdeliya
where Users.iduser = Zakaz.idzakazchik
and Tkani.idtkan = Zakaz.idtkan
and Furnitura.idfur = Zakaz.idfur
and Izdeliya.idizd = Zakaz.idizd
and Zakaz.idman = " + LblIdManager.Text;
SqlCommand query1 = new SqlCommand(TxtQuery, con);
// выполнить запрос
SqlDataReader SqlRez = query1.ExecuteReader();
DgvZakaz.Rows.Clear(); // очистить от старых строк
// перебирать результаты запроса
while (SqlRez.Read())
{
DgvZakaz.Rows.Add(SqlRez["izd"], SqlRez["countizd"],
SqlRez["tkan"], SqlRez["fur"], SqlRez["countfur"],
SqlRez["zakazchik"]);
}
con.Close();
}
public struct Tkani
{
public string IdTkan, NameTkan, ColorTkan, Width, Length, Description;
public Image PhotoTkan;
}
List LstTkani = new List();
///
/// получить из базы данных сведения о тканях
///
void GetTkaniFromDB()
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
con.Open();
SqlCommand Query = new SqlCommand("select * from Tkani where length > 0", con);
SqlDataReader Data = Query.ExecuteReader();
while (Data.Read())
{
Tkani Tk = new Tkani();
Tk.IdTkan = Data["idtkan"].ToString();
Tk.NameTkan = Data["nametkan"].ToString();
Tk.ColorTkan = Data["color"].ToString();
Tk.Width = Data["width"].ToString();
Tk.Length = Data["length"].ToString();
Tk.Description = Data["description"].ToString();
try
{
// загрузить из таблицы БД байты фотографии в массив
byte[] PhotoByte = (byte[])Data["phototkan"];
ImageConverter ImConverter = new ImageConverter();
// сконвертировать массив байт в изображение
Tk.PhotoTkan = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
}
catch
{
// в случае ошибки загрузить пустое изображение из ресурсов
Tk.PhotoTkan = Properties.Resources.tmp;
}
LstTkani.Add(Tk); // добавить в список новую ткань
}
con.Close();
}
///
/// заполнение таблицы с фотографиями тканей
///
void FillLVTkani()
{
LVTkani.Items.Clear();
ImageListTkani.Images.Clear();
foreach (Tkani Tk in LstTkani)
{
// новый элемент для ListView с названием ткани
ListViewItem LV = new ListViewItem(Tk.NameTkan);
// в ImageList добавить изображение ткани
ImageListTkani.Images.Add(Tk.PhotoTkan);
// связать последнее добавленное изображение с новым элементом ListView
LV.ImageIndex = ImageListTkani.Images.Count - 1;
LVTkani.Items.Add(LV); // добавить новый элемент к ListView
}
}
public struct Furnitura
{
public string IdFur, NameFur, CountFur;
public Image PhotoFur;
}
List LstFurnitura = new List();
///
/// получить данные о фурнитурах из базы данных
///
void GetFurnituraFromDB()
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
con.Open();
SqlCommand Query = new SqlCommand("select * from Furnitura where countfur > 0", con);
SqlDataReader Data = Query.ExecuteReader();
while (Data.Read())
{
Furnitura Fr = new Furnitura();
Fr.IdFur = Data["idfur"].ToString();
Fr.NameFur = Data["namefur"].ToString();
Fr.CountFur = Data["countfur"].ToString();
try
{
// загрузить из таблицы БД байты фотографии в массив
byte[] PhotoByte = (byte[])Data["photo"];
ImageConverter ImConverter = new ImageConverter();
// сконвертировать массив байт в изображение
Fr.PhotoFur = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
}
catch
{
// в случае ошибки загрузить пустое изображение из ресурсов
Fr.PhotoFur = Properties.Resources.tmp;
}
LstFurnitura.Add(Fr); // добавить в список новую фурнитуру
}
con.Close();
}
///
/// заполнить таблицу с фотографиями фурнитур
///
void FillLVFurnitura()
{
LVFurnitura.Items.Clear();
ImageListFur.Images.Clear();
foreach (Furnitura Fr in LstFurnitura)
{
// новый элемент для ListView с названием фурнитуры
ListViewItem LV = new ListViewItem(Fr.NameFur);
// в ImageList добавить изображение фурнитуры
ImageListFur.Images.Add(Fr.PhotoFur);
// связать последнее добавленное изображение с новым элементом ListView
LV.ImageIndex = ImageListFur.Images.Count - 1;
LVFurnitura.Items.Add(LV); // добавить новый элемент к ListView
}
}
private void FormManager_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'fab2021DataSet1.Izdeliya' table. You can move, or remove it, as needed.
this.izdeliyaTableAdapter.Fill(this.fab2021DataSet1.Izdeliya);
// TODO: This line of code loads data into the 'fab2021DataSet1.Users' table. You can move, or remove it, as needed.
this.usersTableAdapter.Fill(this.fab2021DataSet1.Users);
FillListZakaz();
GetTkaniFromDB();
FillLVTkani();
GetFurnituraFromDB();
FillLVFurnitura();
}
private void BtnProfile_Click(object sender, EventArgs e)
{
FormProfile frm = new FormProfile();
// на форму для редактирования профиля передать
// фильтр для выборки авторизовавшегося пользователя
frm.BsUsers.Filter = this.BsUsers.Filter;
if (frm.ShowDialog() == DialogResult.OK)
{
this.usersTableAdapter.Fill(this.fab2021DataSet1.Users);
}
}
private void BtnAdd_Click(object sender, EventArgs e)
{
BsIzdeliya.AddNew();
BtnSave.Enabled = true;
BtnAdd.Enabled = false;
BtnEdit.Enabled = false;
DgvIzd.Enabled = false;
TbxNameIzd.Enabled = true;
TbxLengthIzd.Enabled = true;
TbxWidthIzd.Enabled = true;
}
private void BtnEdit_Click(object sender, EventArgs e)
{
BtnSave.Enabled = true;
BtnAdd.Enabled = false;
BtnEdit.Enabled = false;
DgvIzd.Enabled = false;
TbxNameIzd.Enabled = true;
TbxLengthIzd.Enabled = true;
TbxWidthIzd.Enabled = true;
}
private void BtnSave_Click(object sender, EventArgs e)
{
BsIzdeliya.EndEdit();
this.izdeliyaTableAdapter.Update(this.fab2021DataSet1.Izdeliya);
BtnSave.Enabled = false;
BtnAdd.Enabled = true;
BtnEdit.Enabled = true;
DgvIzd.Enabled = true;
TbxNameIzd.Enabled = false;
TbxLengthIzd.Enabled = false;
TbxWidthIzd.Enabled = false;
}
private void LVTkani_SelectedIndexChanged(object sender, EventArgs e)
{
if (LVTkani.SelectedItems.Count > 0) // есть выделенные элементы
{
int num = LVTkani.SelectedIndices[0]; // номер выделенного элемента
NametkanTextBox.Text = LstTkani[num].NameTkan;
ColorTextBox.Text = LstTkani[num].ColorTkan;
WidthTextBox.Text = LstTkani[num].Width;
LengthTextBox.Text = LstTkani[num].Length;
DescriptionTextBox.Text = LstTkani[num].Description;
}
else // нет выделенных элементов
{
NametkanTextBox.Text = "";
ColorTextBox.Text = "";
WidthTextBox.Text = "";
LengthTextBox.Text = "";
DescriptionTextBox.Text = "";
}
}
private void LVFurnitura_SelectedIndexChanged(object sender, EventArgs e)
{
if (LVFurnitura.SelectedItems.Count > 0) // есть выделенные элементы
{
int num = LVFurnitura.SelectedIndices[0]; // номер выделенного элемента
TbxNameFur.Text = LstFurnitura[num].NameFur;
TbxCountFurSklad.Text = LstFurnitura[num].CountFur;
}
else // нет выделенных элементов
{
TbxNameFur.Text = "";
TbxCountFurSklad.Text = "";
}
}
private void BtnAll_Click(object sender, EventArgs e)
{
if (RbtWord.Checked)
{
Word.Application app = new Word.Application();
app.Visible = true;
Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true);
Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа
WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text;
string num = "", izd = "", countizd = "", tkan = "",
fur = "", countfur = "", zakazchik = "";
for (int i = 0; i <= DgvZakaz.RowCount - 1; i++) // перебор записей в таблице
{
num += (i + 1).ToString() + "." + "\r\n";
izd += DgvZakaz.Rows[i].Cells[0].Value + "\r\n";
countizd += DgvZakaz.Rows[i].Cells[1].Value + "\r\n";
tkan += DgvZakaz.Rows[i].Cells[2].Value + "\r\n";
fur += DgvZakaz.Rows[i].Cells[3].Value + "\r\n";
countfur += DgvZakaz.Rows[i].Cells[4].Value + "\r\n";
zakazchik += DgvZakaz.Rows[i].Cells[5].Value + "\r\n";
}
WBmark["num"].Range.Text = num.Trim();
WBmark["izd"].Range.Text = izd.Trim();
WBmark["countizd"].Range.Text = countizd.Trim();
WBmark["tkan"].Range.Text = tkan.Trim();
WBmark["fur"].Range.Text = fur.Trim();
WBmark["countfur"].Range.Text = countfur.Trim();
WBmark["zak"].Range.Text = zakazchik.Trim();
}
else
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter f = new StreamWriter(saveFileDialog1.FileName);
string t = "izd;countizd;tkan;furnitura;countfur;zakazchik";
f.WriteLine(t);
for(int i=0; i <= DgvZakaz.RowCount-1; i++)
{
t = "";
t += DgvZakaz.Rows[i].Cells[0].Value + ";";
t += DgvZakaz.Rows[i].Cells[1].Value + ";";
t += DgvZakaz.Rows[i].Cells[2].Value + ";";
t += DgvZakaz.Rows[i].Cells[3].Value + ";";
t += DgvZakaz.Rows[i].Cells[4].Value + ";";
t += DgvZakaz.Rows[i].Cells[5].Value;
f.WriteLine(t);
}
f.Close();
}
}
}
private void BtnSelect_Click(object sender, EventArgs e)
{
if (RbtWord.Checked)
{
Word.Application app = new Word.Application();
app.Visible = true;
Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true);
Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа
WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text;
string num = "", izd = "", countizd = "", tkan = "",
fur = "", countfur = "", zakazchik = "";
for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++) // перебор записей в таблице
{
num += (i + 1).ToString() + "." + "\r\n";
izd += DgvZakaz.SelectedRows[i].Cells[0].Value + "\r\n";
countizd += DgvZakaz.SelectedRows[i].Cells[1].Value + "\r\n";
tkan += DgvZakaz.SelectedRows[i].Cells[2].Value + "\r\n";
fur += DgvZakaz.SelectedRows[i].Cells[3].Value + "\r\n";
countfur += DgvZakaz.SelectedRows[i].Cells[4].Value + "\r\n";
zakazchik += DgvZakaz.SelectedRows[i].Cells[5].Value + "\r\n";
}
WBmark["num"].Range.Text = num.Trim();
WBmark["izd"].Range.Text = izd.Trim();
WBmark["countizd"].Range.Text = countizd.Trim();
WBmark["tkan"].Range.Text = tkan.Trim();
WBmark["fur"].Range.Text = fur.Trim();
WBmark["countfur"].Range.Text = countfur.Trim();
WBmark["zak"].Range.Text = zakazchik.Trim();
}
else
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter f = new StreamWriter(saveFileDialog1.FileName);
string t = "izd;countizd;tkan;furnitura;countfur;zakazchik";
f.WriteLine(t);
for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++)
{
t = "";
t += DgvZakaz.SelectedRows[i].Cells[0].Value + ";";
t += DgvZakaz.SelectedRows[i].Cells[1].Value + ";";
t += DgvZakaz.SelectedRows[i].Cells[2].Value + ";";
t += DgvZakaz.SelectedRows[i].Cells[3].Value + ";";
t += DgvZakaz.SelectedRows[i].Cells[4].Value + ";";
t += DgvZakaz.SelectedRows[i].Cells[5].Value;
f.WriteLine(t);
}
f.Close();
}
}
}
}
}