feat: fmRparWorker GridView 改用 ObjectDataSource

- RparDAC 新增 SelectWorkerPage/SelectWorkerCount

- RpabDAC 新增 SelectRPABByRPREN

- dsRPARGrid/dsRPAB 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
2026-09-10 10:57:21 +08:00
parent 3cb2c0d97c
commit f1cf00d06c
5 changed files with 98 additions and 23 deletions
+14
View File
@@ -304,4 +304,18 @@ public class RpabDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN));
return Query.Select(cmd);
}
/// <summary>
/// 取得簽核關卡明細 (全部)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPABByRPREN(string RPREN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT RPANO, RPAPN, RPENO, RPDAT, RPAPP, RPDOC
FROM RPAB
WHERE RPREN = @RPREN");
cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN));
return Query.Select(cmd);
}
}
+62
View File
@@ -1975,6 +1975,68 @@ public class RparDAC : Wellan.Data.WDAC
}
}
}
/// <summary>
/// 差勤紀錄 Grid 分頁查詢 (員工本人)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectWorkerPage(int startRowIndex, int maximumRows, string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildWorkerGridFilter(filter, cmd, RPNUM_FIXED, RPRDT1, RPRDT2, rparType);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT {0}, ROW_NUMBER() OVER (ORDER BY RPREN) AS ROWID
FROM RPAR {1}
) AS TMP
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY ROWID",
RparGridColumns, filter.ToString());
cmd.Parameters.Add(Query.NewParameter("STARTROWINDEX", startRowIndex));
cmd.Parameters.Add(Query.NewParameter("MAXIMUMROWS", maximumRows));
return Query.Select(cmd);
}
/// <summary>
/// 差勤紀錄 Grid 查詢筆數 (員工本人)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectWorkerCount(string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildWorkerGridFilter(filter, cmd, RPNUM_FIXED, RPRDT1, RPRDT2, rparType);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RPAR {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
private void BuildWorkerGridFilter(StringBuilder sb, DbCommand cmd, string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
sb.Append(" WHERE RPNUM = @RPNUM_FIXED ");
cmd.Parameters.Add(Query.NewParameter("RPNUM_FIXED", RPNUM_FIXED));
switch (rparType)
{
case "0":
sb.Append(" AND RPTYP LIKE '0%' AND RPADT IS NOT NULL ");
break;
case "1":
sb.Append(" AND RPTYP LIKE '1%' AND RPADT IS NOT NULL ");
break;
case "3":
sb.Append(" AND RPTYP LIKE '3%' AND RPADT IS NOT NULL ");
break;
}
AppendRparRange(sb, cmd, "RPRDT", RPRDT1, RPRDT2, false);
}
}