Esempio n. 1
0
        // Получение ID строки и краткой информации
        void GetCurrentRowInfo()
        {
            var grid = (DataGridView)TabMain.SelectedTab.Controls[0];

            try
            {
                ID        = grid.CurrentRow.Cells[0].Value.exToInt();
                ROW_INDEX = grid.CurrentRow.Index;
            }
            catch { /* Костыльная заглушка */ }

            // Если панель не свернута, то ищем информацию
            if (!FormSplit.Panel2Collapsed)
            {
                LabelTrackingDataE.Text = LabelEstimate.Text = "";

                // Получаем инфу если выделена одна стрка
                if (grid.SelectedRows.Count == 1)
                {
                    try
                    {
                        switch (TabMain.SelectedTab.Name)
                        {
                        case "FPage_Estimate":
                            int listID_E = DataCommon.GetFieldValue(ID, "Estimate_tracklist", "Estimate").exToInt();
                            LabelEstimate.Text      = GetEstimate(ID);
                            LabelTrackingDataE.Text = GetTrackinglist(listID_E);
                            break;

                        case "FPage_Trackinglists":
                            LabelTrackingDataE.Text = GetTrackinglist(ID);
                            break;

                        default:
                            /*string gridId = TabMain.SelectedTab.Name.Split('_')[2];
                             * var CurrentGrid = (DataGridView)TabMain.SelectedTab.Controls["DataList_Organization_" + gridId];*/

                            int listID_DEF = DataCommon.GetFieldValue(ID, "Estimate_tracklist", "Estimate").exToInt();
                            LabelEstimate.Text      = GetEstimate(ID);
                            LabelTrackingDataE.Text = GetTrackinglist(listID_DEF);
                            break;
                        }
                    }
                    catch { /* Костыльная заглушка */ }
                }
            }

            #region Внутренние методы
            string GetEstimate(int ID)
            {
                // Возвращаемая строка
                string Result = "";

                // Получение данных из БД
                string[] info = Estimate.GetGeneralData(ID);

                // Преобразование строки
                for (int i = 0; i < info.Length; i++)
                {
                    Result += info[i] + "\n";
                }

                return(Result);
            }

            string GetTrackinglist(int ID)
            {
                // Возвращаемая строка
                string Result = "";

                // Получение данных из БД
                string[] info = Trackinglists.GetGeneralData(ID);

                // Преобразование строки
                for (int i = 0; i < info.Length; i++)
                {
                    Result += info[i] + "\n";
                }

                return(Result);
            }

            #endregion
        }
