Пример #1
0
        ///--------------------------------------------------------------------
        /// <summary>
        ///     過去勤怠データを削除する </summary>
        ///--------------------------------------------------------------------
        private void pastDataDelete()
        {
            // 待機カーソルにする
            this.Cursor = Cursors.WaitCursor;

            // データセットとアダプタ
            ryowaDataSet dts = new ryowaDataSet();

            ryowaDataSetTableAdapters.環境設定TableAdapter adp  = new ryowaDataSetTableAdapters.環境設定TableAdapter();
            ryowaDataSetTableAdapters.T_勤怠TableAdapter tAdp = new ryowaDataSetTableAdapters.T_勤怠TableAdapter();
            adp.Fill(dts.環境設定);

            int delMonth = 0;

            // 環境設定ファイルを読む
            if (dts.環境設定.Any(a => a.ID == common.global.configKEY))
            {
                var s = dts.環境設定.Single(a => a.ID == common.global.configKEY);
                delMonth = s.データ保存月数;
            }
            else
            {
                this.Cursor = Cursors.Default;
                return;
            }

            // データ保存月数が0(ゼロ)のとき、削除しないで終了
            if (delMonth == 0)
            {
                this.Cursor = Cursors.Default;
                return;
            }

            // 過去勤怠データ削除
            tAdp.Fill(dts.T_勤怠);
            DateTime dt = DateTime.Today.AddMonths(-1 * delMonth);

            var ss = dts.T_勤怠.Where(a => (a.日付.Year * 100 + a.日付.Month) < (dt.Year * 100 + dt.Month) &&
                                    a.RowState != DataRowState.Deleted);

            foreach (var t in ss)
            {
                t.Delete();
            }

            // データベース更新
            tAdp.Update(dts.T_勤怠);

            // カーソルを戻す
            this.Cursor = Cursors.Default;
        }
Пример #2
0
        private void dupDataDelete()
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;

                adp.FillByYYMM(dts.T_勤怠, Utility.StrtoInt(txtYear.Text), Utility.StrtoInt(txtMonth.Text));

                DateTime wDt     = DateTime.Parse("1900/01/01");
                int      wSaCode = 0;
                int      dCnt    = 0;

                foreach (var t in dts.T_勤怠.OrderBy(a => a.社員ID).ThenBy(a => a.日付))
                {
                    if (wSaCode == 0)
                    {
                        wSaCode = t.社員ID;
                        wDt     = t.日付;
                        continue;
                    }


                    if (wSaCode == t.社員ID && wDt == t.日付)
                    {
                        // 重複データとみなす
                        t.Delete();
                        dCnt++;
                    }
                    else
                    {
                        wSaCode = t.社員ID;
                        wDt     = t.日付;
                    }
                }

                adp.Update(dts.T_勤怠);

                MessageBox.Show(dCnt + "件の重複データを削除しました");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
Пример #3
0
        /// -------------------------------------------------------------------
        /// <summary>
        ///     CSVファイルインポート </summary>
        /// <param name="_InPath">
        ///     CSVファイルパス</param>
        /// -------------------------------------------------------------------
        public void csvToMdb(string _InPath)
        {
            int cnt = 0;
            int ng  = 0;

            try
            {
                foreach (var file in System.IO.Directory.GetFiles(_InPath))
                {
                    // CSVファイルインポート
                    var s = System.IO.File.ReadAllLines(file, Encoding.Default);
                    foreach (var stBuffer in s)
                    {
                        // カンマ区切りで分割して配列に格納する
                        string[] stCSV = stBuffer.Split(',');

                        // 出勤簿データフィールド数検証
                        if (stCSV.Length != global.CSVLENGTH)
                        {
                            // 出勤簿データではないため、ネグる
                            continue;
                        }

                        DateTime cdt;
                        if (!DateTime.TryParse(stCSV[0], out cdt))
                        {
                            // 先頭項目が日付ではないため、ネグる
                            continue;
                        }

                        // 個人コード認証
                        if (!shainAuth(Utility.StrtoInt(stCSV[1])))
                        {
                            // 認証不可のときメール返信
                            sendUnAuthMail(stCSV);
                            ng++;
                            continue;
                        }

                        if (dts.T_勤怠.Any(a => a.日付 == DateTime.Parse(stCSV[0]) && a.社員ID == Utility.StrtoInt(stCSV[1])))
                        {
                            // 登録済みのとき:上書き更新
                            sOverWriteMaster(stCSV);
                        }
                        else
                        {
                            // 勤怠データ更新
                            sAddMaster(stCSV);
                        }

                        cnt++;
                    }

                    // CSVファイル削除
                    System.IO.File.Delete(file);
                }

                // データベースへ反映
                adp.Update(dts.T_勤怠);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "勤怠データ更新処理", MessageBoxButtons.OK);
            }
            finally
            {
                string msg = "";

                if (ng > 0)
                {
                    msg  = "個人コードがマスター未登録の出勤簿データが" + ng.ToString() + "件あり" + Environment.NewLine;
                    msg += "送付元へ更新不可通知メールを送付しました。通信ログを確認してください。" + Environment.NewLine;
                    msg += "通信ログファイル:" + Properties.Settings.Default.mailLogFilePath;

                    MessageBox.Show(msg, "更新不可データ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }

                if (cnt > 0)
                {
                    msg = cnt.ToString() + "件の出勤簿を更新しました";
                    MessageBox.Show(msg, "処理完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    msg = "処理対象となる出勤簿データはありませんでした";
                    MessageBox.Show(msg, "処理完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }