feat: fmRpar GridView 改用 ObjectDataSource
- RparDAC 新增 SelectPage/SelectCount - dsRPARGrid 改 ObjectDataSource;Search/Selected 調整 - fmRowk 保留(框架限制,文檔記錄)
This commit is contained in:
@@ -8,6 +8,7 @@ using Wellan.Data;
|
||||
using Wellan.Common;
|
||||
using System.Transactions;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Linq;
|
||||
@@ -1856,6 +1857,124 @@ public class RparDAC : Wellan.Data.WDAC
|
||||
|
||||
return new 打卡檢查Item();
|
||||
}
|
||||
|
||||
private const string RparGridColumns =
|
||||
@"TRDAT, TRMOD, TRUSR, RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT, RPTYP, FLOOR(RPTCT / 60) AS RPTCT, RPFTR, RPDOC,
|
||||
APPNO, RPAPP, RPAPD, RPAPU, RPADT, RPAPN, RPANO, RPAGT, RPRTM, RPETM, RPUST, RPTC1, RPTC2, RPTC3,
|
||||
RPRSN, RPAGM, ISNULL(RPTCT - FLOOR(RPTCT / 60) * 60, 0) AS RPTMT";
|
||||
|
||||
private const string RparGridWhere = " WHERE ((RPAPN IS NULL) OR ((RPAPN<>'D') AND (RPAPN=RPANO))) ";
|
||||
|
||||
/// <summary>
|
||||
/// 差勤紀錄 Grid 分頁查詢
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectPage(int startRowIndex, int maximumRows, string RPPYN, string RPNUM1, string RPNUM2, string RPRDT1, string RPRDT2, string rparType)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
|
||||
StringBuilder filter = new StringBuilder();
|
||||
BuildRparGridFilter(filter, cmd, RPPYN, RPNUM1, RPNUM2, RPRDT1, RPRDT2, rparType);
|
||||
|
||||
cmd.CommandText = String.Format(
|
||||
@"SELECT * FROM
|
||||
(
|
||||
SELECT {0}, ROW_NUMBER() OVER (ORDER BY RPREN) AS ROWID
|
||||
FROM RPAR {1} {2}
|
||||
) AS TMP
|
||||
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
|
||||
ORDER BY ROWID",
|
||||
RparGridColumns, RparGridWhere, 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 SelectCount(string RPPYN, string RPNUM1, string RPNUM2, string RPRDT1, string RPRDT2, string rparType)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
|
||||
StringBuilder filter = new StringBuilder();
|
||||
BuildRparGridFilter(filter, cmd, RPPYN, RPNUM1, RPNUM2, RPRDT1, RPRDT2, rparType);
|
||||
|
||||
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RPAR {0} {1}", RparGridWhere, filter.ToString());
|
||||
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
private void BuildRparGridFilter(StringBuilder sb, DbCommand cmd, string RPPYN, string RPNUM1, string RPNUM2, string RPRDT1, string RPRDT2, string rparType)
|
||||
{
|
||||
switch (rparType)
|
||||
{
|
||||
case "0":
|
||||
sb.Append(" AND RPTYP LIKE '0%' ");
|
||||
break;
|
||||
case "1":
|
||||
sb.Append(" AND RPTYP LIKE '1%' ");
|
||||
break;
|
||||
case "21":
|
||||
sb.Append(" AND RPTYP = '21' ");
|
||||
break;
|
||||
case "22":
|
||||
sb.Append(" AND RPTYP = '22' ");
|
||||
break;
|
||||
case "3":
|
||||
sb.Append(" AND RPTYP LIKE '3%' ");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(RPPYN))
|
||||
{
|
||||
sb.Append(" AND RPPYN = @RPPYN1 ");
|
||||
cmd.Parameters.Add(Query.NewParameter("RPPYN1", RPPYN));
|
||||
}
|
||||
|
||||
AppendRparRange(sb, cmd, "RPNUM", RPNUM1, RPNUM2, true);
|
||||
AppendRparRange(sb, cmd, "RPRDT", RPRDT1, RPRDT2, false);
|
||||
}
|
||||
|
||||
private void AppendRparRange(StringBuilder sb, DbCommand cmd, string field, string value1, string value2, bool like)
|
||||
{
|
||||
bool has1 = !string.IsNullOrEmpty(value1);
|
||||
bool has2 = !string.IsNullOrEmpty(value2);
|
||||
|
||||
if (has1 && has2)
|
||||
{
|
||||
sb.AppendFormat(" AND {0} >= @{0}1 AND {0} <= @{0}2 ", field);
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "1", value1));
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "2", value2));
|
||||
}
|
||||
else if (has1)
|
||||
{
|
||||
if (like)
|
||||
{
|
||||
sb.AppendFormat(" AND {0} LIKE @{0}1 ", field);
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "1", value1 + "%"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat(" AND {0} >= @{0}1 ", field);
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "1", value1));
|
||||
}
|
||||
}
|
||||
else if (has2)
|
||||
{
|
||||
if (like)
|
||||
{
|
||||
sb.AppendFormat(" AND {0} LIKE @{0}2 ", field);
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "2", value2 + "%"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat(" AND {0} <= @{0}2 ", field);
|
||||
cmd.Parameters.Add(Query.NewParameter(field + "2", value2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user