using System; using System.Data; using System.Data.Common; using System.Text; using System.ComponentModel; using Wellan.Data; /// /// 客戶資料的資料處理類別 /// [DataObject(true)] public class BcusDAC : Wellan.Data.WDAC { public BcusDAC() { } public BcusDAC(string connectionConfig, string connectionConfigName) : this() { this._connectionConfig = connectionConfig; this._connectionConfigName = connectionConfigName; } public BcusDAC(WQuery query) { this._query = query; } /// /// 客戶資料 Grid 分頁查詢 /// [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectPage(int startRowIndex, int maximumRows, string BCNUM, string BCNAM) { DbCommand cmd = Query.NewCommand(); StringBuilder filter = new StringBuilder(); BuildFilter(filter, cmd, BCNUM, BCNAM); cmd.CommandText = String.Format( @"SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY BCNUM) AS ROWID FROM BCUS WHERE 1=1 {0} ) AS TMP WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS ORDER BY ROWID", filter.ToString()); cmd.Parameters.Add(Query.NewParameter("STARTROWINDEX", startRowIndex)); cmd.Parameters.Add(Query.NewParameter("MAXIMUMROWS", maximumRows)); return Query.Select(cmd); } /// /// 客戶資料 Grid 查詢筆數 /// [DataObjectMethod(DataObjectMethodType.Select)] public int SelectCount(string BCNUM, string BCNAM) { DbCommand cmd = Query.NewCommand(); StringBuilder filter = new StringBuilder(); BuildFilter(filter, cmd, BCNUM, BCNAM); cmd.CommandText = String.Format("SELECT COUNT(*) FROM BCUS WHERE 1=1 {0}", filter.ToString()); return WDAC.GetInt32Value(Query.ExecuteScalar(cmd)); } /// /// 取得指定客戶編號在查詢結果中的序號 (0 起算) /// public int SelectBCNUMIndex(string targetBCNUM, string BCNUM, string BCNAM) { DbCommand cmd = Query.NewCommand(); StringBuilder filter = new StringBuilder(); BuildFilter(filter, cmd, BCNUM, BCNAM); cmd.CommandText = String.Format( @"SELECT ROWID - 1 FROM ( SELECT BCNUM, ROW_NUMBER() OVER (ORDER BY BCNUM) AS ROWID FROM BCUS WHERE 1=1 {0} ) AS TMP WHERE BCNUM = @TARGET", filter.ToString()); cmd.Parameters.Add(Query.NewParameter("TARGET", targetBCNUM)); object o = Query.ExecuteScalar(cmd); return (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1; } /// /// 組出客戶資料 Grid 的查詢條件 (與舊 AddSearch 行為一致) /// private void BuildFilter(StringBuilder sb, DbCommand cmd, string BCNUM, string BCNAM) { if (!string.IsNullOrEmpty(BCNUM)) { sb.Append(" AND BCNUM LIKE @BCNUM1 "); cmd.Parameters.Add(Query.NewParameter("BCNUM1", BCNUM + "%")); } if (!string.IsNullOrEmpty(BCNAM)) { sb.Append(" AND BCNAM LIKE @BCNAM1 "); cmd.Parameters.Add(Query.NewParameter("BCNAM1", BCNAM + "%")); } } }