///---------------------------------------------------------------- /// <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()); }
///---------------------------------------------------------------- /// <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()); }