/// <summary> /// 将字符串转换成byte[]数组,再依仕样指定长度截取值 /// </summary> /// <param name="IfType"></param> /// <param name="seq"></param> /// <param name="aRecord"></param> /// <param name="FileEncoding"></param> public IF_PROD_PLAN SetRecordValues(string IfType, int seq, string[] arrayRecord, Encoding FileEncoding) { ComLibrary com = new ComLibrary(); // 数据截取及默认数据的取得 IF_PROD_PLAN ifpp = new IF_PROD_PLAN(); //ifpp.IF_DATE = _if_date; //データ連携日 //ifpp.IF_HMS = _if_hms; // 連携データ区分 ifpp.IF_TYPE = _if_type; //連携データ区分 ifpp.IF_DATA_SEQ = seq; //データ順番 ifpp.IF_PLAN_NO = string.Empty; //取込計画№ ifpp.ITEM_NO = ToDBC(arrayRecord.Length > 0 ? arrayRecord[0] : "").Trim(); //品目コード //ifpp.ITEM_DESC = ToDBC(arrayRecord.Length > 1 ? arrayRecord[1] : "").Trim(); //品目名称 //ifpp.WS_CD = ""; //作業区コード //ifpp.PLAN_YM = com.StringToInt(arrayRecord.Length > 2 ? arrayRecord[2].Replace("/", "") : "0"); //計画年月 //ifpp.ORDER_QTY = com.StringToDouble(arrayRecord.Length > 3 ? arrayRecord[3] : "0"); //計画数量 //ifpp.IF_DATA_FLAG = 0; //取込結果区分 return(ifpp); }
/// <summary> /// 指定目录下所有[CSV]类型文件导入DataTable /// XML方式一次性导入 /// </summary> /// <returns></returns> public int ImpFilesToDataTableBulk() { int rtn = 0; ComLibrary com = new ComLibrary(); try { string strFileNm = ""; string[] strWk = _file_path.Split('\\'); strFileNm = strWk[strWk.Length - 1]; string strFileNmA = ""; string[] strWkA = strFileNm.Split('.'); strFileNmA = strWkA[0]; bool isEmpty = true; int LineCnt = 0; string IfType = _if_type;//連携データ区分 StringBuilder strXML = new StringBuilder(); strXML.Append("<IFRows>"); Boolean err_flag = false; //if (_save_path != "") //{ // if (_save_path.EndsWith("\\")) // _save_file = _save_path + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm; // else // _save_file = _save_path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm; //} // LOG FILE 名 2014.09.22 //if (_log_path != "") //{ // if (_log_path.EndsWith("\\")) // _log_file = _log_path + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm; // else // _log_file = _log_path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm; //} // FILE COPY 2014.09.22 //if (_save_path != "") //{ // File.Copy(_file_path, _save_file, true); //} Encoding FileEncoding = GetFileEncoding(_file_path); // 最初にメモリに読むこむ int wLineCnt = 0; StreamReader sr = new StreamReader(_file_path, FileEncoding); while (sr.Peek() >= 0) { wLineCnt++; string strRecord = sr.ReadLine(); FileInfoClass fi = new FileInfoClass(); fi.LineCnt = wLineCnt; fi.Data = strRecord; lstFileInfo.Add(fi); } sr.Dispose(); sr.Close(); TextFieldParser parser = new TextFieldParser(_file_path, FileEncoding); using (parser) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); // 区切り文字はコンマ while (!parser.EndOfData) { err_flag = false; LineCnt++; isEmpty = false; string[] strRecord = parser.ReadFields(); // 1行読み込み 2014.09.22 string aRecord = ""; for (int p = 0; p < strRecord.Length; p++) { if (p > 0) { aRecord += "|"; } aRecord += strRecord[p]; } if (LineCnt <= lstFileInfo.Count) { ((FileInfoClass)lstFileInfo[LineCnt - 1]).CnvData = aRecord; } //各項目属性チェック //年月, 数量 //if (!com.IsNumeric(strRecord[2].Replace("/", "")) || !com.IsNumeric(strRecord[3])) //{ // err_flag = true; // // 2014.10.10 // if (LineCnt <= lstFileInfo.Count) // { // ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrFlag = 1; // ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrMsg = "数値エラー。"; // } //} //数据各项值取得 IF_PROD_PLAN ifpl = SetRecordValues(IfType, LineCnt, strRecord, FileEncoding); //if (ifpl.ITEM_NO.ToString().Length > 30 //|| ifpl.ITEM_DESC.ToString().Length > 50 //|| ifpl.PLAN_YM.ToString().Length > 6 //|| com.StringToDouble(ifpl.ORDER_QTY.ToString()) > 1000000000) //{ // err_flag = true; // if (LineCnt <= lstFileInfo.Count) // { // ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrFlag = 1; // ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrMsg += "桁数エラー。"; // } //} if (err_flag) // 2014.10.10 { //_len_err_cnt++; ////IF 取込データログに登録 //Poif poif = new Poif(_chg_user_id, _lang); //Message msg = new Message(_chg_user_id, _lang); //poif.if_date = ifpl.IF_DATE; //poif.if_hms = ifpl.IF_HMS; //poif.if_type = ifpl.IF_TYPE; //poif.if_type_name = _if_type_name; //poif.if_data_seq = ifpl.IF_DATA_SEQ; //poif.if_data = aRecord; //poif.if_data_err = msg.GetMessage("COLUMN_LENGTH_FORMAT_ERR"); //poif.if_data_flag = 2; //poif.chg_pgm = _chg_pgm; //poif.chg_user_id = _chg_user_id; //poif.lang = _lang; //poif.errcode = _errcode; //poif.errmsg = _errmsg; //poif.sqlcode = _sqlcode; //poif.dbmsg = _dbmsg; //rtn = poif.Ins_IF_IN_LOG(); //if (rtn == ComConst.FAILED) //{ // goto RESULT; //} } if (!err_flag) // 2014.09.22 { //XML格式作成 strXML.Append("<IFRow "); //strXML.Append(" IF_DATE=\"" + ifpl.IF_DATE.ToString() + "\""); //strXML.Append(" IF_HMS=\"" + ifpl.IF_HMS.ToString() + "\""); strXML.Append(" IF_TYPE=\"" + ifpl.IF_TYPE + "\""); strXML.Append(" IF_DATA_SEQ=\"" + ifpl.IF_DATA_SEQ.ToString() + "\""); strXML.Append(" IF_PLAN_NO=\"" + ifpl.IF_PLAN_NO + "\""); strXML.Append(" ITEM_NO=\"" + ifpl.ITEM_NO + "\""); //strXML.Append(" ITEM_DESC=\"" + com.XMLString(ifpl.ITEM_DESC) + "\""); //strXML.Append(" WS_CD=\"" + ifpl.WS_CD + "\""); //strXML.Append(" PLAN_YM=\"" + ifpl.PLAN_YM.ToString() + "\""); //strXML.Append(" ORDER_QTY=\"" + ifpl.ORDER_QTY.ToString() + "\""); //strXML.Append(" IF_DATA_FLAG=\"" + ifpl.IF_DATA_FLAG.ToString() + "\""); //strXML.Append(" CHG_PGM=\"" + _chg_pgm + "\""); strXML.Append(" CHG_USER_ID=\"" + _chg_user_id + "\""); strXML.Append(" />"); } } } strXML.Append("</IFRows>"); //_file_line_cnt = LineCnt; if (isEmpty) { Message msg = new Message(_chg_user_id, _lang); _strErr = msg.GetMessage("FILE_NOT_EXIST_ERR"); rtn = ComConst.CHECK_ERROR; goto RESULT; } else { // [IF初期取込生産計画]の一括登録 #region : [IF初期取込生産計画]の一括登録 ComDB db = new ComDB(_db_type); db.DbParametersClear(); db.DbPsetInt("rtn", rtn, ComConst.DB_RTN); db.DbPsetXml("@I_XML", strXML.ToString(), strXML.ToString().Length, ComConst.DB_IN); db.DbPsetInt("@I_LANG", _lang, ComConst.DB_IN); db.DbPsetInt("@O_ERRCODE", _errcode, ComConst.DB_OUT); db.DbPsetString("@O_MSG", _errmsg, ComConst.DB_OUT); db.DbPsetInt("@O_SQLCODE", _sqlcode, ComConst.DB_OUT); db.DbPsetString("@O_SQLMSG", _dbmsg, ComConst.DB_OUT); db.DbPsetString("@O_PROC_NAME", _proc_name, ComConst.DB_OUT); db.DbBeginTrans(); rtn = db.DbStored("SP_IF_PROD_PLAN_BULK_IMP");//一括登録 if (rtn == ComConst.SUCCEED) { db.DbCommit(); } else { db.DbRollback(); rtn = db.DbPgetInt("rtn"); if (rtn > 0) { _errcode = db.DbPgetInt("@O_ERRCODE"); _errmsg = db.DbPgetString("@O_MSG"); _sqlcode = db.DbPgetInt("@O_SQLCODE"); _dbmsg = db.DbPgetString("@O_SQLMSG"); _proc_name = db.DbPgetString("@O_PROC_NAME"); _strErr = _errcode + ":" + _errmsg + "[" + _sqlcode + ":" + _dbmsg + "(" + _proc_name + ")]"; } else { _strErr = db.strErr; } rtn = ComConst.FAILED; } #endregion } //File.Delete(_file_path); } catch (Exception ex) { _strErr = ex.ToString(); rtn = ComConst.FAILED; } RESULT: return(rtn); }