chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,748 @@
//
// 這個檔案是 課程報名 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
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
{
///<summary>
/// 課程報名 資料存取類別
///</summary>
public partial class DAC_課程報名 : WebLib.DAC
{
#region
///<summary>
/// InsertOne 之前會執行此方法
/// 在這裡可以做一些檢查或是自動編號等動作
/// 回傳 false 會打斷 InsertOne 的執行
///</summary>
protected virtual bool BeforeInsertOne( value)
{
return true;
}
///<summary>
/// InsertOne 之後會執行此方法
///</summary>
protected virtual void AfterInsertOne( value)
{
}
///<summary>
/// InsertOne 發生錯誤時會執行此方法
///</summary>
///<param name="handled">錯誤是否已經處理妥當</param>
protected virtual void OnInsertOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// UpdateOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 UpdateOne 的執行
///</summary>
protected virtual bool BeforeUpdateOne( value)
{
return true;
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne( value)
{
}
///<summary>
/// UpdateOne 發生錯誤時會執行此方法
///</summary>
///<param name="handled">錯誤是否已經處理妥當</param>
protected virtual void OnUpdateOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne( value)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne( value)
{
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(string , int , int DB_APPNO)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(string , int , int DB_APPNO)
{
}
///<summary>
/// DeleteOne 發生錯誤時會執行此方法
///</summary>
///<param name="handled">錯誤是否已經處理妥當</param>
protected virtual void OnDeleteOneError(Exception error, out bool handled)
{
handled = false;
}
#endregion
// 有另外加上去的屬性及方法,請加在這裡
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select選課紀錄(string , bool , bool , bool , bool )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select * from (
select A.學員編號, A.訓練課程編號, A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況,
(select count(1) from 學員出席 where 學員出席.訓練課程編號=A.訓練課程編號 and 學員出席.學員編號=A.學員編號) AS 出席次數,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
(select count(1) from 滿意度調查 C where A.訓練課程編號=C.訓練課程企劃編號 and A.學員編號=C.學員編號) as 填寫數,
J.心得報告編號, J.上架 as 心得上架
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
where A.學員編號 = @學員編號";
if ()
cmdSelect.CommandText +=
@" and exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' ) ";
if ()
cmdSelect.CommandText +=
@" and B.訓練日期 <= GetDate() ";
cmdSelect.CommandText += " ) as TMP1 where 1=1 ";
if ()
cmdSelect.CommandText +=
@" and (出席次數 > 0) or (出席狀況 is not null and 出席狀況 <> '') ";
cmdSelect.CommandText += " order by 訓練日期 desc";
AddParam(cmdSelect, "學員編號", );
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select選課紀錄(int , string , string , string )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select '外訓' AS 開課別, CONVERT(NVARCHAR(10), A.訓練年度) as 訓練日期, '' as 訓練日期迄,
A.訓練名稱, A.訓練時數, A.員工編號, C.BPNME as 員工姓名,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
1 as 填寫數
from 外部受訓紀錄 A
inner join BPSNView C on A.員工編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
where 1=1 ";
if ( > 0)
{
cmdSelect.CommandText += " and A.訓練年度 = @訓練年度 ";
AddParam(cmdSelect, "訓練年度", );
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and D.RAPYN = @計畫別 ";
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and A.訓練名稱 like @課程名稱 ";
}
cmdSelect.CommandText +=
@"
union all
select '內訓' AS 開課別, CONVERT(NVARCHAR(10), B.訓練日期, 120) as 訓練日期, CONVERT(NVARCHAR(10), B.訓練日期迄, 120) as 訓練日期迄,
B.訓練名稱, B.訓練時數, A.學員編號 as 員工編號, C.BPNME as 學員姓名,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
where exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' )
and B.公司別=@公司別 ";
if ( > 0)
{
cmdSelect.CommandText += " and B.訓練日期 >= @訓練日期1 and B.訓練日期 < @訓練日期2 ";
AddParam(cmdSelect, "訓練日期1", new DateTime(, 1, 1));
AddParam(cmdSelect, "訓練日期2", new DateTime( + 1, 1, 1));
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and D.RAPYN = @計畫別 ";
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and B.訓練名稱 like @課程名稱 ";
}
cmdSelect.CommandText += " order by 訓練日期 desc";
AddParam(cmdSelect, "公司別", );
AddParam(cmdSelect, "計畫別", );
AddParam(cmdSelect, "課程名稱", "%" + + "%");
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select缺席紀錄(int , string , string , string , List<string> , List<string> )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, C.BPNME as 學員姓名, A.訓練課程編號, A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限, B.計畫別,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
(select count(1) from 滿意度調查 C where A.訓練課程編號=C.訓練課程企劃編號 and A.學員編號=C.學員編號) as 填寫數,
J.心得報告編號, J.上架 as 心得上架
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
where exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' )
and (SELECT COUNT(1) FROM 學員出席 K WHERE A.訓練課程編號=K.訓練課程編號 and A.學員編號=K.學員編號 AND K.出席狀況='Y') = 0 ";
if ( > 0)
{
cmdSelect.CommandText += " and B.訓練日期 >= @訓練日期1 and B.訓練日期 < @訓練日期2 ";
AddParam(cmdSelect, "訓練日期1", new DateTime(, 1, 1));
AddParam(cmdSelect, "訓練日期2", new DateTime( + 1, 1, 1));
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and B.計畫別 = @計畫別 ";
AddParam(cmdSelect, "計畫別", );
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and B.訓練名稱 like @訓練名稱 ";
AddParam(cmdSelect, "訓練名稱", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and B.公司別 = @公司別 ";
AddParam(cmdSelect, "公司別", );
}
if ( != null && .Count > 0)
{
cmdSelect.CommandText += " and B.編號 in (" + String.Join(",", .ToArray()) + ")";
}
if ( != null && .Count > 0)
{
cmdSelect.CommandText += " and D.RAPYN in (" + String.Join(",", .ToArray()) + ")";
}
cmdSelect.CommandText += " order by B.訓練日期 desc";
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select確定報名學員名單(int , string = "")
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數,
J.心得報告編號, J.上架 as 心得上架
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
where A.訓練課程編號 = @訓練課程編號
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R') ";
AddParam(cmdSelect, "訓練課程編號", );
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and D.RAPYN = @計畫年度編號 ";
AddParam(cmdSelect, "計畫年度編號", );
}
cmdSelect.CommandText += " order by 計畫年度編號, 站別編號, 職務編號, 等級編號, A.學員編號";
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select效益追蹤名單(int , string )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數,
J.心得報告編號, J.上架 as 心得上架
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
where A.訓練課程編號 = @訓練課程編號
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R')
and (SELECT COUNT(1) FROM 學員出席 K WHERE A.訓練課程編號=K.訓練課程編號 and A.學員編號=K.學員編號 AND K.出席狀況='Y') > 0";
AddParam(cmdSelect, "訓練課程編號", );
if ( != null && .Length > 0)
{
string[] IDs = .Split('|');
if (IDs.Length > 1)
{
// 部門
if (IDs[0] == "A")
{
string str組織 = "";
DAC_組織圖 Dao組織圖 = new DAC_組織圖(conn);
List d = Dao組織圖.Select子樹(1, DAC.GetInt32(IDs[1]));
foreach ( item in d)
{
str組織 += String.Format("{0},", item.ID);
}
if (str組織.Length > 0)
{
str組織 = str組織.Remove(str組織.Length - 1);
cmdSelect.CommandText += " and exists (select 1 from 組織人員 X where A.學員編號=X.人員ID and X.組織ID IN (" + str組織 + ") ) ";
}
}
// 站別
else
{
cmdSelect.CommandText += " and D.RABRH = @站別編號 ";
AddParam(cmdSelect, "站別編號", IDs[1]);
}
}
}
// cmdSelect.CommandText += " order by 計畫年度編號, 站別編號, 職務編號, 等級編號, A.學員編號";
cmdSelect.CommandText += " order by A.學員編號";
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select選課狀況(int , bool )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
D.RAPYN AS 計畫年度編號,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
where A.訓練課程編號 = @訓練課程編號";
if ()
cmdSelect.CommandText += " and A.報名狀態 = 'R' ";
else
cmdSelect.CommandText += " and A.報名狀態 <> 'R' AND A.報名狀態 <> 'N' ";
AddParam(cmdSelect, "訓練課程編號", );
cmdSelect.CommandText += " order by A.學員編號";
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select確定報名學員計畫(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select distinct 計畫年度編號, ISNULL('【' + I.BSSCR + '】', '') + 計畫年度名稱 as 計畫年度名稱 from
(select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
D.RAPYN AS 計畫年度編號, E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號=C.BPENO
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
where A.訓練課程編號 = @訓練課程編號
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R')) as tmp1
left outer join BCLS I on I.BSCLS = SUBSTRING(計畫年度編號, LEN(計畫年度編號)-5,1) and I.BSPAR = 'BCUSZON'
order by 計畫年度編號";
AddParam(cmdSelect, "訓練課程編號", );
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select必修學員(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, A.學員編號 + ' ' + B.BPNME as 學員姓名
from 課程報名 A
inner join BPSNView B on A.學員編號=B.BPENO
where A.訓練課程編號 = @訓練課程編號
and A.報名狀態 = 'R'
order by A.學員編號";
AddParam(cmdSelect, "訓練課程編號", );
return Select(cmdSelect);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select選修學員(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select A.學員編號, A.學員編號 + ' ' + B.BPNME as 學員姓名
from 課程報名 A
inner join BPSNView B on A.學員編號=B.BPENO
where A.訓練課程編號 = @訓練課程編號
and (A.報名狀態 = 'S' or A.報名狀態 = 'Y')
order by A.學員編號";
AddParam(cmdSelect, "訓練課程編號", );
return Select(cmdSelect);
}
public int Get報名人數(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select count(1) from 課程報名
where 訓練課程編號 = @訓練課程編號
and (報名狀態 = 'Y' or 報名狀態 = 'R')";
AddParam(cmdSelect, "訓練課程編號", );
int i;
ExecuteScalar(cmdSelect, out i);
return i;
}
/*
public int Get出席人數(int 訓練課程編號)
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select count(1) from 課程報名
where 訓練課程編號 = @訓練課程編號
and (報名狀態 = 'Y' or 報名狀態 = 'R') and 出席狀況='Y'";
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
int i;
ExecuteScalar(cmdSelect, out i);
return i;
}
*/
public int Get出席人數(int )
{
return new DAC_學員出席(conn).Get出席人次();
}
public decimal Get出席率(int )
{
// 出席率 = 出席人次 / 報名人數 * 課程天數
if ( == 0)
return 0;
int = new DAC_學員出席(conn).Get出席人次();
int = Get報名人數();
int = new DAC_訓練課程內容(conn).Select訓練日期List().Count;
if ( == 0 || == 0)
return 0;
else
return (decimal) / ((decimal) * (decimal)) * 100m;
/*
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"declare @totalcount int
select @totalcount = count(1) from 課程報名
where 訓練課程編號 = @訓練課程編號
and (報名狀態 = 'Y' or 報名狀態 = 'R')
if @totalcount > 0
select
cast((select count(1) from 課程報名
where 訓練課程編號 = @訓練課程編號
and (報名狀態 = 'Y' or 報名狀態 = 'R') and 出席狀況='Y') as float)
/
cast((select count(1) from 課程報名
where 訓練課程編號 = @訓練課程編號
and (報名狀態 = 'Y' or 報名狀態 = 'R')) as float) * 100
else
select 0";
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
decimal i;
ExecuteScalar(cmdSelect, out i);
return i;
*/
}
/// <summary>
/// 取得某學員是否報名某課程
/// </summary>
public string Get報名狀態(string , int )
{
List d = SelectOne(, );
if (d.Count == 0)
return "";
return d[0].;
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count == 0)
{
newValue = new ();
newValue. = ;
newValue. = ;
newValue. = DateTime.UtcNow.AddHours(8);
newValue. = "R";
newValue.DB_CRUSR = userId;
InsertOne(newValue);
}
else
{
// 已經是必修或是選修,不管他
if (values[0]. == "R" || values[0]. == "Y" || values[0]. == "S")
return;
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = new DateTime();
values[0]. = "R";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count > 0 && values[0]. == "R")
{
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = new DateTime();
values[0]. = "N";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count == 0)
{
newValue = new ();
newValue. = ;
newValue. = ;
newValue. = DateTime.UtcNow.AddHours(8);
newValue. = "S";
newValue.DB_CRUSR = userId;
InsertOne(newValue);
}
else
{
// 已經是必修或是選修,不管他
if (values[0]. == "R" || values[0]. == "Y" || values[0]. == "S")
return;
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = new DateTime();
values[0]. = "S";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count > 0 && (values[0]. == "S" || values[0]. == "Y"))
{
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = new DateTime();
values[0]. = "N";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count > 0 && values[0]. == "S")
{
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = new DateTime();
values[0]. = "Y";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string userId)
{
List values = SelectOne(, );
if (values.Count > 0 && values[0]. == "Y")
{
values[0]. = new DateTime();
values[0]. = DateTime.UtcNow.AddHours(8);
values[0]. = "S";
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
}
public void (string , int , string UserId)
{
List values = SelectOne(, );
if (values.Count > 0)
{
values[0]. = "Y";
values[0].DB_TRUSR = UserId;
UpdateOne(values[0]);
}
}
public void Update出席狀況(string , int , string , string , string UserId)
{
List values = SelectOne(, );
if (values.Count > 0)
{
values[0]. = ;
values[0]. = ;
values[0].DB_TRUSR = UserId;
UpdateOne(values[0]);
}
}
}
///<summary>
/// 課程報名 資料集合類別
///</summary>
public partial class List : List<>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 課程報名 資料紀錄類別
///</summary>
public partial class
{
// 有另外加上去的屬性及方法,請加在這裡
}
}