private void button1_Click(object sender, EventArgs e)
 {
     Connect_to_sql conn = new Connect_to_sql();
     Connect_to_sql.AgroNewRaschet new_ras = new Connect_to_sql.AgroNewRaschet();
     string connect_string = conn.Con_str();
     new_ras.date = dateTimePicker1.Value;
     new_ras.name_polya = comboBox1.Text;
     new_ras.sloj0_5 = checkBox2.Checked;
     new_ras.marshrut = checkBox1.Checked;
     int kod_polya = conn.AddNewRaschet(new_ras, connect_string);
     string query = "SELECT kod FROM t_Glavnaya WHERE kod_Polya="+kod_polya+" AND Date='"+new_ras.date.Date+"'";
     new_ras.Glav_ID = conn.ExecQueryWithResult(connect_string, query);
     Form1 f_glavn = (Form1)this.Owner;
     f_glavn.StartRaschet(true);
     f_glavn.SetCurPole(comboBox1.Text, dateTimePicker1.Value.ToShortDateString());
     f_glavn.ras_param = new_ras;
     f_glavn.SetSloj0_5(new_ras.sloj0_5);
     f_glavn.comboBox1.Items.Clear();
     f_glavn.comboBox1.Items.Add(1);
     Close();
 }
        private void button1_Click(object sender, EventArgs e)
        {
            int ind_selRow = dataGridView1.CurrentRow.Index;
            Connect_to_sql.AgroNewRaschet edit_ras = new Connect_to_sql.AgroNewRaschet();
            int id_glav =Convert.ToInt32(dataGridView1[0, ind_selRow].Value);
            Connect_to_sql conn = new Connect_to_sql();
            string connect_string = conn.Con_str();
            SqlConnection myConnection = new SqlConnection(connect_string);
            string myInsertQuery = "SELECT     t_Glavnaya.Date, t_Glavnaya.Kod_Polya, t_Naz_poley.Ima_polya, t_Glavnaya.Kod_Sred, t_Glavnaya.Progress, t_Glavnaya.sloj0_5, "
                      +"t_Glavnaya.marshrut "
                      +"FROM         t_Glavnaya INNER JOIN "
                      +"t_Naz_poley ON t_Glavnaya.Kod_Polya = t_Naz_poley.kod_polya "
                      +"WHERE     (t_Glavnaya.Kod ="+ id_glav +")";
            SqlCommand myCommand = new SqlCommand(myInsertQuery);
            myCommand.Connection = myConnection;
            myConnection.Open();
            SqlDataReader reader = myCommand.ExecuteReader();
            while (reader.Read())
            {
                edit_ras.date =Convert.ToDateTime(reader[0]);
                edit_ras.kod_polya = Convert.ToInt32(reader[1]);
                edit_ras.name_polya = Convert.ToString(reader[2]);
                if  ((reader[3]).ToString()!="")
                {
                    edit_ras.kod_sred = Convert.ToInt32(reader[3]);
                }
                else
                    edit_ras.kod_sred = -1;
                edit_ras.progress = Convert.ToInt32(reader[4]);
                edit_ras.sloj0_5 = Convert.ToBoolean(reader[5]);
                edit_ras.marshrut = Convert.ToBoolean(reader[6]);
                edit_ras.Glav_ID = id_glav;

            }
            myCommand.Connection.Close();
            Form1 glForm = (Form1)this.Owner;
            glForm.ras_param = edit_ras;
            glForm.StartRaschet(true);
            glForm.comboBox1.Items.Clear();
            glForm.button3_Click(null, EventArgs.Empty);
            if (!edit_ras.marshrut)
            {
                if (edit_ras.progress < 4)
                {
                    for (int i = 1; i <= edit_ras.progress + 1; i++)
                    {
                        glForm.comboBox1.Items.Add(i);
                    }
                }
                else
                {
                    for (int i = 1; i <= edit_ras.progress; i++)
                    {
                        glForm.comboBox1.Items.Add(i);
                    }
                }
            }
            else
            {
                if (edit_ras.progress < 2)
                {
                    for (int i = 1; i <= edit_ras.progress + 1; i++)
                    {
                        glForm.comboBox1.Items.Add(i);
                    }
                }
                else
                {
                    for (int i = 1; i <= edit_ras.progress; i++)
                    {
                        glForm.comboBox1.Items.Add(i);
                    }
                }
            }
            glForm.SetCurPole(edit_ras.name_polya, edit_ras.date.ToShortDateString());
            glForm.SetSloj0_5(edit_ras.sloj0_5);
            glForm.SetDataToTextBoxSredn();
            Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            int ind_selRow = dataGridView1.CurrentRow.Index;
            Connect_to_sql.AgroNewRaschet edit_ras = new Connect_to_sql.AgroNewRaschet();
            int id_glav = Convert.ToInt32(dataGridView1[0, ind_selRow].Value);
            Connect_to_sql conn = new Connect_to_sql();
            string connect_string = conn.Con_str();
            SqlConnection myConnection = new SqlConnection(connect_string);
            string myInsertQuery = "SELECT     t_Glavnaya.Date, t_Glavnaya.Kod_Polya, t_Naz_poley.Ima_polya, t_Glavnaya.Kod_Sred, t_Glavnaya.Progress, t_Glavnaya.sloj0_5, "
                      + "t_Glavnaya.marshrut "
                      + "FROM         t_Glavnaya INNER JOIN "
                      + "t_Naz_poley ON t_Glavnaya.Kod_Polya = t_Naz_poley.kod_polya "
                      + "WHERE     (t_Glavnaya.Kod =" + id_glav + ")";
            SqlCommand myCommand = new SqlCommand(myInsertQuery);
            myCommand.Connection = myConnection;
            myConnection.Open();
            SqlDataReader reader = myCommand.ExecuteReader();
            while (reader.Read())
            {
                edit_ras.date = Convert.ToDateTime(reader[0]);
                edit_ras.kod_polya = Convert.ToInt32(reader[1]);
                edit_ras.name_polya = Convert.ToString(reader[2]);
                if ((reader[3]).ToString() != "")
                {
                    edit_ras.kod_sred = Convert.ToInt32(reader[3]);
                }
                else
                    edit_ras.kod_sred = -1;
                edit_ras.progress = Convert.ToInt32(reader[4]);
                edit_ras.sloj0_5 = Convert.ToBoolean(reader[5]);
                edit_ras.marshrut = Convert.ToBoolean(reader[6]);
                edit_ras.Glav_ID = id_glav;

            }
            myCommand.Connection.Close();
            Excel.Workbooks excelappworkbooks;
            Excel.Workbook excelappworkbook;
            Excel.Application appl = new Excel.Application();
            appl.Visible = false;
            appl.SheetsInNewWorkbook = edit_ras.progress+1;
            appl.Workbooks.Add(Type.Missing);
            Excel.Sheets excelsheets;
            Excel.Worksheet excelworksheet;
            Excel.Range excelcells;
            excelappworkbooks = appl.Workbooks;
            excelappworkbook = excelappworkbooks[1];
            excelsheets = excelappworkbook.Worksheets;
            string[] polya = {"Слой почвы см", "Масса влажной почвы\n и стаканчика", "Масса сухой почвы\n и стаканчика", "Масса стаканчиков",
                             "Масса испарившейся\n воды", "Масса сухой почвы\n без стаканчика", "Влажность почвы %", "Масса влажной почвы\n без стаканчика"};
            for (int j = 1; j <= edit_ras.progress; j++)
            {
                int sl = 0;

                Connect_to_sql.AgroDataPovt[] agro_data = new Connect_to_sql.AgroDataPovt[11];
                excelworksheet = (Excel.Worksheet)excelsheets.get_Item(j);

                excelcells = excelworksheet.get_Range("A1", "H4");
                excelcells.Merge(Type.Missing);
                excelcells.Font.Bold = true;
                excelcells.Font.Size = 15;
                excelcells.Borders.Weight = 3;
                excelcells.Borders.Value = 1;
                excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                excelcells.Value2 = "Отчет по " + j.ToString() + "й повторности\n Дата:" + edit_ras.date.ToLongDateString();
                if(edit_ras.sloj0_5)
                    excelcells = excelworksheet.get_Range("A7", "H17");
                else
                    excelcells = excelworksheet.get_Range("A7", "H16");
                excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                excelcells.Borders.Weight = 2;
                excelcells.Borders.Value = 1;

                for (int i = 1; i < 9; i++)
                {
                    excelcells = (Excel.Range)excelworksheet.Cells[6, i];
                    excelcells.Borders.Weight = 2;
                    excelcells.Orientation = 90;
                    excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                    excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                    excelcells.Font.Size = 9;
                    excelcells.NumberFormat = "@";
                    excelcells.Borders.Value = 1;
                    excelcells.Value2 = polya[i - 1];
                }
                bool tr = false;
                int col;
                if (edit_ras.sloj0_5)
                    col = 0;
                else
                    col = 1;

                string query_ifex = "SELECT kod_data FROM t_data_povt WHERE kod_Glavn=" + edit_ras.Glav_ID + " AND povtornost=" + j;
                int ifexist = conn.ExecQueryWithResult(connect_string, query_ifex);
                if (ifexist != -1)
                {
                    int kod_st; //неиспользуемае переменная, нужна для работы функции
                    agro_data = conn.SelectFromDataPovt(edit_ras.Glav_ID, j,out kod_st, connect_string);
                    for (int i = col; i < 11; i++)
                    {

                        if (i == 0)
                        {
                            excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 1];
                            excelcells.NumberFormat = "@";
                            excelcells.Value2 = sl.ToString() + " - " + (sl + 5).ToString();
                            sl += 5;
                            tr = true;
                        }
                        else
                        {
                            excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 1];
                            excelcells.NumberFormat = "@";

                            if (tr)
                            {
                                excelcells.Value2 = sl.ToString() + " - " + (sl + 5).ToString();
                                sl += 5;
                                tr = false;
                            }
                            else
                            {
                                excelcells.Value2 = sl.ToString() + " - " + (sl + 10).ToString();
                                sl += 10;
                            }
                        }

                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 2];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].ves_vlazhnoj);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 3];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].ves_suhoj);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 4];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].ves_stakan);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 5];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].vlazhn_suhaya);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 6];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].suhaya_stakan);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 7];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].procent_isparivsh_vlagi);
                        excelcells = (Excel.Range)excelworksheet.Cells[i + 7 - col, 8];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_data[i].vlazhnaya_stakan);
                    }
                }
            }
            if (edit_ras.kod_sred != -1)
            {
                int kod_sred;
                Connect_to_sql.AgroDataSredn[] agro_sred = conn.SelectDataFromDataSredn(edit_ras.kod_sred,edit_ras.sloj0_5,out kod_sred,connect_string);
                excelworksheet = (Excel.Worksheet)excelsheets.get_Item(edit_ras.progress+1);

                string name_r = "";

                myConnection = new SqlConnection(connect_string);
                myInsertQuery = "SELECT * FROM t_razrez WHERE kod_razrez=" + kod_sred;
               myCommand = new SqlCommand(myInsertQuery);
                myCommand.Connection = myConnection;
                myConnection.Open();
                reader = myCommand.ExecuteReader();
                //Connect_to_sql.AgroRazrez[] raz = new Connect_to_sql.AgroRazrez[11];
                int ii = 0;
                string[,] raz = new string[2,11];
                while (reader.Read())
                {
                    name_r = reader[1].ToString();
                    for (int i = 2; i < 13; i++)
                    {
                        raz[0,ii] = reader[i].ToString();
                        ii++;
                    }
                    ii = 0;
                    for (int i = 13; i < 24; i++)
                    {
                        raz[1, ii] = reader[i].ToString();
                        ii++;
                    }
                }
                myCommand.Connection.Close();

                            string[] polya_2 = {"Слой","Объемная масса почвы", "Влажность устойчивого\nзавядание", "Расчитанная влажность\n%","Запасы влаги\nв мм.", "Запасы влаги\nнарастающим итогом"};
                int sl = 0;
                if(edit_ras.sloj0_5)
                    excelcells = excelworksheet.get_Range("A1", "L3");
                else
                    excelcells = excelworksheet.get_Range("A1", "K3");
                excelcells.Merge(Type.Missing);
                excelcells.Font.Bold = true;
                excelcells.Font.Size = 15;
                excelcells.Borders.Weight = 3;
                excelcells.Borders.Value = 1;
                excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                excelcells.Value2 = "Отчет по по запасам влаги, на " + edit_ras.date.ToLongDateString();
                if(edit_ras.sloj0_5)
                    excelcells = excelworksheet.get_Range("A4", "L9");
                else
                    excelcells = excelworksheet.get_Range("A4", "K9");
                excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                excelcells.Borders.Weight = 2;
                excelcells.Borders.Value = 1;

                for (int i = 4; i < 10; i++)
                {
                    excelcells = (Excel.Range)excelworksheet.Cells[i, 1];
                    excelcells.Borders.Weight = 2;
                    //excelcells.Orientation = 90;
                    excelcells.HorizontalAlignment = Excel.Constants.xlLeft;
                    excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                    excelcells.Font.Size = 9;
                    excelcells.NumberFormat = "@";
                    excelcells.Borders.Value = 1;
                    excelcells.Value2 = polya_2[i - 4];
                    excelcells.ColumnWidth = 20;
                }
                bool tr = false;
                int col;
                if (edit_ras.sloj0_5)
                    col = 0;
                else
                    col = 1;

                    for (int i = col; i < 11; i++)
                    {

                        if (i == 0)
                        {
                            excelcells = (Excel.Range)excelworksheet.Cells[4,i + 2 - col];
                            excelcells.NumberFormat = "@";
                            excelcells.Value2 = sl.ToString() + " - " + (sl + 5).ToString();
                            sl += 5;
                            tr = true;
                        }
                        else
                        {
                            excelcells = (Excel.Range)excelworksheet.Cells[4,i + 2 - col];
                            excelcells.NumberFormat = "@";

                            if (tr)
                            {
                                excelcells.Value2 = sl.ToString() + " - " + (sl + 5).ToString();
                                sl += 5;
                                tr = false;
                            }
                            else
                            {
                                excelcells.Value2 = sl.ToString() + " - " + (sl + 10).ToString();
                                sl += 10;
                            }
                        }
                        excelcells = (Excel.Range)excelworksheet.Cells[5, i + 2 - col];
                        excelcells.Value2 = raz[0, i];
                        excelcells = (Excel.Range)excelworksheet.Cells[6, i + 2 - col];
                        excelcells.Value2 = raz[1, i];

                        excelcells = (Excel.Range)excelworksheet.Cells[7, i + 2 - col];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_sred[i].stroka3);
                        excelcells = (Excel.Range)excelworksheet.Cells[8, i + 2 - col];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_sred[i].stroka4);
                        excelcells = (Excel.Range)excelworksheet.Cells[9, i + 2 - col];
                        excelcells.Value2 = conn.ConvertFloatToString(agro_sred[i].stroka5);
                    }
                    float[] val = new float[10];
                    for (int k = 0; k < 10; k++)
                    {
                        val[k] = agro_sred[k+1].stroka5;
                    }
                    Form1 f_owner = (Form1)this.Owner;
                    string[] step_t = new string[7];
                    step_t[0] = "Почвенная засуха сильная";
                    step_t[1] = "Почвенная засуха слабая";
                    step_t[2] = "Недостаточное увлажнение сильное";
                    step_t[3] = "Недостаточное увлажнение слабое";
                    step_t[4] = "Оптимальное увлажнение";
                    step_t[5] = "Избыточное увлажнение";
                    step_t[6] = "Заболачивание";

                    Connect_to_sql.ResultStepUvl[] res_step = conn.GetResultStepUvl(val, name_r, connect_string);
                    for (int k = 12; k < 17; k++)
                    {
                        for (int p = 1; p < 9; p++)
                        {
                            excelcells = (Excel.Range)excelworksheet.Cells[k, p];
                            excelcells.Merge(Type.Missing);
                            excelcells.Font.Bold = true;
                            excelcells.Font.Size = 10;
                            excelcells.Borders.Weight = 2;
                            excelcells.Borders.Value = 1;
                            excelcells.HorizontalAlignment = Excel.Constants.xlLeft;
                            excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                        }
                    }
                    excelcells = excelworksheet.get_Range("A11", "h12");
                    excelcells.Merge(Type.Missing);
                    excelcells.Font.Bold = true;
                    excelcells.Font.Size = 15;
                    excelcells.Borders.Weight = 3;
                    excelcells.Borders.Value = 1;
                    excelcells.HorizontalAlignment = Excel.Constants.xlCenter;
                    excelcells.VerticalAlignment = Excel.Constants.xlCenter;
                    excelcells.Value2 = "Степень увлажнения почвы по слоям";

                    excelcells = excelworksheet.get_Range("a13", "b13");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = "Слой 0-10";
                    excelcells = excelworksheet.get_Range("c13", "h13");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = step_t[res_step[0].znachenie];

                    excelcells = excelworksheet.get_Range("a14", "b14");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = "Слой 0-20";
                    excelcells = excelworksheet.get_Range("c14", "h14");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = step_t[res_step[1].znachenie];

                    excelcells = excelworksheet.get_Range("a15", "b15");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = "Слой 0-50";
                    excelcells = excelworksheet.get_Range("c15", "h15");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = step_t[res_step[4].znachenie];

                    excelcells = excelworksheet.get_Range("a16", "b16");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = "Слой 0-100";
                    excelcells = excelworksheet.get_Range("c16", "h16");
                    excelcells.Merge(Type.Missing);
                    excelcells.Value2 = step_t[res_step[9].znachenie];

            }

            appl.Visible = true;
        }