Esempio n. 1
0
        private void button3_Click(object sender, EventArgs e)
        {
            // 環境設定年月の確認
            string msg = "処理対象年月は " + global.cnfYear.ToString() + "年 " + global.cnfMonth.ToString() + "月です。よろしいですか?";

            if (MessageBox.Show(msg, "勤務データ登録", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
            {
                return;
            }

            // 出勤日数マスター登録チェック
            MTYSDataSetTableAdapters.出勤日数TableAdapter adp = new MTYSDataSetTableAdapters.出勤日数TableAdapter();
            adp.Fill(dts.出勤日数);

            var s = dts.出勤日数.Where(a => a.年 == Utility.StrtoInt(global.cnfYear.ToString()) && a.月 == Utility.StrtoInt(global.cnfMonth.ToString()));

            if (s.Count() == 0)
            {
                MessageBox.Show(global.cnfYear.ToString() + "年" + global.cnfMonth.ToString() + "月の出勤日数が登録されていません。" + Environment.NewLine + "「マスターメンテナンス」-「出勤日数マスター保守」で出勤日数を登録してください。", "出勤日数未登録", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            this.Hide();
            OCR.frmCorrect frm = new OCR.frmCorrect(string.Empty);
            frm.ShowDialog();
            this.Show();
        }
Esempio n. 2
0
        /// <summary>
        /// 社員出勤簿印刷・シート追加一括印刷
        /// </summary>
        private void sReport()
        {
            // 休日テーブル読み込み
            MTYSDataSetTableAdapters.休日TableAdapter adpH = new MTYSDataSetTableAdapters.休日TableAdapter();
            adpH.Fill(dts.休日);

            // 出勤日数テーブル読み込み
            MTYSDataSetTableAdapters.出勤日数TableAdapter adpS = new MTYSDataSetTableAdapters.出勤日数TableAdapter();
            adpS.Fill(dts.出勤日数);

            //エクセルファイル日付明細開始行
            const int S_GYO = 6;

            string   sDate;
            DateTime eDate;

            try
            {
                //マウスポインタを待機にする
                this.Cursor = Cursors.WaitCursor;

                string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

                Excel.Application oXls = new Excel.Application();

                // 勤務報告書テンプレートシート
                Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.sxlsPath,
                                                                               Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing));

                // 勤務報告書印刷用シート
                Excel.Workbook oXlsPrintBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.wxlsPath,
                                                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                    Type.Missing, Type.Missing));

                Excel.Worksheet oxlsOosaka     = (Excel.Worksheet)oXlsBook.Sheets[1]; // 大阪製造部書式
                Excel.Worksheet oxlsShizuoka   = (Excel.Worksheet)oXlsBook.Sheets[2]; // 静岡書式
                Excel.Worksheet oxlsHonsha     = (Excel.Worksheet)oXlsBook.Sheets[3]; // 本社書式
                Excel.Worksheet oxlsPrintSheet = null;                                // 印刷用ワークシート

                Excel.Range[] rng = new Microsoft.Office.Interop.Excel.Range[2];

                string Category = string.Empty;

                try
                {
                    int pCnt = 0;

                    //グリッドを順番に読む
                    for (int i = 0; i < dg1.RowCount; i++)
                    {
                        //チェックがあるものを対象とする
                        if (dg1[0, i].Value.ToString() == "True")
                        {
                            pCnt++;       // ページカウント

                            int sRow = i; // グリッド行インデックス取得

                            // 帳票区分取得
                            Category = dg1[9, sRow].Value.ToString();

                            // 印刷用BOOKへシートを追加する
                            if (Category == global.C_HONSHA)        // 本社
                            {
                                oxlsHonsha.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]);
                            }
                            else if (Category == global.C_SHIZUOKA) // 静岡
                            {
                                oxlsShizuoka.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]);
                            }
                            else if (Category == global.C_OOSAKA)   // 大阪
                            {
                                oxlsOosaka.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]);
                            }

                            // カレントのシートを設定
                            oxlsPrintSheet = (Excel.Worksheet)oXlsPrintBook.Sheets[pCnt + 1];

                            //// 印刷2件目以降はシートを追加する
                            //if (pCnt > 1)
                            //{
                            //    oxlsSheet.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt - 1]);
                            //    oxlsSheet = (Excel.Worksheet)oXlsPrintBook.Sheets[pCnt];
                            //}

                            // 社員番号
                            oxlsPrintSheet.Cells[2, 19] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(0, 1);
                            oxlsPrintSheet.Cells[2, 20] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(1, 1);
                            oxlsPrintSheet.Cells[2, 21] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(2, 1);
                            oxlsPrintSheet.Cells[2, 22] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(3, 1);

                            // 職級
                            oxlsPrintSheet.Cells[2, 25] = dg1[6, sRow].Value.ToString();

                            // 年
                            oxlsPrintSheet.Cells[2, 11] = string.Format("{0, 2}", int.Parse(txtYear.Text)).Substring(2, 1);
                            oxlsPrintSheet.Cells[2, 12] = string.Format("{0, 2}", int.Parse(txtYear.Text)).Substring(3, 1);

                            // 月
                            oxlsPrintSheet.Cells[2, 14] = string.Format("{0, 2}", int.Parse(txtMonth.Text)).Substring(0, 1);
                            oxlsPrintSheet.Cells[2, 15] = string.Format("{0, 2}", int.Parse(txtMonth.Text)).Substring(1, 1);

                            // 所属コード
                            oxlsPrintSheet.Cells[3, 3] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(0, 1);
                            oxlsPrintSheet.Cells[3, 4] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(1, 1);
                            oxlsPrintSheet.Cells[3, 5] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(2, 1);
                            oxlsPrintSheet.Cells[3, 6] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(3, 1);
                            oxlsPrintSheet.Cells[3, 7] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(4, 1);
                            oxlsPrintSheet.Cells[3, 8] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(5, 1);

                            // 所属名
                            oxlsPrintSheet.Cells[3, 11] = dg1[5, sRow].Value.ToString();

                            // 氏名
                            oxlsPrintSheet.Cells[3, 19] = dg1[2, sRow].Value.ToString();

                            // 出勤すべき日数を取得
                            var h = dts.出勤日数.Where(a => a.RowState != DataRowState.Deleted && a.RowState != DataRowState.Detached &&
                                                   a.年.ToString() == txtYear.Text && a.月.ToString() == txtMonth.Text);

                            string injiNisu = string.Empty;

                            foreach (var t in h)
                            {
                                if (Category == global.C_HONSHA || Category == global.C_SHIZUOKA)             // 本社のとき
                                {
                                    injiNisu = t.本社静岡印字用.ToString();
                                }
                                else if (Category == global.C_OOSAKA)                       // 大阪製造部のとき
                                {
                                    if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_A) // 大阪製造Aのとき
                                    {
                                        injiNisu = t.大阪A印字用.ToString();
                                    }
                                    else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_B)    // 大阪製造Bのとき
                                    {
                                        injiNisu = t.大阪B印字用.ToString();
                                    }
                                    else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_C)    // 大阪製造Cのとき
                                    {
                                        injiNisu = t.大阪C印字用.ToString();
                                    }
                                    else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_D)    // 大阪製造Dのとき
                                    {
                                        injiNisu = t.大阪D印字用.ToString();
                                    }
                                    else
                                    {
                                        // 大阪製造部のとき
                                        injiNisu = t.大阪印字用.ToString();
                                    }
                                }
                            }

                            oxlsPrintSheet.Cells[3, 28] = injiNisu;

                            // 曜日表示
                            int addRow = 0;
                            for (int iX = global.MAX_MIN; iX <= global.MAX_GYO; iX++)
                            {
                                if (iX < 7)
                                {
                                    addRow = iX - 1;
                                }
                                else if (iX < 17)
                                {
                                    addRow = iX;
                                }
                                else
                                {
                                    addRow = iX + 1;
                                }

                                // 暦補正値は設定ファイルから取得する 2011/03/24
                                sDate = txtYear.Text + "/" + txtMonth.Text + "/" + iX.ToString();

                                if (DateTime.TryParse(sDate, out eDate))
                                {
                                    //oxlsPrintSheet.Cells[S_GYO + addRow, 2] = ("日月火水木金土").Substring(int.Parse(eDate.DayOfWeek.ToString("d")), 1);
                                    oxlsPrintSheet.Cells[S_GYO + addRow, 2] = eDate.ToString("ddd");
                                }
                                else
                                {
                                    oxlsPrintSheet.Cells[S_GYO + addRow, 1] = string.Empty;
                                }

                                //
                                // 網掛け処理
                                //
                                rng[0] = (Excel.Range)oxlsPrintSheet.Cells[S_GYO + addRow, 1];
                                rng[1] = (Excel.Range)oxlsPrintSheet.Cells[S_GYO + addRow, 2];

                                var s = dts.休日.Where(a => a.RowState != DataRowState.Deleted && a.RowState != DataRowState.Detached &&
                                                     a.年月日 == eDate);
                                foreach (var t in s)
                                {
                                    if (Category == global.C_HONSHA && t.本社網掛け == global.flgOn)    // 本社のとき
                                    {
                                        oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                    }
                                    else if (Category == global.C_SHIZUOKA && t.静岡網掛け == global.flgOn)  // 静岡のとき
                                    {
                                        oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                    }
                                    else if (Category == global.C_OOSAKA)                                                   // 大阪製造部のとき
                                    {
                                        if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_A && t.大阪A網掛け == global.flgOn) // 大阪製造Aのとき
                                        {
                                            oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                        }
                                        else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_B && t.大阪B網掛け == global.flgOn)    // 大阪製造Bのとき
                                        {
                                            oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                        }
                                        else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_C && t.大阪C網掛け == global.flgOn)    // 大阪製造Cのとき
                                        {
                                            oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                        }
                                        else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_D && t.大阪D網掛け == global.flgOn)    // 大阪製造Dのとき
                                        {
                                            oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                        }
                                        else if (Utility.NulltoStr(dg1[10, sRow].Value) == string.Empty && t.大阪製造部網掛け == global.flgOn)   // 大阪製造のとき
                                        {
                                            oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray;
                                        }
                                    }
                                }
                            }
                        }
                    }

                    //マウスポインタを元に戻す
                    this.Cursor = Cursors.Default;

                    // 印刷用BOOKの1番目のシートは削除する
                    ((Excel.Worksheet)oXlsPrintBook.Sheets[1]).Delete();

                    //印刷
                    oXlsPrintBook.PrintOut();

                    // ウィンドウを非表示にする
                    oXls.Visible = false;

                    //保存処理
                    oXls.DisplayAlerts = false;

                    //Bookをクローズ
                    oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);
                    oXlsPrintBook.Close(Type.Missing, Type.Missing, Type.Missing);

                    //Excelを終了
                    oXls.Quit();
                }

                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "印刷処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    // ウィンドウを非表示にする
                    oXls.Visible = false;

                    //保存処理
                    oXls.DisplayAlerts = false;

                    //Bookをクローズ
                    oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                    //Excelを終了
                    oXls.Quit();
                }

                finally
                {
                    // COM オブジェクトの参照カウントを解放する
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsHonsha);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsShizuoka);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsOosaka);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsPrintSheet);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsPrintBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);

                    //マウスポインタを元に戻す
                    this.Cursor = Cursors.Default;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "印刷処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            //マウスポインタを元に戻す
            this.Cursor = Cursors.Default;
        }
