|
|
@@ -82,18 +82,30 @@ namespace UAS_MES_NEW.PublicMethod
|
|
|
if (Param.Rows.Count > 0)
|
|
|
{
|
|
|
int LoopTime = Param.Rows.Count > 1000 ? 1000 : Param.Rows.Count;
|
|
|
+ //优化:原双层循环是 行数×变量数 次跨进程取 Name 再做大小写比较,数据行多时很慢;
|
|
|
+ //改为先把行值一次性取出,再只遍历一遍变量,按变量名后缀编号反查行号赋值
|
|
|
+ string lpNameUpper = dt.Rows[i]["lp_name"].ToString().ToUpper();
|
|
|
+ string[] paramValues = new string[LoopTime];
|
|
|
for (int j = 0; j < LoopTime; j++)
|
|
|
{
|
|
|
- for (int k = 0; k < doc.Variables.FormVariables.Count; k++)
|
|
|
+ paramValues[j] = Param.Rows[j][0].ToString();
|
|
|
+ }
|
|
|
+ for (int k = 0; k < doc.Variables.FormVariables.Count; k++)
|
|
|
+ {
|
|
|
+ string subNameUpper = doc.Variables.FormVariables.Item(k + 1).Name.ToUpper();
|
|
|
+ //无编号参数:取第一行
|
|
|
+ if (subNameUpper == lpNameUpper)
|
|
|
{
|
|
|
- if (j == 0 & doc.Variables.FormVariables.Item(k + 1).Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper())
|
|
|
- {
|
|
|
- doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[0][0].ToString();
|
|
|
- }
|
|
|
- //使用SN开头的参数赋值SN1,SN2,SN3等参数
|
|
|
- if (doc.Variables.FormVariables.Item(k + 1).Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper() + (j + 1))
|
|
|
+ doc.Variables.FormVariables.Item(k + 1).Value = paramValues[0];
|
|
|
+ }
|
|
|
+ //使用SN开头的参数赋值SN1,SN2,SN3等参数:变量名后缀是行号+1
|
|
|
+ else if (subNameUpper.Length > lpNameUpper.Length && subNameUpper.StartsWith(lpNameUpper)
|
|
|
+ && subNameUpper[lpNameUpper.Length] != '0')
|
|
|
+ {
|
|
|
+ int rowNo;
|
|
|
+ if (int.TryParse(subNameUpper.Substring(lpNameUpper.Length), out rowNo) && rowNo >= 1 && rowNo <= LoopTime)
|
|
|
{
|
|
|
- doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[j][0].ToString();
|
|
|
+ doc.Variables.FormVariables.Item(k + 1).Value = paramValues[rowNo - 1];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -185,18 +197,30 @@ namespace UAS_MES_NEW.PublicMethod
|
|
|
if (Param.Rows.Count > 0)
|
|
|
{
|
|
|
int LoopTime = Param.Rows.Count > 1000 ? 1000 : Param.Rows.Count;
|
|
|
+ //优化:原双层循环是 行数×变量数 次跨进程取 Name 再做大小写比较,数据行多时很慢;
|
|
|
+ //改为先把行值一次性取出,再只遍历一遍变量,按变量名后缀编号反查行号赋值
|
|
|
+ string lpNameUpper = dt.Rows[i]["lp_name"].ToString().ToUpper();
|
|
|
+ string[] paramValues = new string[LoopTime];
|
|
|
for (int j = 0; j < LoopTime; j++)
|
|
|
{
|
|
|
- for (int k = 0; k < doc.Variables.FormVariables.Count; k++)
|
|
|
+ paramValues[j] = Param.Rows[j][0].ToString();
|
|
|
+ }
|
|
|
+ for (int k = 0; k < doc.Variables.FormVariables.Count; k++)
|
|
|
+ {
|
|
|
+ string subNameUpper = doc.Variables.FormVariables.Item(k + 1).Name.ToUpper();
|
|
|
+ //无编号参数:取第一行
|
|
|
+ if (subNameUpper == lpNameUpper)
|
|
|
{
|
|
|
- if (j == 0 & doc.Variables.FormVariables.Item(k + 1).Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper())
|
|
|
- {
|
|
|
- doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[0][0].ToString();
|
|
|
- }
|
|
|
- //使用SN开头的参数赋值SN1,SN2,SN3等参数
|
|
|
- if (doc.Variables.FormVariables.Item(k + 1).Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper() + (j + 1))
|
|
|
+ doc.Variables.FormVariables.Item(k + 1).Value = paramValues[0];
|
|
|
+ }
|
|
|
+ //使用SN开头的参数赋值SN1,SN2,SN3等参数:变量名后缀是行号+1
|
|
|
+ else if (subNameUpper.Length > lpNameUpper.Length && subNameUpper.StartsWith(lpNameUpper)
|
|
|
+ && subNameUpper[lpNameUpper.Length] != '0')
|
|
|
+ {
|
|
|
+ int rowNo;
|
|
|
+ if (int.TryParse(subNameUpper.Substring(lpNameUpper.Length), out rowNo) && rowNo >= 1 && rowNo <= LoopTime)
|
|
|
{
|
|
|
- doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[j][0].ToString();
|
|
|
+ doc.Variables.FormVariables.Item(k + 1).Value = paramValues[rowNo - 1];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -314,18 +338,30 @@ namespace UAS_MES_NEW.PublicMethod
|
|
|
return false;
|
|
|
}
|
|
|
int LoopTime = Param.Rows.Count > 1000 ? 1000 : Param.Rows.Count;
|
|
|
+ //优化:原双层循环是 行数×变量数 次跨进程取 Name 再做大小写比较,数据行多时很慢;
|
|
|
+ //改为先把行值一次性取出,再只遍历一遍变量,按变量名后缀编号反查行号赋值
|
|
|
+ string lpNameUpper = dt.Rows[i]["lp_name"].ToString().ToUpper();
|
|
|
+ string[] paramValues = new string[LoopTime];
|
|
|
for (int j = 0; j < LoopTime; j++)
|
|
|
{
|
|
|
- for (int k = 0; k < format.SubStrings.Count; k++)
|
|
|
+ paramValues[j] = Param.Rows[j][0].ToString();
|
|
|
+ }
|
|
|
+ for (int k = 0; k < format.SubStrings.Count; k++)
|
|
|
+ {
|
|
|
+ string subNameUpper = format.SubStrings[k].Name.ToUpper();
|
|
|
+ //无编号参数:取第一行
|
|
|
+ if (subNameUpper == lpNameUpper)
|
|
|
{
|
|
|
- if (j == 0 & format.SubStrings[k].Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper())
|
|
|
- {
|
|
|
- format.SubStrings[k].Value = Param.Rows[0][0].ToString();
|
|
|
- }
|
|
|
- //使用SN开头的参数赋值SN1,SN2,SN3等参数
|
|
|
- if (format.SubStrings[k].Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper() + (j + 1))
|
|
|
+ format.SubStrings[k].Value = paramValues[0];
|
|
|
+ }
|
|
|
+ //使用SN开头的参数赋值SN1,SN2,SN3等参数:变量名后缀是行号+1
|
|
|
+ else if (subNameUpper.Length > lpNameUpper.Length && subNameUpper.StartsWith(lpNameUpper)
|
|
|
+ && subNameUpper[lpNameUpper.Length] != '0')
|
|
|
+ {
|
|
|
+ int rowNo;
|
|
|
+ if (int.TryParse(subNameUpper.Substring(lpNameUpper.Length), out rowNo) && rowNo >= 1 && rowNo <= LoopTime)
|
|
|
{
|
|
|
- format.SubStrings[k].Value = Param.Rows[j][0].ToString();
|
|
|
+ format.SubStrings[k].Value = paramValues[rowNo - 1];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -431,18 +467,30 @@ namespace UAS_MES_NEW.PublicMethod
|
|
|
if (Param.Rows.Count > 0)
|
|
|
{
|
|
|
int LoopTime = Param.Rows.Count > 1000 ? 1000 : Param.Rows.Count;
|
|
|
+ //优化:原双层循环是 行数×变量数 次跨进程取 Name 再做大小写比较,数据行多时很慢;
|
|
|
+ //改为先把行值一次性取出,再只遍历一遍变量,按变量名后缀编号反查行号赋值
|
|
|
+ string lpNameUpper = dt.Rows[i]["lp_name"].ToString().ToUpper();
|
|
|
+ string[] paramValues = new string[LoopTime];
|
|
|
for (int j = 0; j < LoopTime; j++)
|
|
|
{
|
|
|
- for (int k = 0; k < format.SubStrings.Count; k++)
|
|
|
+ paramValues[j] = Param.Rows[j][0].ToString();
|
|
|
+ }
|
|
|
+ for (int k = 0; k < format.SubStrings.Count; k++)
|
|
|
+ {
|
|
|
+ string subNameUpper = format.SubStrings[k].Name.ToUpper();
|
|
|
+ //无编号参数:取第一行
|
|
|
+ if (subNameUpper == lpNameUpper)
|
|
|
{
|
|
|
- if (j == 0 & format.SubStrings[k].Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper())
|
|
|
- {
|
|
|
- format.SubStrings[k].Value = Param.Rows[0][0].ToString();
|
|
|
- }
|
|
|
- //使用SN开头的参数赋值SN1,SN2,SN3等参数
|
|
|
- if (format.SubStrings[k].Name.ToUpper() == dt.Rows[i]["lp_name"].ToString().ToUpper() + (j + 1))
|
|
|
+ format.SubStrings[k].Value = paramValues[0];
|
|
|
+ }
|
|
|
+ //使用SN开头的参数赋值SN1,SN2,SN3等参数:变量名后缀是行号+1
|
|
|
+ else if (subNameUpper.Length > lpNameUpper.Length && subNameUpper.StartsWith(lpNameUpper)
|
|
|
+ && subNameUpper[lpNameUpper.Length] != '0')
|
|
|
+ {
|
|
|
+ int rowNo;
|
|
|
+ if (int.TryParse(subNameUpper.Substring(lpNameUpper.Length), out rowNo) && rowNo >= 1 && rowNo <= LoopTime)
|
|
|
{
|
|
|
- format.SubStrings[k].Value = Param.Rows[j][0].ToString();
|
|
|
+ format.SubStrings[k].Value = paramValues[rowNo - 1];
|
|
|
}
|
|
|
}
|
|
|
}
|