Esempio n. 2
0
        // Удаление строки
        void RemoveRow()
        {
            var    page  = TabMain.SelectedTab;
            var    grid  = (DataGridView)page.Controls[0];
            string table = page.Name.Split('_')[1];

            /* Если выбелено более одной строки */
            if (grid.SelectedRows.Count > 1)
            {
                // Получаем индексы выделенных ячеек
                int[] indexes = new int[grid.SelectedRows.Count];

                for (int i = 0; i < grid.SelectedRows.Count; i++)
                {
                    indexes[i] = grid.SelectedRows[i].Cells[0].Value.exToInt();
                }

                if (new Remove(indexes, table, CheckMoreRelationships(table, indexes)).ShowDialog() == DialogResult.OK)
                {
                    Base.RemoveRows(table, indexes);
                    UpdateData(ROW_INDEX, true, true);                     // Обновление стобца
                }
            }
            /* Если выделена всего одна строка */
            else
            {
                if (new Remove(CheckRelationships(table, ID)).ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        switch (page.Name)
                        {
                        case "FPage_Estimate": Estimate.RemoveRow(ID); break;

                        case "FPage_Trackinglists": Trackinglists.RemoveRow(ID); break;
                        }
                        UpdateData(ROW_INDEX, true);                         // Обновление стобца
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }

            bool CheckRelationships(string initialTable, int id)
            {
                DataTable        checkingTable = new DataTable();
                OleDbDataAdapter adapter;

                // Проверка связанных таблиц
                using (var connection = new OleDbConnection(Base.DB_CONNECTION_STRING))
                {
                    connection.Open();
                    // Выборка из БД, в зависимости от активной таблицы
                    switch (page.Name)
                    {
                    case "FPage_Trackinglists":
                        adapter = new OleDbDataAdapter($"SELECT * FROM Estimate WHERE Estimate_tracklist={id}", connection);
                        adapter.Fill(checkingTable);
                        break;
                    }
                }

                if (checkingTable.Rows.Count != 0)
                {
                    return(true);                    // Если есть строки то true
                }
                else
                {
                    return(false);                     // Если нет строк то false
                }
            }

            bool CheckMoreRelationships(string initialTable, int[] values)
            {
                DataTable        checkingTable = new DataTable();
                OleDbDataAdapter adapter;

                #region Созданние строки запроса
                string CONDITION        = "";
                string CONDITION_COLUMN = "Estimate_tracklist";

                for (int i = 0; i < values.Length; i++)
                {
                    CONDITION += CONDITION_COLUMN + "=" + values[i] + " OR ";
                }

                CONDITION = CONDITION.Remove(CONDITION.Length - 4);
                #endregion

                // Проверка связанных таблиц
                using (var connection = new OleDbConnection(Base.DB_CONNECTION_STRING))
                {
                    connection.Open();
                    // Выборка из БД, в зависимости от активной таблицы
                    switch (page.Name)
                    {
                    case "FPage_Trackinglists":
                        adapter = new OleDbDataAdapter($"SELECT * FROM Estimate WHERE {CONDITION}", connection);
                        adapter.Fill(checkingTable);
                        break;
                    }
                }

                if (checkingTable.Rows.Count != 0)
                {
                    return(true);                    // Если есть строки то true
                }
                else
                {
                    return(false);                    // Если нет строк то false
                }
            }
        }
Esempio n. 3
0
        // +---------------------------------------------------+
        // |			            ЗАГРУЗКА ФОРМЫ                   |
        // +---------------------------------------------------+
        private void FormLoad(object sender, EventArgs e)
        {
            TabMain.ItemSize = new Size(0, 1);

            if (selectedIndex.Split('_')[1].Equals("OrganizationEstimate"))
            {
                TabMain.SelectTab("FPage_Estimate");
            }
            else
            {
                TabMain.SelectTab(selectedIndex);
            }

            object[] Values;             // Для редактирования

            #region Косметические изменения формы
            int constW1 = 305;
            switch (TabMain.SelectedTab.Name)
            {
            case "FPage_CarBrand":                  Width = constW1;                        Height = 110;   break;

            case "FPage_CarModel":                  Width = 337;                                    Height = 150;   break;

            case "FPage_Cars":                                      Width = constW1;                        Height = 230;   break;

            case "FPage_CarType":                           Width = constW1;                        Height = 230;   break;

            case "FPage_Drivers":                           Width = constW1;                        Height = 275;   break;

            case "FPage_Estimate":                  Width = 560;                                    Height = 340;   break;

            case "FPage_Organizations": Width = constW1;                    Height = 160;   break;

            case "FPage_Staff":                                     Width = constW1;                        Height = 235;   break;

            case "FPage_StaffPosition": Width = constW1;                    Height = 110;   break;

            case "FPage_Trackinglists": Width = constW1;                    Height = 500;   break;
            }
            Controls.Add(new Panel
            {
                BackColor = Color.White,
                Location  = new Point(0, 0),
                Width     = Width,
                Height    = 6
            });
            TabMain.SendToBack();
            #endregion

            // Заполнение полей в зависимости от типа открываемой формы
            switch (TYPE)
            {
            case DataCommon.FormType.Add:
                switch (TabMain.SelectedTab.Name)
                {
                case "FPage_CarModel":
                    Image img = new Bitmap(Properties.Resources.add, 16, 16);
                    Button_AddNew_CarBrand.BackgroundImage = img;
                    comboBox1.exFill(DB_ID, "Carbrand_name", "CarBrand");
                    break;

                case "FPage_Cars":
                    Width = constW1; Height = 230;
                    comboBox2.exFillExtra(DB_ID, "CarModel.ID, [CarBrand]![Carbrand_name] & \" - \" & [CarModel]![Carmodel_name] AS Result", "CarBrand INNER JOIN CarModel ON CarBrand.ID = CarModel.Carmodel_brand");
                    comboBox3.exFillExtra(DB_ID, "CarType.ID,  \"[\" & [CarType]![Cartype_code] & \"] - \" & [CarType]![Cartype_name] & \" - \" & [CarType]![Cartype_capacity] AS Result", "CarType");
                    break;

                case "FPage_Estimate":
                    comboBox4.exFill(DB_ID, "Trackinglist_number", "Trackinglists", "Trackinglists.ID NOT IN(SELECT Estimate.Estimate_tracklist FROM Estimate)");
                    break;

                case "FPage_Organizations":
                    comboBox5.SelectedIndex = 0;
                    break;

                case "FPage_Staff":
                    comboBox6.exFill(DB_ID, "Staffposition_name", "StaffPosition");
                    break;

                case "FPage_Trackinglists":
                    int lastnum = Trackinglists.GetLastTrackingNumber();
                    if (lastnum == 0)
                    {
                        textBox23.Text = "0";
                    }
                    else
                    {
                        textBox23.Text = (lastnum + 1).ToString();
                    }
                    comboBox7.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=0");
                    comboBox8.exFillExtra(DB_ID, "Cars.ID, [CarBrand]![Carbrand_name] & \" \" & [CarModel]![Carmodel_name] & \", Гос. номер: \" & [Cars]![Car_number] AS Result", "(CarBrand INNER JOIN CarModel ON CarBrand.ID = CarModel.Carmodel_brand) INNER JOIN Cars ON CarModel.ID = Cars.Car_model");
                    comboBox9.exFillExtra(DB_ID, "Drivers.ID, [Drivers]![Driver_lastname] & \" \" & [Drivers]![Driver_firstname] & \" \" &  [Drivers]![Driver_thirdname] AS Result", "Drivers");
                    comboBox10.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox11.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox12.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox13.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=1");
                    comboBox14.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=2");
                    if (comboBox11.Items.Count > 0)
                    {
                        comboBox11.SelectedIndex = 1;
                    }
                    if (comboBox12.Items.Count > 0)
                    {
                        comboBox12.SelectedIndex = 1;
                    }
                    break;
                }
                break;

            case DataCommon.FormType.Edit:
                switch (TabMain.SelectedTab.Name)
                {
                case "FPage_CarBrand":
                    Values        = Base.GetRowFields(ID, "CarBrand");
                    textBox1.Text = Values[0].ToString();
                    break;

                case "FPage_CarModel":
                    Values = Base.GetRowFields(ID, "CarModel");
                    comboBox1.exFill(DB_ID, "Carbrand_name", "CarBrand");
                    comboBox1.SelectedValue = (int)Values[0];
                    textBox2.Text           = Values[1].ToString();
                    break;

                case "FPage_Cars":
                    Values = Base.GetRowFields(ID, "Cars");
                    comboBox2.exFillExtra(DB_ID, "CarModel.ID, [CarBrand]![Carbrand_name] & \" - \" & [CarModel]![Carmodel_name] AS Result", "CarBrand INNER JOIN CarModel ON CarBrand.ID = CarModel.Carmodel_brand");
                    comboBox3.exFillExtra(DB_ID, "CarType.ID,  \"[\" & [CarType]![Cartype_code] & \"] - \" & [CarType]![Cartype_name] & \" - \" & [CarType]![Cartype_capacity] AS Result", "CarType");
                    comboBox2.SelectedValue = (int)Values[0];
                    textBox3.Text           = Values[1].ToString();
                    textBox4.Text           = Values[2].ToString();
                    comboBox3.SelectedValue = (int)Values[3];
                    break;

                case "FPage_CarType":
                    Values         = Base.GetRowFields(ID, "CarType");
                    textBox5.Text  = Values[0].ToString();
                    textBox6.Text  = Values[1].ToString();
                    textBox7.Text  = Values[2].ToString();
                    textBox33.Text = Values[3].ToString();
                    textBox32.Text = Values[4].ToString();
                    break;

                case "FPage_Drivers":
                    Values         = Base.GetRowFields(ID, "Drivers");
                    textBox9.Text  = Values[0].ToString();
                    textBox8.Text  = Values[1].ToString();
                    textBox10.Text = Values[2].ToString();
                    textBox11.Text = Values[3].ToString();
                    textBox16.Text = Values[4].ToString();
                    break;

                case "FPage_Estimate":
                    int ThisTrackingList = DataCommon.GetFieldValue(ID, "Estimate_tracklist", "Estimate").exToInt();
                    Values = Base.GetRowFields(ID, "Estimate");
                    comboBox4.exFill(DB_ID, "Trackinglist_number", "Trackinglists", $"Trackinglists.ID NOT IN(SELECT Estimate.Estimate_tracklist FROM Estimate WHERE Trackinglists.ID NOT IN({ThisTrackingList}))");
                    textBox13.Text          = Values[0].ToString();
                    textBox14.Text          = Values[1].ToString();
                    comboBox4.SelectedValue = (int)Values[2];
                    //comboBox4.Enabled = false;
                    dateTimePicker1.Value = Convert.ToDateTime(Values[3]);
                    textBox15.Text        = Values[4].ToString();
                    textBox12.Text        = Values[5].ToString();                             //Пробег
                    textBox24.Text        = Values[6].ToString();
                    textBox25.Text        = Values[7].ToString();
                    textBox26.Text        = Values[8].ToString();
                    textBox31.Text        = Values[9].ToString();
                    textBox29.Text        = Values[10].ToString();
                    textBox30.Text        = Values[11].ToString();
                    textBox27.Text        = Values[12].ToString();
                    textBox28.Text        = Values[13].ToString();
                    textBox35.Text        = Values[14].ToString();
                    break;

                case "FPage_Organizations":
                    Values                  = Base.GetRowFields(ID, "Organizations");
                    textBox17.Text          = Values[0].ToString();
                    comboBox5.SelectedIndex = (int)Values[1];
                    break;

                case "FPage_Staff":
                    Values = Base.GetRowFields(ID, "Staff");
                    comboBox6.exFill(DB_ID, "Staffposition_name", "StaffPosition");
                    textBox20.Text          = Values[0].ToString();
                    textBox21.Text          = Values[1].ToString();
                    textBox19.Text          = Values[2].ToString();
                    comboBox6.SelectedValue = (int)Values[3];
                    break;

                case "FPage_StaffPosition":
                    Values         = Base.GetRowFields(ID, "StaffPosition");
                    textBox18.Text = Values[0].ToString();
                    break;

                case "FPage_Trackinglists":
                    Values = Base.GetRowFields(ID, "Trackinglists");
                    comboBox7.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=0");
                    comboBox8.exFillExtra(DB_ID, "Cars.ID, [CarBrand]![Carbrand_name] & \" \" & [CarModel]![Carmodel_name] & \", Гос. номер: \" & [Cars]![Car_number] AS Result", "(CarBrand INNER JOIN CarModel ON CarBrand.ID = CarModel.Carmodel_brand) INNER JOIN Cars ON CarModel.ID = Cars.Car_model");
                    comboBox9.exFillExtra(DB_ID, "Drivers.ID, [Drivers]![Driver_lastname] & \" \" & [Drivers]![Driver_firstname] & \" \" &  [Drivers]![Driver_thirdname] AS Result", "Drivers");
                    comboBox10.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox11.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox12.exFillExtra(DB_ID, "Staff.ID, [Staff]![Staff_lastname] & \" \" & [Staff]![Staff_firstname] & \" \" &  [Staff]![Staff_thirdname] AS Result", "Staff");
                    comboBox13.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=1");
                    comboBox14.exFill(DB_ID, "Organization_name", "Organizations", "Organization_ratio=2");
                    textBox22.Text           = Values[0].ToString();
                    textBox23.Text           = Values[1].ToString();
                    dateTimePicker2.Value    = Convert.ToDateTime(Values[2]);
                    comboBox7.SelectedValue  = (int)Values[3];
                    comboBox8.SelectedValue  = (int)Values[4];
                    comboBox9.SelectedValue  = (int)Values[5];
                    comboBox10.SelectedValue = (int)Values[6];
                    comboBox11.SelectedValue = (int)Values[7];
                    comboBox12.SelectedValue = (int)Values[8];
                    comboBox13.SelectedValue = (int)Values[9];
                    comboBox14.SelectedValue = (int)Values[10];
                    break;
                }
                break;
            }

            if (TYPE == DataCommon.FormType.Edit)
            {
                // Замена событий
                Button_Add.Click -= Button_Add_Click;
                Button_Add.Click += Button_Save_Click;

                // Прочие изменения
                Text            = "Редактировать запись";
                Button_Add.Text = "Сохранить";
            }
        }
Esempio n. 4
0
        // +---------------------------------------------------+
        // |			          ОБНОВЛЕНИЕ ДАННЫХ                  |
        // +---------------------------------------------------+
        private void Button_Save_Click(object sender, EventArgs e)
        {
            switch (TabMain.SelectedTab.Name)
            {
            case "FPage_CarBrand":
                CarBrand carBrand = new CarBrand
                {
                    BrandName = textBox1.Text
                };
                carBrand.EditRow(ID);
                break;

            case "FPage_CarModel":
                CarModel carModel = new CarModel
                {
                    Brand     = comboBox1.SelectedValue.ToString(),
                    ModelName = textBox2.Text
                };
                carModel.EditRow(ID);
                break;

            case "FPage_Cars":
                Cars cars = new Cars
                {
                    Model     = comboBox2.SelectedValue.ToString(),
                    Number    = textBox3.Text,
                    InvNumber = textBox4.Text,
                    Type      = comboBox3.SelectedValue.ToString()
                };
                cars.EditRow(ID);
                break;

            case "FPage_CarType":
                CarType carType = new CarType
                {
                    TypeCode   = textBox5.Text,
                    TypeName   = textBox6.Text,
                    Capacity   = textBox7.Text,
                    InWorkRate = textBox33.Text,
                    InWaitRate = textBox32.Text
                };
                carType.EditRow(ID);
                break;

            case "FPage_Drivers":
                Drivers drivers = new Drivers
                {
                    FirstName = textBox9.Text,
                    LastName  = textBox8.Text,
                    ThirdName = textBox10.Text,
                    Licence   = textBox11.Text,
                    Class     = textBox16.Text
                };
                drivers.EditRow(ID);
                break;

            case "FPage_Estimate":
                Estimate estimate = new Estimate
                {
                    PacketNumber     = textBox13.Text,
                    Order            = textBox14.Text,
                    TrackinglistNum  = comboBox4.SelectedValue.ToString(),
                    TrackinglistDate = dateTimePicker1.Value.ToShortDateString(),
                    Lot         = textBox15.Text,
                    Duration    = textBox12.Text,
                    InWorkTime  = textBox24.Text,
                    InWorkRate  = textBox25.Text,
                    InWorkHols  = textBox26.Text,
                    InWorkPrice = textBox31.Text,
                    InWaitTime  = textBox29.Text,
                    InWaitRate  = textBox30.Text,
                    InWaitHols  = textBox27.Text,
                    InWaitPrice = textBox28.Text,
                    FinalPrice  = textBox35.Text
                };
                estimate.EditRow(ID);
                break;

            case "FPage_Organizations":
                Organisations organisations = new Organisations
                {
                    Name  = textBox17.Text,
                    Ratio = comboBox5.SelectedIndex.ToString()
                };
                organisations.EditRow(ID);
                break;

            case "FPage_Staff":
                Staff staff = new Staff
                {
                    FirstName = textBox20.Text,
                    LastName  = textBox21.Text,
                    ThirdName = textBox19.Text,
                    Position  = comboBox6.SelectedValue.ToString()
                };
                staff.EditRow(ID);
                break;

            case "FPage_StaffPosition":
                StaffPosition staffPosition = new StaffPosition
                {
                    PositionName = textBox18.Text
                };
                staffPosition.EditRow(ID);
                break;

            case "FPage_Trackinglists":
                Trackinglists trackinglists = new Trackinglists
                {
                    Series         = textBox22.Text,
                    Number         = textBox23.Text,
                    Date           = dateTimePicker2.Value.ToShortDateString(),
                    Organization   = comboBox7.SelectedValue.ToString(),
                    Transport      = comboBox8.SelectedValue.ToString(),
                    Driver         = comboBox9.SelectedValue.ToString(),
                    Dispatcher     = comboBox10.SelectedValue.ToString(),
                    Medic          = comboBox11.SelectedValue.ToString(),
                    Mechanic       = comboBox12.SelectedValue.ToString(),
                    Organization_2 = comboBox13.SelectedValue.ToString(),
                    Organization_3 = comboBox14.SelectedValue.ToString()
                };
                trackinglists.EditRow(ID);
                break;
            }
        }
Esempio n. 5
0
        private void ReportButtonClick(object sender, EventArgs e)
        {
            var item = ((Button)sender);
            FolderBrowserDialog dialog = new FolderBrowserDialog
            {
                Description         = "Выберите папку для сохранения отчета",
                RootFolder          = Environment.SpecialFolder.MyComputer,
                ShowNewFolderButton = true
            };

            switch (Mode.SelectedIndex)
            {
            case 0: // Путевые листы
                switch (item.Name)
                {
                case "B_Trackinglist":
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        if (DataList_Report.SelectedRows.Count > 1)
                        {
                            // Получаем индексы выделенных ячеек
                            int[] indexes = new int[DataList_Report.SelectedRows.Count];
                            for (int i = 0; i < DataList_Report.SelectedRows.Count; i++)
                            {
                                indexes[i] = DataList_Report.SelectedRows[i].Cells[0].Value.exToInt();
                            }

                            Trackinglists.Report(ReportType.Trackinglist, dialog.SelectedPath, ArrayOfIDs: indexes);
                        }
                        else
                        {
                            Trackinglists.Report(ReportType.Trackinglist, dialog.SelectedPath, ID);
                        }
                    }
                    break;

                case "B_Reference":
                    if (new Reference().ShowDialog() == DialogResult.OK)
                    {
                        if (dialog.ShowDialog() == DialogResult.OK)
                        {
                            Trackinglists.Report(ReportType.Reference, dialog.SelectedPath, ID);
                        }
                    }
                    break;

                case "B_Registry":
                    if (new Duration().ShowDialog() == DialogResult.OK)
                    {
                        Trackinglists.Report(ReportType.Registry, ID: ID);
                    }

                    break;
                }
                break;

            case 1: // Смета
                switch (item.Name)
                {
                case "B_Trackinglist":
                    int T_ID = Convert.ToInt32(DataCommon.GetFieldValue(ID, "Estimate_tracklist", "Estimate"));
                    Trackinglists.Report(ReportType.Trackinglist, ID: T_ID);
                    break;
                }
                break;
            }
        }