Esempio n. 3
0
        private Boolean ErrCheck()
        {
            if (Utility.NumericCheck(txtYear.Text) == false)
            {
                MessageBox.Show("年は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtYear.Focus();
                return(false);
            }

            if (Utility.NumericCheck(txtMonth.Text) == false)
            {
                MessageBox.Show("月は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtMonth.Focus();
                return(false);
            }

            if (int.Parse(txtMonth.Text) < 1 || int.Parse(txtMonth.Text) > 12)
            {
                MessageBox.Show("月が正しくありません", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtMonth.Focus();
                return(false);
            }

            // 出勤日数マスター登録チェック
            MTYSDataSetTableAdapters.出勤日数TableAdapter adp = new MTYSDataSetTableAdapters.出勤日数TableAdapter();
            adp.Fill(dts.出勤日数);

            var s = dts.出勤日数.Where(a => a.年 == Utility.StrtoInt(txtYear.Text) && a.月 == Utility.StrtoInt(txtMonth.Text));

            if (s.Count() == 0)
            {
                MessageBox.Show(txtYear.Text + "年" + txtMonth.Text + "月の出勤日数が登録されていません。" + Environment.NewLine + "「マスターメンテナンス」-「出勤日数マスター保守」で出勤日数を登録してください。", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtYear.Focus();
                return(false);
            }

            // 休日マスター登録チェック
            DateTime sDate = DateTime.Today;
            DateTime eDt   = DateTime.Today;
            DateTime eDate = DateTime.Today;

            // 1日
            DateTime.TryParse(txtYear.Text + "/" + txtMonth.Text + "/01", out sDate);

            // 月末日
            for (int i = 2; i < 32; i++)
            {
                if (DateTime.TryParse(txtYear.Text + "/" + txtMonth.Text + "/" + i.ToString(), out eDt))
                {
                    eDate = eDt;
                }
                else
                {
                    break;
                }
            }

            MTYSDataSetTableAdapters.休日TableAdapter kadp = new MTYSDataSetTableAdapters.休日TableAdapter();
            kadp.Fill(dts.休日);

            var t = dts.休日.Where(a => a.年月日 >= sDate && a.年月日 <= eDate);

            if (t.Count() == 0)
            {
                MessageBox.Show(txtYear.Text + "年" + txtMonth.Text + "月の休日が登録されていません。" + Environment.NewLine + "「マスターメンテナンス」-「休日設定」で休日と網掛け設定を登録してください。", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtYear.Focus();
                return(false);
            }

            // 社員番号
            if (txtSNo.Text != string.Empty && Utility.NumericCheck(txtSNo.Text) == false)
            {
                MessageBox.Show("開始社員番号は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtSNo.Focus();
                return(false);
            }

            if (txtENo.Text != string.Empty && Utility.NumericCheck(txtENo.Text) == false)
            {
                MessageBox.Show("終了社員番号は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtENo.Focus();
                return(false);
            }

            // 2018/10/12
            if (txtTMData.Text.Trim() != string.Empty)
            {
                if (!System.IO.File.Exists(txtTMData.Text))
                {
                    MessageBox.Show("存在しないタイムカード打刻データが指定されています", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txtTMData.Focus();
                    return(false);
                }
            }

            return(true);
        }