/// <summary> /// RowIndex判斷 /// </summary> /// <param name="RowIndex"></param> /// <param name="StartDate"></param> /// <param name="dt"></param> /// <param name="condition"></param> /// <returns></returns> private int ConditionRowIndex(int RowIndex, DateTime StartDate, DataTable dt, Condition30350 condition) { switch (condition) { case Condition30350.sheet30350four: //與輸入月份相同則空一列 if (StartDate.ToString("yyyy/MM") == _emMonthText) { RowIndex = RowIndex + 1; } //沒有前月份,則空一列 //PB這段怪怪的,照PB邏輯這條件都會是true,改寫成直接+1 RowIndex = RowIndex + 1; break; case Condition30350.RowIndexAddOne: //沒有前月份,則空一列 //PB這段怪怪的,照PB邏輯這條件都會是true,改寫成直接+1 RowIndex = RowIndex + 1; break; case Condition30350.NoLastDay: //無上月最後1天資料 if (dt.Rows.Count > 0 && StartDate.ToString("yyyyMMdd") != dt.Rows[0]["AI2_YMD"].AsString()) { RowIndex = RowIndex + 1; } break; case Condition30350.NoLastMonth: //沒有前月份,則空一列 if (dt.Rows.Count > 0 && dt.Rows[0]["AI2_YMD"].AsString().SubStr(0, 6) != StartDate.ToString("yyyyMM")) { RowIndex = RowIndex + 1; } break; case Condition30350.NoCondition: break; } return(RowIndex); }
/// <summary> /// 寫入 30358 datawindow 資料源 /// </summary> /// <param name="RowIndex">起始行位</param> /// <param name="RowTotal">預留要使用的行數</param> /// <param name="IsKindID">KindID</param> /// <param name="SheetName">工作表</param> /// <param name="RptName">執行作業名稱</param> /// <returns></returns> public string DataFrom30358(int RowIndex, int RowTotal, string IsKindID, string SheetName, string RptName, Condition30350 Condition = Condition30350.NoCondition) { try { //讀取資料 DataTable dt = dao30350.Get30358Data(IsKindID, _StartDate.ToString("yyyyMMdd"), _EndDate.ToString("yyyyMMdd")); if (dt.Rows.Count <= 0) { return($"{_StartDate.ToShortDateString()}~{_EndDate.ToShortDateString()},{SheetName}-{RptName},無任何資料!"); } //行數寫入起始條件 RowIndex = ConditionRowIndex(RowIndex, _StartDate, dt, Condition); //儲存寫入sheet WriteSheet(SheetName, dt, RowIndex, RowTotal); } catch (Exception ex) { throw ex; } return(MessageDisplay.MSG_OK); }