Пример #1
0
        private void Store_DB_Click(object sender, EventArgs e)
        {
            newRow = show_loaded_data.RowCount - 1;
            newCol = show_loaded_data.ColumnCount;
            int dataCounts = newCol * newRow;

            object[] data = new object[dataCounts];

            Data_save.save_btn_clicked = false;
            bool PK_value_check = true;

            newRow = show_loaded_data.RowCount - 1;
            newCol = show_loaded_data.ColumnCount;
            int Counts = newCol * newRow;

            object[] inputs = new object[Counts];
            int      index  = 0;

            //PK 값들 다 채워져 있는지 체크
            for (int r = 0; r < newRow; r++)
            {
                for (int c = 0; c < newCol; c++)
                {
                    inputs[index] = show_loaded_data.Rows[r].Cells[c].Value;
                    if (c > 0 && c < 5)
                    {
                        if (inputs[index] == null || inputs[index].ToString() == "")
                        {
                            PK_value_check = false;
                        }
                    }
                    index++;
                }
            }
            if (PK_value_check == false)
            {
                MessageBox.Show($"UNIT, FLUID, SEQUENCE NUMBER, PIPING SPEC. 열을 채워야 합니다.");
            }
            else
            {
                object[,] data2 = new object[newRow, newCol];
                index           = 0;
                for (int r = 0; r < newRow; r++)
                {
                    for (int c = 0; c < newCol; c++)
                    {
                        data[index] = show_loaded_data.Rows[r].Cells[c].Value;
                        data2[r, c] = show_loaded_data.Rows[r].Cells[c].Value;
                        //Debug.WriteLine("data[" + r + "," + c + "] = " + data2[r, c]);
                        index++;
                    }
                }
                List <int> pickedRows = dataCheck(data2, newRow);

                if (pickedRows.Count == 0)  // 겹치는 PK 값이 없다면
                {
                    Data_save save = new Data_save();
                    save.ShowDialog();
                }
                else    // 겹치는 PK 값이 있다면
                {
                    foreach (int r in pickedRows)
                    {
                        for (int c = 1; c < 5; c++)
                        {
                            show_loaded_data.Rows[r].Cells[c].Style.BackColor = System.Drawing.Color.Pink;
                        }
                    }
                    MessageBox.Show("값이 겹치는 행이 있습니다.");
                }
            }

            // PK값 체크를 통과하고 저장 버튼이 눌리면
            if (Data_save.save_btn_clicked)
            {
                bool success = false;
                Linelist_WCF.Service1Client client = new Linelist_WCF.Service1Client();
                success = client.Put_data_into_DB(data, newRow, newCol, Data_save.user_name_input, Data_save.date_input, Data_save.comment_input);
                if (success)
                {
                    MessageBox.Show($"데이터를 성공적으로 저장했습니다.");
                }
                else
                {
                    MessageBox.Show($"DB 연결 실패");
                }
            }
            else
            {
                Debug.WriteLine("저장 안됌");
            }
        }
Пример #2
0
        private void Excel_Button_Click(object sender, EventArgs e)
        {
            //엑셀 변수 선언
            Excel.Application xlApp       = null;
            Excel.Workbook    xlWorkbook  = null;
            Excel.Worksheet   xlWorksheet = null;
            object[,] data;
            //파일 선택
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "엑셀 파일 (*.xlsx)|*.xlsx|엑셀 파일 (*.xls)|*.xls";

            //파일을 열수 있는지 확인
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    xlApp       = new Excel.Application();
                    xlWorkbook  = xlApp.Workbooks.Open(ofd.FileName);// 엑셀 파일 가져오기
                    xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1);

                    range = xlWorksheet.UsedRange;   //엑셀 시트범위 설정

                    data      = range.Value;         // 지정된 시트 2차원 배열에 담기
                    rowCounts = range.Rows.Count;    // 행 개수
                    colCounts = range.Columns.Count; //열 개수

                    //Debug.WriteLine("col counts: " + colCounts);

                    int dataStartRow = 1;
                    int dataStartCol = 1;
                    int dataEndRow   = 0;
                    int dataEndCol   = 0;

                    for (int r = 1; r < rowCounts; r++)
                    {
                        for (int c = 1; c < colCounts; c++)
                        {
                            Debug.WriteLine("row, col: " + r + ", " + c);
                            if (data[r, c] != null)
                            {
                                Debug.WriteLine("data[r, c]: " + data[r, c]);
                                if (data[r, c].ToString().Equals("P&ID NO."))
                                {
                                    dataEndRow = r;
                                    dataEndCol = c;
                                    break;
                                }
                                else if (data[r, c].ToString().Equals("LINE INFORMATION"))
                                {
                                    dataStartRow = r + 1;
                                    dataStartCol = c;
                                    break;
                                }
                            }
                        }
                        if (dataEndRow != 0)
                        {
                            break;
                        }
                    }
                    Debug.WriteLine("data start row: " + dataStartRow);
                    Debug.WriteLine("data start col: " + dataStartCol);
                    Debug.WriteLine("data end row: " + dataEndRow);


                    if ((dataEndCol - dataStartCol + 1) != 19)
                    {    // 콜롬 개수가 지정된 19개가 아니라면 경고 창 띄움
                        MessageBox.Show("정의된 열 개수를 벗어났습니다.\n 데이터를 저장하지 않았습니다.");
                    }
                    else
                    {
                        newRow = rowCounts - dataStartRow;
                        newCol = colCounts - dataStartCol;  //19
                        int newArrayCounts = newRow * newCol;
                        arr = new object[newArrayCounts];
                        int index = 0;

                        for (int r = dataStartRow + 1; r <= rowCounts; r++)
                        {
                            if (index > newArrayCounts)
                            {
                                break;
                            }
                            for (int c = dataStartCol; c < colCounts; c++)
                            {
                                arr[index] = data[r, c];
                                index++;
                                //Debug.WriteLine("data[" + r + ", " + c + "] = " + data[r, c]);
                            }
                        }
                        bool success = false;
                        Linelist_WCF.Service1Client client = new Linelist_WCF.Service1Client();
                        success = client.Put_data_into_DB(arr, newRow, newCol, "", "", "");
                        if (success)
                        {
                            MessageBox.Show($"데이터를 성공적으로 저장했습니다.");
                        }
                        else
                        {
                            MessageBox.Show($"DB 연결 실패");
                        }
                    }
                    xlWorkbook.Close(true);
                    xlApp.Quit();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    ReleaseExcelObject(xlWorksheet);
                    ReleaseExcelObject(xlWorkbook);
                    ReleaseExcelObject(xlApp);
                }
            }
            else
            {
                MessageBox.Show($"저장 할 파일이 선택 되지 않았습니다.");
            }
        }