예제 #1
0
파일: sumData.cs 프로젝트: ymgw0867/JMC
        ///----------------------------------------------------------------
        /// <summary>
        ///     同日を含まない休暇日数取得 </summary>
        /// <param name="sID">
        ///     社員ID</param>
        /// <param name="Yaku">
        ///     役職タイプ</param>
        /// <param name="main">
        ///     1:メイン出勤簿のみ対象, 0:全ての出勤簿を対象</param> // 2016/11/18
        /// <param name="kigou">
        ///     日数を取得する休暇記号</param>
        /// <returns>
        ///     出勤日数</returns>
        ///----------------------------------------------------------------
        private string getNisu(string sID, int Yaku, int main, string kigou)
        {
            // 出力データ生成
            SysControl.SetDBConnect Con  = new SysControl.SetDBConnect();
            OleDbCommand            sCom = new OleDbCommand();
            OleDbDataReader         dR   = null;

            // 日付クラスインスタンス生成
            dataByDay[] dby = new dataByDay[31];
            for (int i = 0; i < dby.Length; i++)
            {
                dby[i]       = new dataByDay();
                dby[i].day   = 0;
                dby[i].yukyu = string.Empty;
                dby[i].sH    = string.Empty;
                dby[i].sM    = string.Empty;
                dby[i].eH    = string.Empty;
                dby[i].eM    = string.Empty;
            }

            // 出勤簿明細データリーダーを取得します
            sCom.Connection = Con.cnOpen();

            StringBuilder sb = new StringBuilder();

            sb.Clear();
            sb.Append("SELECT 出勤簿明細.* from 出勤簿ヘッダ inner join 出勤簿明細 ");
            sb.Append("on 出勤簿ヘッダ.ID = 出勤簿明細.ヘッダID ");
            sb.Append("where 出勤簿ヘッダ.個人番号 = '" + sID + "' ");   // 2016/11/17

            // メイン出勤簿のみを対象とする場合 2016/11/18
            if (main == global.KINMU_MAIN)
            {
                sb.Append("and 勤務先区分 = " + global.KINMU_MAIN.ToString() + " ");
            }

            sb.Append("order by 出勤簿明細.ID ");
            sCom.CommandText = sb.ToString();
            dR = sCom.ExecuteReader();

            // 勤務記録を日付配列にセットします
            while (dR.Read())
            {
                // 日付
                int iX = int.Parse(dR["日付"].ToString()) - 1;
                dby[iX].day = int.Parse(dR["日付"].ToString());

                // 指定の休暇記号に該当するか
                if (Utility.NulltoStr(dR["休暇記号"].ToString()) == kigou)
                {
                    dby[iX].sH = global.flgOn.ToString();
                }
            }

            dR.Close();
            sCom.Connection.Close();

            // 出勤日数初期化
            int sDays = 0;

            // 日付配列を読む
            for (int i = 0; i < dby.Length; i++)
            {
                if (dby[i].day != 0)
                {
                    // 指定記号該当日のとき
                    if (dby[i].sH != string.Empty)
                    {
                        sDays++;
                    }
                }
            }

            return(sDays.ToString());
        }
예제 #2
0
파일: sumData.cs 프로젝트: ymgw0867/JMC
        ///----------------------------------------------------------------
        /// <summary>
        ///     出勤日数取得 </summary>
        /// <param name="sID">
        ///     社員ID</param>
        /// <param name="Yaku">
        ///     役職タイプ</param>
        /// <param name="main">
        ///     1:メイン出勤簿のみ対象, 0:全ての出勤簿を対象</param> // 2016/11/18
        /// <returns>
        ///     出勤日数</returns>
        ///----------------------------------------------------------------
        private string getShukkinNisu(string sID, int Yaku, int main)
        {
            // 出力データ生成
            SysControl.SetDBConnect Con  = new SysControl.SetDBConnect();
            OleDbCommand            sCom = new OleDbCommand();
            OleDbDataReader         dR   = null;

            // 日付クラスインスタンス生成
            dataByDay[] dby = new dataByDay[31];
            for (int i = 0; i < dby.Length; i++)
            {
                dby[i]       = new dataByDay();
                dby[i].day   = 0;
                dby[i].yukyu = string.Empty;
                dby[i].sH    = string.Empty;
                dby[i].sM    = string.Empty;
                dby[i].eH    = string.Empty;
                dby[i].eM    = string.Empty;
            }

            // 出勤簿明細データリーダーを取得します
            sCom.Connection = Con.cnOpen();

            StringBuilder sb = new StringBuilder();

            sb.Clear();
            sb.Append("SELECT 出勤簿明細.* from 出勤簿ヘッダ inner join 出勤簿明細 ");
            sb.Append("on 出勤簿ヘッダ.ID = 出勤簿明細.ヘッダID ");
            //sb.Append("where 出勤簿ヘッダ.社員ID = " + sID + " ");
            sb.Append("where 出勤簿ヘッダ.個人番号 = '" + sID + "' ");   // 2016/11/17

            // メイン出勤簿のみを対象とする場合 2016/11/18
            if (main == global.KINMU_MAIN)
            {
                sb.Append("and 勤務先区分 = " + global.KINMU_MAIN.ToString() + " ");
            }

            sb.Append("order by 出勤簿明細.ID ");
            sCom.CommandText = sb.ToString();
            dR = sCom.ExecuteReader();

            // 勤務記録を日付配列にセットします
            while (dR.Read())
            {
                // 日付
                int iX = int.Parse(dR["日付"].ToString()) - 1;
                dby[iX].day = int.Parse(dR["日付"].ToString());

                // 有給休暇
                string yu = Utility.NulltoStr(dR["有給記号"].ToString());
                if (yu != string.Empty)
                {
                    dby[iX].yukyu = yu;
                }

                // 開始・終了時刻
                if (Utility.NulltoStr(dR["開始時"].ToString()) != string.Empty &&
                    Utility.NulltoStr(dR["開始時"].ToString()) != "24")
                {
                    dby[iX].sH = Utility.NulltoStr(dR["開始時"].ToString());
                    dby[iX].sM = Utility.NulltoStr(dR["開始分"].ToString());
                    dby[iX].eH = Utility.NulltoStr(dR["終了時"].ToString());
                    dby[iX].eM = Utility.NulltoStr(dR["終了分"].ToString());
                }
            }

            dR.Close();
            sCom.Connection.Close();

            // 出勤日数初期化
            int sDays = 0;

            // 日付配列を読む
            for (int i = 0; i < dby.Length; i++)
            {
                if (dby[i].day != 0)
                {
                    // 勤務時間が記入されている日
                    if (dby[i].sH != string.Empty && dby[i].sM != string.Empty)
                    {
                        // 開始時間が24時台以外のもの(24時台は前日からの通し勤務とみなし出勤日数に加えない)
                        if (dby[i].sH != "24")
                        {
                            if (Yaku == global.STATUS_SHAIN)
                            {
                                sDays++;  // 社員
                            }
                            else if (Utility.NulltoStr(dby[i].yukyu) != global.ZENNICHI_YUKYU)
                            {
                                // パート:終日有休以外のときは出勤日数としてカウントする
                                sDays++;
                            }
                        }
                    }
                }
            }

            return(sDays.ToString());
        }