/// <summary> /// /// </summary> /// <param name="D_table"></param> /// <param name="D_errortable"></param> /// <param name="str頁簽名稱"></param> /// <param name="row"></param> /// <param name="DtColumnDefine"></param> private void F_資料格式確認(ref DataTable D_table, ref DataTable D_errortable, string str頁簽名稱, IRow row, DataTable DtColumnDefine, int i, int 起始欄) { string StrError = ""; DataRow D_dataRow = D_table.NewRow(); DataRow D_erroraRow = D_errortable.NewRow(); Boolean BError = false; for (int j = 起始欄 - 1; j < DtColumnDefine.Rows.Count; j++) { Boolean B是否為必要欄位; string Str資料格式 = ""; if (!Boolean.TryParse(DtColumnDefine.Rows[j]["是否為必要欄位"].ToString(), out B是否為必要欄位)) { B是否為必要欄位 = false; } Str資料格式 = DtColumnDefine.Rows[j]["資料格式"].ToString(); switch (Str資料格式) { case "Int": datacheck.IntData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Varchar": case "Nvarchar": datacheck.StringData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Datetime": datacheck.DatetimeData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Float": datacheck.FloatData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; default: break; } } D_table.Rows.Add(D_dataRow); if (BError) { D_erroraRow[0] = "Row " + i.ToString() + " " + StrError; D_errortable.Rows.Add(D_erroraRow); } }
/// <summary> /// /// </summary> /// <param name="D_table"></param> /// <param name="D_errortable"></param> /// <param name="str頁簽名稱"></param> /// <param name="row"></param> /// <param name="DtColumnDefine"></param> private void F_資料確認(ref DataTable D_table, ref DataTable D_errortable, string str頁簽名稱, IRow row, DataTable DtColumnDefine, int i, int 起始欄) { string StrError = ""; #region regex用法 //bool b工號Error = false; //if (!string.IsNullOrEmpty(row.GetCell(z).ToString())) //{ // str工號 = row.GetCell(z).ToString().Trim().ToUpper(); // Regex reg = new Regex(strRegex工號); // b工號Error = (!reg.IsMatch(str工號) && str工號.Length != 5) ? true : false; //} //else // b工號Error = true; //Regex資料驗證規則 //string strRegex工號 = "V[0-9]{4}", strRegex工段 = "[0-9]{3}", strRegex數量 = "[0-9]{4}"; //string strRegex日期 = "\\b(?<year>\\d{4})(?<month>\\d{2})(?<day>\\d{2})\\b"; #endregion DataRow D_dataRow = D_table.NewRow(); DataRow D_erroraRow = D_errortable.NewRow(); Boolean BError = false; #region 基礎資料 //D_dataRow[0] = str頁簽名稱; #endregion for (int j = 起始欄 - 1; j < DtColumnDefine.Rows.Count; j++) { Boolean B是否為必要欄位; string Str資料格式 = ""; if (!Boolean.TryParse(DtColumnDefine.Rows[j]["是否為必要欄位"].ToString(), out B是否為必要欄位)) { B是否為必要欄位 = false; } Str資料格式 = DtColumnDefine.Rows[j]["資料格式"].ToString(); switch (Str資料格式) { case "Int": datacheck.IntData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); //IntCheck(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Varchar": case "Nvarchar": datacheck.StringData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); //stringcheck(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Datetime": datacheck.DatetimeData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); //datetimecheck(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; case "Float": datacheck.FloatData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); //FloatData(row, DtColumnDefine, i, ref StrError, D_dataRow, j, B是否為必要欄位, ref BError); break; default: break; } } D_table.Rows.Add(D_dataRow); if (BError) { D_erroraRow[0] = "Row " + i.ToString() + " " + StrError; D_errortable.Rows.Add(D_erroraRow); } }