|
|
@@ -195,15 +195,15 @@ namespace UAS_MES.PublicMethod
|
|
|
/// </summary>
|
|
|
/// <param name="iSnCode"></param>
|
|
|
/// <param name="iMakeCode"></param>
|
|
|
- /// <param name="iSource"></param>
|
|
|
+ /// <param name="iSourceCode"></param>
|
|
|
/// <param name="oErrMessage"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static bool CheckCurrentStep(string iSnCode, string iMakeCode, string iSource, out string oErrMessage)
|
|
|
+ public static bool CheckCurrentStep(string iSnCode, string iMakeCode, string iSourceCode, out string oErrMessage)
|
|
|
{
|
|
|
if (GetMakeInfo(iSnCode, out iMakeCode, out oErrMessage))
|
|
|
{
|
|
|
string nextstepcode = dh.getFieldDataByCondition("makeserial", "ms_nextstepcode", "ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakeCode + "'").ToString();
|
|
|
- string sourcestepcode = GetStepCodeBySource(iSource);
|
|
|
+ string sourcestepcode = GetStepCodeBySource(iSourceCode);
|
|
|
if (nextstepcode == "")
|
|
|
{
|
|
|
oErrMessage = "当前序列号已无可执行工序";
|
|
|
@@ -213,7 +213,7 @@ namespace UAS_MES.PublicMethod
|
|
|
return true;
|
|
|
else
|
|
|
{
|
|
|
- oErrMessage = "资源" + iSource + "对应的工序是" + sourcestepcode + ",序列号" + iSnCode + "当前工序是" + nextstepcode;
|
|
|
+ oErrMessage = "资源" + iSourceCode + "对应的工序是" + sourcestepcode + ",序列号" + iSnCode + "当前工序是" + nextstepcode;
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
@@ -407,10 +407,10 @@ namespace UAS_MES.PublicMethod
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- public static bool CheckStepAttribute(string iCaller, string iSource, out string oErrorMessage)
|
|
|
+ public static bool CheckStepAttribute(string iCaller, string iSourceCode, out string oErrorMessage)
|
|
|
{
|
|
|
oErrorMessage = "";
|
|
|
- string[] param = new string[] { iCaller, iSource, oErrorMessage };
|
|
|
+ string[] param = new string[] { iCaller, iSourceCode, oErrorMessage };
|
|
|
dh.CallProcedure("CS_CHECKSTEPATTRIBUTE", ref param);
|
|
|
if (oErrorMessage == "" || oErrorMessage == null)
|
|
|
return true;
|
|
|
@@ -418,13 +418,13 @@ namespace UAS_MES.PublicMethod
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- public static bool CheckStepSNAndMacode(string iMakeCode, string iSource, string iSN, string iUserCode, out string oMakeCode, out string oMsID, out string oErrorMessage)
|
|
|
+ public static bool CheckStepSNAndMacode(string iMakeCode, string iSourceCode, string iSN, string iUserCode, out string oMakeCode, out string oMsID, out string oErrorMessage)
|
|
|
{
|
|
|
Console.WriteLine("iMakeCode" + iMakeCode);
|
|
|
oErrorMessage = "";
|
|
|
oMakeCode = "";
|
|
|
oMsID = "";
|
|
|
- string[] param = new string[] { iMakeCode, iSource, iSN, iUserCode, oMakeCode, oMsID, oErrorMessage };
|
|
|
+ string[] param = new string[] { iMakeCode, iSourceCode, iSN, iUserCode, oMakeCode, oMsID, oErrorMessage };
|
|
|
dh.CallProcedure("CS_CHECKSTEPSNANDMACODE", ref param);
|
|
|
oMakeCode = param[4];
|
|
|
oMsID = param[5];
|
|
|
@@ -916,18 +916,19 @@ namespace UAS_MES.PublicMethod
|
|
|
/// </summary>
|
|
|
/// <param name="iSnCode"></param>
|
|
|
/// <param name="iMakeCode"></param>
|
|
|
- /// <param name="iMaKind"></param>
|
|
|
+ /// <param name="iMPKind"></param>
|
|
|
/// <param name="result"></param>
|
|
|
/// <param name="iUserName"></param>
|
|
|
- public static void InsertMakeProcess(string iSnCode, string iMakeCode, string iMaKind, string result, string iUserName)
|
|
|
+ public static void InsertMakeProcess(string iSnCode, string iMakeCode,string iSourceCode, string iMPKind, string result, string iUserName)
|
|
|
{
|
|
|
+ string CurrentStep = GetStepCodeBySource(iSourceCode);
|
|
|
sql.Clear();
|
|
|
sql.Append("insert into MakeProcess(mp_id,mp_makecode,mp_maid, mp_mscode,mp_sncode,mp_stepcode,mp_stepname,");
|
|
|
sql.Append("mp_craftcode,mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode) ");
|
|
|
sql.Append("select MakeProcess_seq.nextval, ma_code,ma_id,ms_code,ms_sncode,mcd_stepcode,mcd_stepname,");
|
|
|
- sql.Append("ma_craftcode,ma_craftname,'" + iMaKind + "','" + result + "',sysdate,'" + iUserName + "',ma_wccode,ma_linecode,''");
|
|
|
+ sql.Append("ma_craftcode,ma_craftname,'" + iMPKind + "','" + result + "',sysdate,'" + iUserName + "',ma_wccode,ma_linecode,'"+ iSourceCode + "'");
|
|
|
sql.Append("from make left join makecraftdetail on mcd_macode=ma_code left join makeserial on ms_makecode=ma_code ");
|
|
|
- sql.Append("where ms_sncode='" + iSnCode + "' and ma_code='" + iMakeCode + "'");
|
|
|
+ sql.Append("where ms_sncode='" + iSnCode + "' and ma_code='" + iMakeCode + "' mcd_stepcode='"+ CurrentStep + "'");
|
|
|
//插入makeprocess
|
|
|
dh.ExecuteSql(sql.ToString(), "insert");
|
|
|
sql.Clear();
|
|
|
@@ -984,10 +985,27 @@ namespace UAS_MES.PublicMethod
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- public static bool SetStepFinish(string iMakeCode, string iSource, string iSN, string iUserCode, out string oErrorMessage)
|
|
|
+ public static bool SetStepFinish(string iMakeCode, string iSourceCode, string iSN, string iMPKind, string iResult, string iUserCode, out string oErrorMessage)
|
|
|
{
|
|
|
oErrorMessage = "";
|
|
|
- string[] param = new string[] { iMakeCode, iSource, iSN, iUserCode, oErrorMessage };
|
|
|
+ string StepCode = dh.getFieldDataByCondition("Makeserial", "ms_stepcode", "ms_sncode='" + iSN + "'").ToString();
|
|
|
+ string CurrentStep = GetStepCodeBySource(iSourceCode);
|
|
|
+ Console.WriteLine("StepCode" + StepCode);
|
|
|
+ Console.WriteLine("CurrentStep" + CurrentStep);
|
|
|
+ if (StepCode == CurrentStep)
|
|
|
+ {
|
|
|
+ InsertMakeProcess(iSN, iMakeCode, iSourceCode, iMPKind, iResult, iUserCode);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return CS_SetFinish(iMakeCode, iSourceCode, iSN, iUserCode, out oErrorMessage);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static bool CS_SetFinish(string iMakeCode, string iSourceCode, string iSN, string iUserCode, out string oErrorMessage)
|
|
|
+ {
|
|
|
+ oErrorMessage = "";
|
|
|
+ string[] param = new string[] { iMakeCode, iSourceCode, iSN, iUserCode, oErrorMessage };
|
|
|
dh.CallProcedure("CS_SETSTEPFINISH", ref param);
|
|
|
if (oErrorMessage == "" || oErrorMessage == null)
|
|
|
return true;
|
|
|
@@ -1056,13 +1074,13 @@ namespace UAS_MES.PublicMethod
|
|
|
/// </summary>
|
|
|
/// <param name="iSnCode"></param>
|
|
|
/// <param name="iMakeCode"></param>
|
|
|
- /// <param name="iUserName"></param>
|
|
|
+ /// <param name="iUserCode"></param>
|
|
|
/// <param name="iSourceCode"></param>
|
|
|
/// <param name="iBadCode"></param>
|
|
|
/// <param name="iBadRemark"></param>
|
|
|
/// <param name="oErrorMessage"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static bool SetTestNGDetail(string iSnCode, string iMakeCode, string iUserName, string iSourceCode, string iResult, string[] iBadGroupCode, string[] iBadCode, string[] iBadRemark, out string oErrorMessage)
|
|
|
+ public static bool SetTestNGDetail(string iSnCode, string iMakeCode, string iUserCode, string iSourceCode, string iResult, string[] iBadGroupCode, string[] iBadCode, string[] iBadRemark, out string oErrorMessage)
|
|
|
{
|
|
|
oErrorMessage = "";
|
|
|
string StepCode = "";
|
|
|
@@ -1074,7 +1092,7 @@ namespace UAS_MES.PublicMethod
|
|
|
sql.Clear();
|
|
|
sql.Append("insert into makebad(mb_id,mb_makecode,mb_mscode,mb_sncode,mb_inman,");
|
|
|
sql.Append("mb_indate,mb_stepcode,mb_sourcecode,mb_badcode,mb_bgcode,mb_badtable,mb_soncode,mb_status,mb_badremark)");
|
|
|
- sql.Append("select makebad_seq.nextval,ma_code,ms_code,ms_sncode,'" + iUserName + "',sysdate,'" + StepCode + "',ms_sourcecode,:bc_code,:bg_code,'',");
|
|
|
+ sql.Append("select makebad_seq.nextval,ma_code,ms_code,ms_sncode,'" + iUserCode + "',sysdate,'" + StepCode + "',ms_sourcecode,:bc_code,:bg_code,'',");
|
|
|
sql.Append("sp_soncode,'0',:bc_remark from make left join makeSerial on ms_makecode=ma_code left join stepProduct on ");
|
|
|
sql.Append("sp_mothercode=ma_prodcode and sp_stepcode=ms_nextstepcode where ms_sncode='" + iSnCode + "'");
|
|
|
dh.BatchInsert(sql.ToString(), new string[] { "bc_code", "bg_code", "bc_remark" }, iBadCode, iBadGroupCode, iBadRemark);
|
|
|
@@ -1089,11 +1107,12 @@ namespace UAS_MES.PublicMethod
|
|
|
//更新序列号已经采集的工序 ms_paststep 已采集数据,更新下一工序
|
|
|
dh.UpdateByCondition("makeserial", "ms_paststep = ms_paststep ||'," + StepCode + "'", "ms_sncode='" + iSnCode + "'");
|
|
|
//记录操作日志
|
|
|
- InsertMakeProcess(iSnCode, iMakeCode, "不良采集", iResult, iUserName);
|
|
|
+ InsertMakeProcess(iSnCode, iMakeCode, iSourceCode, "不良采集", iResult, iUserCode);
|
|
|
//判断当前采集点是否为扣料工序cd_ifreduce =-1 则为扣料工序
|
|
|
//之前保存的不良就不再调用
|
|
|
+ Console.WriteLine("ms_status"+ ms_status);
|
|
|
if (ms_status != "3")
|
|
|
- SetStepFinish(iMakeCode, iSourceCode, iSnCode, iUserName, out oErrorMessage);
|
|
|
+ SetStepFinish(iMakeCode, iSourceCode, iSnCode, "不良采集", iResult, iUserCode, out oErrorMessage);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -1231,7 +1250,7 @@ namespace UAS_MES.PublicMethod
|
|
|
/// <param name="iUserName"></param>
|
|
|
/// <param name="oErrorMessage"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static bool SetMaterialDown(string iSnCode, string iBarCode, string iCurrentStep, string iUserName, out string oErrorMessage)
|
|
|
+ public static bool SetMaterialDown(string iSnCode, string iBarCode,string iSourceCode, string iCurrentStep, string iUserName, out string oErrorMessage)
|
|
|
{
|
|
|
//序列号不为空的时候
|
|
|
oErrorMessage = "";
|
|
|
@@ -1269,7 +1288,7 @@ namespace UAS_MES.PublicMethod
|
|
|
string cm_stepcode = dt.Rows[0]["cm_stepcode"].ToString();
|
|
|
string cm_mccode = dt.Rows[0]["cm_mccode"].ToString();
|
|
|
dh.ExecuteSql("delete from Craftmaterial where cm_id=" + cm_id, "delete");
|
|
|
- InsertMakeProcess(ms_macode, iSnCode, "下料操作", "下料成功", iUserName);
|
|
|
+ InsertMakeProcess(ms_macode, iSnCode, iSourceCode,"下料操作", "下料成功", iUserName);
|
|
|
int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + iSnCode + "'");
|
|
|
if (count == 0)
|
|
|
dh.UpdateByCondition("makecraftdetail ", "mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty = mcd_okqty - 1", "mcd_mccode='" + cm_mccode + "' and mcd_stepcode='" + cm_stepcode + "'");
|
|
|
@@ -1290,138 +1309,10 @@ namespace UAS_MES.PublicMethod
|
|
|
/// <param name="iResult"></param>
|
|
|
/// <param name="oErrorMessage"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static bool UpdateMakeMessage(string iSnCode, string iMakeCode, string iMaKind, string iSourceCode, string iUserName, string iResult, out string oErrorMessage)
|
|
|
+ public static bool UpdateMakeMessage(string iSnCode, string iMakeCode, string iMPKind, string iSourceCode, string iUserName, string iResult, out string oErrorMessage)
|
|
|
{
|
|
|
- InsertMakeProcess(iSnCode, iMakeCode, iMaKind, iResult, iUserName);
|
|
|
- return SetStepFinish(iMakeCode, iSourceCode, iSnCode, iUserName, out oErrorMessage);
|
|
|
- //oErrorMessage = "";
|
|
|
- //string StepCode = "";
|
|
|
- //string StepName = "";
|
|
|
- //string LineCode = "";
|
|
|
- //if (iResult == "" || iResult == null)
|
|
|
- //{
|
|
|
- // iResult = "测试合格";
|
|
|
- //}
|
|
|
- //GetStepCodeAndNameAndLineBySource(iSourceCode, ref StepCode, ref StepName, ref LineCode);
|
|
|
- ////判断是否上料工序,如果是的话执行该步骤
|
|
|
- //DataTable dt = dh.getFieldsDataByCondition("make left join craft on cr_code=ma_craftcode left join craftdetail on cd_crid=cr_id", new string[] { "cd_ifinput", "cr_code" }, "ma_code='" + iMakeCode + "' and cd_stepcode='" + StepCode + "'");
|
|
|
- //string Yes_No = dh.GetConfig("BatchNumber", "MESSetting").ToString();
|
|
|
- //string cr_code = "";
|
|
|
- //if (dt.Rows.Count > 0)
|
|
|
- //{
|
|
|
- // cr_code = dt.Rows[0]["cr_code"].ToString();
|
|
|
- // if (dt.Rows[0]["cd_ifinput"].ToString() != "0")
|
|
|
- // {
|
|
|
- // sql.Clear();
|
|
|
- // sql.Append("select wm_concat(mss_prodcode) code,count(1) cn from (select sum(nvl(mss_remain,0))remain,mss_prodcode,max(mss_baseqty) mss_baseqty ");
|
|
|
- // sql.Append("from makesourcestock where mss_makecode='" + iMakeCode + "' and mss_stepcode='" + StepCode + "' ");
|
|
|
- // sql.Append("and mss_linecode='" + LineCode + "' group by mss_prodcode)T where T.remain<mss_baseqty and rownum<20");
|
|
|
- // dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- // //如果配置的是Yes
|
|
|
- // if (Yes_No != "0")
|
|
|
- // {
|
|
|
- // //如果批次料不足
|
|
|
- // if (dt.Rows.Count > 0 && int.Parse(dt.Rows[0]["cn"].ToString()) > 0)
|
|
|
- // {
|
|
|
- // oErrorMessage += "批次物料:" + iSnCode + "," + dt.Rows[0]["code"] + "岗位备料不足";
|
|
|
- // return false;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // //如果配置的是No 或者批次料足够
|
|
|
- // else if (Yes_No == "0" || dt.Rows.Count == 0)
|
|
|
- // {
|
|
|
- // //扣减批次数量,插入数据至用料表
|
|
|
- // sql.Clear();
|
|
|
- // sql.Append("select mss_prodcode , max(mss_baseqty) baseqty from makesourcestock ");
|
|
|
- // sql.Append("mss_makecode='" + iMakeCode + "' and mss_stepcode='" + StepCode + "' and mss_linecode='" + LineCode + "' group by mss_prodcode");
|
|
|
- // DataTable dt1 = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- // for (int i = 0; i < dt1.Rows.Count; i++)
|
|
|
- // {
|
|
|
- // string prodcode = dt1.Rows[i]["mss_prodcode"].ToString();
|
|
|
- // //本次上料需要扣除的数量
|
|
|
- // int baseqty = int.Parse(dt1.Rows[i]["baseqty"].ToString());
|
|
|
- // sql.Clear();
|
|
|
- // sql.Append("select mss_remain,mss_useqty,mss_id ,mss_barcode from makesourcestock where mss_makecode='" + iMakeCode + "' and ");
|
|
|
- // sql.Append("mss_stepcode='" + StepCode + "' and mss_prodcode='" + prodcode + "' and mss_linecode='" + LineCode + "' and mss_remain >0 order by mss_id asc");
|
|
|
- // DataTable dt2 = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- // for (int j = 0; i < dt2.Rows.Count; j++)
|
|
|
- // {
|
|
|
- // int remain = int.Parse(dt2.Rows[j]["mss_remain"].ToString());
|
|
|
- // int useqty = int.Parse(dt2.Rows[j]["mss_useqty"].ToString());
|
|
|
- // string mss_id = dt2.Rows[j]["mss_id"].ToString();
|
|
|
- // string barcode = dt2.Rows[j]["mss_barcode"].ToString();
|
|
|
- // //如果可扣数量大于0
|
|
|
- // if (baseqty > 0)
|
|
|
- // {
|
|
|
- // //并且可扣数量大于剩余数量
|
|
|
- // if (baseqty > remain)
|
|
|
- // {
|
|
|
- // sql.Clear();
|
|
|
- // sql.Append("update makesourcestock set mss_useqty=nvl(mss_useqty,0)+mss_remain,mss_remain = 0 where mss_id='" + mss_id + "' ");
|
|
|
- // dh.ExecuteSql(sql.ToString(), "update");
|
|
|
- // //扣减剩余数量
|
|
|
- // baseqty -= remain;
|
|
|
- // }
|
|
|
- // else if (remain >= baseqty)
|
|
|
- // {
|
|
|
- // dh.ExecuteSql("update makesourcestock set mss_remain = mss_remain-mss_baseqty where mss_id =" + mss_id, "select");
|
|
|
- // baseqty = 0;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
- ////查询批次和批数量
|
|
|
- //int batchqty = 0;
|
|
|
- //string checkno = "";
|
|
|
- //dt = (DataTable)dh.ExecuteSql("select count(ms_checkno) count,ms_checkno from makeserial where ms_checkno=(select ms_checkno from makeserial where ms_sncode='" + iSnCode + "') group by ms_checkno", "select");
|
|
|
- //if (dt.Rows.Count > 0)
|
|
|
- //{
|
|
|
- // batchqty = int.Parse(dt.Rows[0]["count"].ToString());
|
|
|
- // checkno = dt.Rows[0]["ms_checkno"].ToString();
|
|
|
- //}
|
|
|
- //object nextstepcode = dh.getFieldDataByCondition("makecraftdetail", "mcd_nextstepcode", "mcd_macode='" + iMakeCode + "' and mcd_stepcode='" + StepCode + "'");
|
|
|
- //if (iResult.Contains("批次通过") && dt.Rows.Count > 0)
|
|
|
- //{
|
|
|
- // //更新执行的数量
|
|
|
- // sqls.Add("update makecraftdetail set mcd_inqty=mcd_inqty+" + batchqty + ",mcd_outqty = mcd_outqty + " + batchqty + ",mcd_okqty = mcd_okqty + " + batchqty + " where mcd_macode='" + iMakeCode + "' and mcd_stepcode='" + StepCode + "' ");
|
|
|
- // //更新makeSerial 的下一工序
|
|
|
- // sqls.Add("update makeserial set ms_paststep = ms_paststep || '," + StepCode + "',ms_nextstepcode='" + nextstepcode.ToString() + "' where ms_checkno='" + checkno + "'");
|
|
|
- //}
|
|
|
- //else
|
|
|
- //{
|
|
|
- // //更新执行的数量
|
|
|
- // sqls.Add("update makecraftdetail set mcd_inqty=mcd_inqty+1,mcd_outqty = mcd_outqty + 1,mcd_okqty = mcd_okqty + 1 where mcd_macode='" + iMakeCode + "' and mcd_stepcode='" + StepCode + "' ");
|
|
|
- // //更新makeSerial 的下一工序
|
|
|
- // sqls.Add("update makeserial set ms_paststep = ms_paststep || '," + StepCode + "',ms_stepcode='" + StepCode + "',ms_nextstepcode='" + nextstepcode.ToString() + "' where ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakeCode + "'");
|
|
|
- //}
|
|
|
- ////更新序列号已经采集的工序 ms_paststep 已采集数据,更新下一工序
|
|
|
- //dh.ExecuteSQLTran(sqls.ToArray());
|
|
|
- //sqls.Clear();
|
|
|
- ////记录操作日志
|
|
|
- //InsertMakeProcess(iSnCode, iMakeCode, iResult, iUserName);
|
|
|
- ////检测下道工序是否存在,不存在 更新状态为已完成
|
|
|
- //if (nextstepcode == null || nextstepcode.ToString() == "")
|
|
|
- //{
|
|
|
- // if (iResult.Contains("批次通过"))
|
|
|
- // {
|
|
|
- // sqls.Add("update make set ma_madeqty=ma_madeqty+" + batchqty + " where ma_code='" + iMakeCode + "'");
|
|
|
- // sqls.Add("update makeserial set ms_status=2 where ms_checkno='" + checkno + "'");
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // sqls.Add("update make set ma_madeqty=ma_madeqty+1 where ma_code='" + iMakeCode + "'");
|
|
|
- // sqls.Add("update makeserial set ms_status=2 where ms_sncode='" + iSnCode + "'");
|
|
|
- // }
|
|
|
- // dh.ExecuteSQLTran(sqls.ToArray());
|
|
|
- // sqls.Clear();
|
|
|
- //}
|
|
|
- //else
|
|
|
- // CheckNextStepIfQC(iSnCode, iMakeCode, nextstepcode.ToString(), cr_code, iUserName, out oErrorMessage);
|
|
|
- //// 将数据插入craftmaterial表
|
|
|
- //SetCollectionFinish(iSnCode, iMakeCode, iUserName, iSourceCode, out oErrorMessage);
|
|
|
+ InsertMakeProcess(iSnCode, iMakeCode, iSourceCode, iMPKind, iResult, iUserName);
|
|
|
+ return SetStepFinish(iMakeCode, iSourceCode, iSnCode, iMPKind, iResult, iUserName, out oErrorMessage);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|