目的: 自訂SQL 取得 CaluField 欄位值 , 不用 getKeyCode
處理說明: 由於 CaluField 欄位不是由單一欄位值取得, CaluField 欄位
必需自行組合 SQL , 取得欄位值
1>*.cs
public dynamic getGridData_M()
{
public dynamic getGridData_M()
{
cmd.CommandText = Tmp_Sql;
string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
DataSet ds = getDataTable(cmd, countSql);
//STEP2: ds.Tables["T1"].rows 新增 column欄位值
//自訂 CaluField 欄位 - [報工工時(ALSHR_)]
//取得報工工時 -- JCN+DT+EMPLYID+MOSM , 工號+施工日期+ 施工人員+主步序
ds.Tables["T1"].Columns.Add("ALSHR_", typeof(object)); //報工工時 ALSHR_
string Tmp_Val = ""; //欄位值 以 ; 分隔
string Tmp_SAPNO = "",Tmp_DT,Tmp_EMPLYID,Tmp_MOSM;
string Tmp_ALSHR_;
foreach(DataRow row in ds.Tables["T1"].Rows)
{
Tmp_SAPNO = row["SAPNO"].ToString();
Tmp_DT = myfunc.DatetoStr(DateTime.Parse(row["DT"].ToString()));
Tmp_EMPLYID = row["EMPLYID"].ToString();
Tmp_MOSM = row["MOSM"].ToString();
//若為一般工單(非 QDR('F') 或 ILIAS工單('V') ), 則 SAP工號+'0000" \
if (Tmp_SAPNO.Length > 0)
{
Tmp_SAPNO = myfunc.get_SAPNO(Tmp_SAPNO);
//自訂 SQL , 取得 CaluField 欄位值
Tmp_Sql = " SELECT JCN, WORK_ID, round((sum(HOUR_WORK)+sum(HOUR_OT))/60,2) WCHR "
+ " FROM "
+ " ( SELECT JCN, ACT, WC, HOUR_WORK, WORK_ID, HOUR_OT "
+ " FROM HOUR.ALS_HOUR_COMP@ALS_HOUR "
+ " WHERE JCN = " + myfunc.AA(Tmp_SAPNO)
+ " AND substr(ACT, 1, 1) = " + myfunc.AA(Tmp_MOSM)
+ " AND WORK_ID = " + myfunc.AA(Tmp_EMPLYID)
+ " AND DATA_DATE =" + myfunc.AA(Tmp_DT)
+ " UNION ALL "
+ " SELECT JCN, ACT, WC, HOUR_WORK, WORK_ID, HOUR_OT "
+ " FROM HOUR.ALS_HOUR_COMP_HISTORY@ALS_HOUR "
+ " WHERE JCN = " + myfunc.AA(Tmp_SAPNO)
+ " AND substr(ACT, 1, 1) = " + myfunc.AA(Tmp_MOSM)
+ " AND WORK_ID = " + myfunc.AA(Tmp_EMPLYID)
+ " AND DATA_DATE =" + myfunc.AA(Tmp_DT)
+ " ) "
+ " GROUP BY JCN, WORK_ID ";
Tmp_Val = myfunc.SqlValue(Tmp_Sql);
if (Tmp_Val.Length > 1)
{
row["ALSHR_"] = myfunc.StrExtract(Tmp_Val, 3); //報工工時
}
} // end of if (Tmp_SAPNO.Length > 0)
} // end of foreach (DataRow row in ds.Tables["T1"].Rows)
return ds;
}
沒有留言:
張貼留言