// // 這個檔案是 場地 資料表的資料存取類別 檔案二 // 您可以修改這個檔案,加入您自訂的屬性與方法 // using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data; using System.Data.Common; using WebLib; using System.Data.SqlClient; namespace Education { /// /// 場地 資料存取類別 /// public partial class DAC_場地 : WebLib.DAC { /// /// 給查詢畫面用的 Select 方法 /// [DataObjectMethod(DataObjectMethodType.Select)] public 場地List Select(bool noInputReturnAll, string 單位名稱, string 場地名稱, string 場地類型, string 聯絡人, string 聯絡人電話) { 場地List result = new 場地List(); if (!noInputReturnAll && 單位名稱 == null && 場地名稱 == null && 場地類型 == null && 聯絡人 == null && 聯絡人電話 == null) return result; IDataList list = result as IDataList; DbCommand cmdSelect = NewCommand(); cmdSelect.CommandText = _select + _from + _where; if (單位名稱 != null && 單位名稱.Length > 0) { cmdSelect.CommandText += " and 單位名稱 like @單位名稱 "; AddParam(cmdSelect, "單位名稱", "%" + 單位名稱 + "%"); } if (場地名稱 != null && 場地名稱.Length > 0) { cmdSelect.CommandText += " and 場地名稱 like @場地名稱 "; AddParam(cmdSelect, "場地名稱", "%" + 場地名稱 + "%"); } if (場地類型 != null && 場地類型.Length > 0) { cmdSelect.CommandText += " and 場地類型 like @場地類型 "; AddParam(cmdSelect, "場地類型", "%" + 場地類型 + "%"); } if (聯絡人 != null && 聯絡人.Length > 0) { cmdSelect.CommandText += " and 聯絡人 like @聯絡人 "; AddParam(cmdSelect, "聯絡人", "%" + 聯絡人 + "%"); } if (聯絡人電話 != null && 聯絡人電話.Length > 0) { cmdSelect.CommandText += " and 聯絡人電話 like @聯絡人電話 "; AddParam(cmdSelect, "聯絡人電話", "%" + 聯絡人電話 + "%"); } cmdSelect.CommandText += _order; Select(cmdSelect, ref list); return result; } /// /// InsertOne 之前會執行此方法 /// 在這裡可以做一些檢查或是自動編號等動作 /// 回傳 false 會打斷 InsertOne 的執行 /// protected virtual bool BeforeInsertOne(場地 value) { return true; } /// /// InsertOne 之後會執行此方法 /// protected virtual void AfterInsertOne(場地 value) { } /// /// InsertOne 發生錯誤時會執行此方法 /// protected virtual void OnInsertOneError(Exception error, out bool handled) { handled = false; } /// /// UpdateOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 UpdateOne 的執行 /// protected virtual bool BeforeUpdateOne(場地 value) { return true; } /// /// UpdateOne 之後會執行此方法 /// protected virtual void AfterUpdateOne(場地 value) { } /// /// UpdateOne 發生錯誤時會執行此方法 /// protected virtual void OnUpdateOneError(Exception error, out bool handled) { handled = false; } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(場地 value) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(場地 value) { } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(int 編號, int DB_APPNO) { } /// /// DeleteOne 發生錯誤時會執行此方法 /// protected virtual void OnDeleteOneError(Exception error, out bool handled) { handled = false; } // 有另外加上去的屬性及方法,請加在這裡 /// /// 取得場地名稱 /// /// /// public string Get場地名稱(object 編號) { DbCommand cmd = NewCommand("SELECT 場地名稱 FROM " + _tableName + " WHERE 編號=@編號"); AddParam(cmd, "編號", 編號); string s; ExecuteScalar(cmd, out s); return s; } public NameValueList Select地區ForDropDown() { NameValueList result = new NameValueList(); DbCommand cmd = NewCommand("SELECT DISTINCT 地址_縣市 FROM " + _tableName + " ORDER BY 地址_縣市"); result.Add("(請選擇)", ""); result.Fill(Select(cmd), "地址_縣市", "地址_縣市", false); return result; } public NameValueList Select教室類型ForDropDown() { NameValueList result = new NameValueList(); DbCommand cmd = NewCommand("SELECT DISTINCT 場地類型 FROM " + _tableName + " ORDER BY 場地類型"); result.Add("(請選擇)", ""); result.Fill(Select(cmd), "場地類型", "場地類型", false); return result; } [DataObjectMethod(DataObjectMethodType.Select)] public 場地List 查詢作業(bool noInputReturnAll, string 地區, int 價格1, int 價格2, int 人數1, int 人數2, string 場地類型, int 滿意度1, int 滿意度2) { 場地List result = new 場地List(); if (!noInputReturnAll && 地區 == null && 場地類型 == null && 價格1 == 0 && 價格2 == 0 && 人數1 == 0 && 人數2 == 0 && 滿意度1 == 0 && 滿意度2 == 0) return result; IDataList list = result as IDataList; DbCommand cmdSelect = NewCommand(); cmdSelect.CommandText = _select + @" FROM ( SELECT A.*, ISNULL(( SELECT CAST(SUM(場地滿意度分數) AS FLOAT) / COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = A.編號), 0) AS 滿意度 FROM 場地 A ) AS TMP1" + _where; if (地區 != null && 地區.Length > 0) { cmdSelect.CommandText += " and 地址_縣市 like @地區 "; AddParam(cmdSelect, "地區", "%" + 地區 + "%"); } if (場地類型 != null && 場地類型.Length > 0) { cmdSelect.CommandText += " and 場地類型 like @場地類型 "; AddParam(cmdSelect, "場地類型", "%" + 場地類型 + "%"); } if (價格1 > 0 && 價格2 > 0) { cmdSelect.CommandText += " and 價格 >= @價格1 and 價格 <= @價格2 "; AddParam(cmdSelect, "價格1", 價格1); AddParam(cmdSelect, "價格2", 價格2); } else if (價格1 > 0 && 價格2 == 0) { cmdSelect.CommandText += " and 價格 >= @價格1 "; AddParam(cmdSelect, "價格1", 價格1); } else if (價格1 == 0 && 價格2 < 0) { cmdSelect.CommandText += " and 價格 <= @價格2 "; AddParam(cmdSelect, "價格2", 價格2); } if (人數1 > 0 && 人數2 > 0) { cmdSelect.CommandText += " and 容納人數 >= @人數1 and 容納人數 <= @人數2 "; AddParam(cmdSelect, "人數1", 人數1); AddParam(cmdSelect, "人數2", 人數2); } else if (人數1 > 0 && 人數2 == 0) { cmdSelect.CommandText += " and 容納人數 >= @人數1 "; AddParam(cmdSelect, "人數1", 人數1); } else if (人數1 == 0 && 人數2 < 0) { cmdSelect.CommandText += " and 容納人數 <= @人數2 "; AddParam(cmdSelect, "人數2", 人數2); } if (滿意度1 != 0 && 滿意度2 != 0) { cmdSelect.CommandText += " and 滿意度 between @滿意度1 and @滿意度2 "; AddParam(cmdSelect, "滿意度1", 滿意度1); AddParam(cmdSelect, "滿意度2", 滿意度2); } else if (滿意度1 != 0 && 滿意度2 == 0) { cmdSelect.CommandText += " and 滿意度 >= @滿意度1 "; AddParam(cmdSelect, "滿意度1", 滿意度1); } else if (滿意度1 == 0 && 滿意度2 != 0) { cmdSelect.CommandText += " and 滿意度 <= @滿意度2 "; AddParam(cmdSelect, "滿意度2", 滿意度2); } cmdSelect.CommandText += _order; Select(cmdSelect, ref list); return result; } public DataTable Select滿意度統計(int 場地編號) { DbCommand cmdSelect = NewCommand( @"SELECT (SELECT COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號 AND 場地滿意度填答 = 5) AS 場地滿意度5, (SELECT COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號 AND 場地滿意度填答 = 4) AS 場地滿意度4, (SELECT COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號 AND 場地滿意度填答 = 3) AS 場地滿意度3, (SELECT COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號 AND 場地滿意度填答 = 2) AS 場地滿意度2, (SELECT COUNT(1) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號 AND 場地滿意度填答 = 1) AS 場地滿意度1, (SELECT ISNULL(AVG(CAST(場地滿意度分數 AS FLOAT)), 0) FROM 滿意度調查課程企劃 WHERE 場地編號 = @場地編號) AS 場地滿意度總分"); AddParam(cmdSelect, "場地編號", 場地編號); return Select(cmdSelect); } public bool IsOccipued(int 場地編號) { DbCommand cmd = NewCommand( @"SELECT (SELECT COUNT(1) FROM 場地遴選 WHERE 場地編號_A = @場地編號 OR 場地編號_B = @場地編號 OR 場地編號_C = @場地編號) + (SELECT COUNT(1) FROM 場地異動 WHERE 場地編號 = @場地編號)"); AddParam(cmd, "場地編號", 場地編號); int i; ExecuteScalar(cmd, out i); return i > 0; } } /// /// 場地 資料集合類別 /// public partial class 場地List : List<場地> { // 有另外加上去的屬性及方法,請加在這裡 } /// /// 場地 資料紀錄類別 /// public partial class 場地 { // 有另外加上去的屬性及方法,請加在這裡 } }