Merge branch 'feature/gridview-to-objectdatasource'

This commit is contained in:
2026-09-10 12:59:36 +08:00
52 changed files with 2016 additions and 599 deletions
+160
View File
@@ -0,0 +1,160 @@
# GridView 銜接的 SqlDataSource 改用 ObjectDataSource
分支:`feature/gridview-to-objectdatasource`
## 目標與原則
- 只改**以 `DataSourceID` 綁定 SqlDataSource 的 GridView**;檔內的 FormView / DataList / DropDownList 之 SqlDataSource 不動。
- 缺的 DAC 建立**專屬** DAC;查詢方法只要 `SelectPage``SelectCount`**不**需要 Insert / Update / Delete。
- 沿用既有 ObjectDataSource 工法(參考 `fmRpir` / `RpirDAC`):
- ObjectDataSource 設定 `TypeName``SelectMethod``SelectCountMethod``EnablePaging="true"`
- `SelectPage` 前兩個參數為 `int startRowIndex, int maximumRows`(由 ObjectDataSource 自動帶入)。
- 動態篩選邏輯由 code-behind 的 `SelectCommand` 字串組裝,改為 DAC 內參數化查詢,code-behind 只設 `SelectParameters[...].DefaultValue`
- 事件簽章由 `SqlDataSourceStatusEventArgs` 改為 `ObjectDataSourceStatusEventArgs`
## 盤點:GridView ↔ SqlDataSource(共 24 個 / 19 檔,皆在 Web 專案)
| # | 檔案 | GridView ID | SqlDataSource ID | 來源表 | 既有 DAC | 狀態 |
|---|---|---|---|---|---|---|
| 1 | forms/customer/fmBcus.ascx | gvBCUS | dsBCUSGrid | BCUS | 無→BcusDAC | **完成** |
| 2 | forms/customer/fmBpaa.ascx | gvBPAA | dsBPAAGrid | BPAA | BpaaDAC(+Select) | **完成** |
| 3 | forms/customer/fmBpab.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** |
| 4 | forms/customer/fmBpabBig.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** |
| 5 | forms/customer/fmBpabSmall.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** |
| 6 | forms/customer/fmBpja.ascx | gvBPJA | dsBPJAGrid | BPJA | 無→BpjaDAC | **完成** |
| 7 | forms/customer/fmBpjb.ascx | gvBPJB | dsBPJBGrid | BPJB | 無→BpjbDAC | **完成** |
| 8 | forms/customer/fmBprj.ascx | gvBPRJ | dsBPRJGrid | BPRJ | BprjDAC(+Select) | **完成** |
| 9 | forms/customer/fmBprm.ascx | gvBPRM | dsBPRMGrid | BPRM | BprmDAC(+Select) | **完成** |
| 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC(+Select) | **完成** |
| 11 | forms/customer/fmRasn.ascx | gvRASN_RABRH | dsRASN_RABRH1 | RASN+BCLS | RasnDAC(+Select) | **完成** |
| 12 | forms/customer/fmRasn.ascx | RASNGrid | dsRASNGrid | RASN/BPJB/BPSNView | RasnDAC(+Select) | **完成** |
| 13 | forms/customer/fmRpfe.ascx | RPFEGrid | dsRPFEGrid | RPFE | 無→RpfeDAC | **完成** |
| 14 | forms/flow/fmSign.ascx | gvRPAB2 | dsRPAB2 | RPAB | RpabDAC(+Select) | **完成** |
| 15 | forms/flow/fmSign.ascx | gvRPAB | dsRPAB | RPAB | RpabDAC(+Select) | **完成** |
| 16 | forms/summary/fmSalaryCalc.ascx | GridView1 | dsSACD | SACD | 無→SacdDAC | **完成** |
| 17 | forms/worker/fmBpsn.ascx | GridView1 | dsBPSNGrid | BPSNView | BpsnDAC | **進行中** |
| 18 | forms/worker/fmRowk.ascx | gvROWK | dsROWKGrid | ROWK | 無 | **保留**(使用 WUserControlBase 的 SqlDataSource 框架,需另案) |
| 19 | forms/worker/fmRpar.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** |
| 20 | forms/worker/fmRparWorker.ascx | RPABGrid | dsRPAB | RPAB | RpabDAC(+Select) | **完成** |
| 21 | forms/worker/fmRparWorker.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** |
| 22 | forms/worker/fmRsaj.ascx | RSAJGrid | dsRSAJGrid | RSAJ | RsajDAC(+Select) | **完成** |
| 23 | forms/worker/fmSendSalaryStrip.ascx | gvSSMS | dsSSMS | SSMS | SsmsDAC(+Select) | **完成** |
| 24 | forms/worker/fmSendSalaryStrip.ascx | gvSSMSSum(已註解) | dsSSMSSum | SSMS | SsmsDAC | **完成**(移除 dsSSMSSumfooter 改用 SsmsDAC |
> 已為 ObjectDataSource(不列入):`fmBPAP`dsBPAP)、`fmRparManager`dsRpad)、`fmSign` 內 dsRPAR未簽/已簽/我的/我的督導、`fmBpsl`、`fmBPSE`、`fmRpir`。
## 驗證樣板:fmBPSN
### 現況
- `fmBpsn.ascx` GridView1`DataSourceID="dsBPSNGrid"``DataKeyNames="BPENO"``AllowPaging="True"`,事件 `OnDataBound / OnPageIndexChanged / OnRowDataBound / OnSelectedIndexChanged`
- `dsBPSNGrid``SelectCommand="SELECT * FROM BPSNView WHERE 1=0"``OnSelected="dsBPSNGrid_Selected"`
- `fmBpsn.ascx.cs``Search()``select`/`from`/`where` 欄位 + `AddSearch(...)` 動態組 SQL 後塞入 `dsBPSNGrid.SelectCommand`
- 篩選條件:BPENO/BPNME/BPENM/BPIDNLIKE)、BPEDY_TYPE(在職/離職)、BPDPT_TYPE(部門/專案,`PublicVariable.InnerDepartment`)、BPSDY/BPEDY 區間、非管理者排除 `00001/00002/00003``!canSearch` 時只查自己。
- 另有「依 BPENO 跳到該員工所在頁」邏輯(用 `ROWID - 1` 反查)。
### 變更內容
1. `Web/App_Code/DAC/BpsnDAC.cs`:新增
- `SelectPage(int startRowIndex, int maximumRows, string BPENO, string BPNME, string BPENM, string BPIDN, string BPEDY_TYPE, string BPDPT_TYPE, string BPSDY1, string BPSDY2, string BPEDY1, string BPEDY2, bool canSearch, string userId)`
- `SelectCount(同上,去掉 startRowIndex/maximumRows)`
- `SelectBPENOIndex(string targetBPENO, 同 SelectCount 參數)`(保留自動跳頁)
2. `Web/forms/worker/fmBpsn.ascx``dsBPSNGrid` 由 SqlDataSource 改為 ObjectDataSource`TypeName="BpsnDAC"``SelectMethod="SelectPage"``SelectCountMethod="SelectCount"``EnablePaging="true"`)。
3. `Web/forms/worker/fmBpsn.ascx.cs``Search()` 改設 SelectParameters`dsBPSNGrid_Selected``ObjectDataSourceStatusEventArgs``OnInit` 移除 ConnectionString 設定;移除不再使用的 `select`/`from`/`where` 欄位。
### 驗證步驟
- `aspnet_compiler -v / -p "D:\VS.NET\Thinkyu\Web"`(或 VS 開站台)確認 App_Code 編譯無誤。
- 手動測試:各篩選條件、在職/離職、部門/專案、分頁、SelectedIndex、無資料 NODATA、由 RPIR 帶 BPENO 進入時自動跳頁。
- 核對 Grid 回傳欄位與舊 SQL 一致(RAPYN/RAPYNX/RABRH/RABRHX/RAJNO/RAJNOX/RACNO/RACNOX/RPCPY)。
## 效能比較(fmBPSN:舊 SqlDataSource vs 新 ObjectDataSource
### 方法
正式資料庫(192.168.1.50:23450)不可達,改用本機 SQL Server LocalDB 建立代表性 schema`BPSNView` + `RASN/BPAA/BCLS/BPJA/BPJB/RPIR/RPIB` 與相關索引)模擬。基準程式為 C# + `System.Data.SqlClient`,比較:
- **舊作法**SqlDataSource 動態 SQL 全量查詢(GridView 端分頁)。
- **新作法**ObjectDataSource `SelectPage``TOP 10`)+ `SelectCount``PageSize=10`)。
取 7 次平均,`SET STATISTICS IO` 統計 logical reads。此為合成環境、**無網路傳輸**,絕對值與正式環境不同,比例可作參考。
### 結果(Filter=全部)
| 指標 | N=20,000 舊 | N=20,000 新(首頁) | N=100,000 舊 | N=100,000 新(首頁) |
|---|---|---|---|---|
| 回傳/繫結列數 | 20,000 | 10 | 100,000 | 10 |
| DB 查詢時間 | 758.0 ms | 123.1 mscount 122.0 + page 1.1 | 4,289.6 ms | 715.3 mscount 714.0 + page 1.3 |
| logical reads | 81,662 | 81,863 | 608,191 | 608,443 |
| App 記憶體(DataTable | ~54.6 MB | ~0 | ~252 MB | ~0 |
- 首頁 `SelectPage` 極快(1.11.3 ms、216267 reads):可用 `BPENO` 索引提早結束。
- DB 成本幾乎全落在 `SelectCount`(與舊全量查詢相同 reads),因為 COUNT 仍需掃描同樣資料。
- 真正的效能來源是 **DB→App 的資料量由 N 列降為 10 列**,省下網路傳輸與 DataTable/GridView 繫結;網路越慢、欄位越多,實務改善越大。
- **深頁跳轉較差**`ROWID > @START` 且 START 很大時,無法提早結束,N=100,000 時 page 需 2,351 ms / 2,621,036 reads(約舊作法的 4.3 倍 reads)。此即 fmBPSN「依 BPENO 自動跳頁」可能踩到的情境。
### 結論
- 一般瀏覽(首頁、逐頁):大幅改善(列數 ~10,000×、記憶體趨近 0、DB 時間約 6×)。
- 深頁跳轉:DB reads 反而增加;後續可評估限制跳頁深度、或改用 keyset 分頁優化。
### 分頁 SQL 形式比較(N=100,000、PageSize=10、7 次平均)
| 形式 | page@0 ms | page@0 reads | page@deep ms | page@deep reads |
|---|---|---|---|---|
| OLD(全量) | 4,098.0 | 608,191 | 4,053.0 | 608,191 |
| `TOP`(現行 SelectPage | 7.4 | 273 | 2,166.3 | 2,621,045 |
| `BETWEEN @START+1 AND @START+@MAX`(兩層查詢) | 3.1 | 268 | 2,192.3 | 2,621,037 |
| `KEYSET`:先在窄集合算 ROWID 再 join 明細 | 3.4 | 300 | **48.0** | **6,549** |
- **`BETWEEN``TOP` 幾乎相同**:兩者都必須對「過濾後、已 join 的完整集合」計算 `ROW_NUMBER()`;當 offset 很大時仍要處理前面所有資料列,故深頁成本相同。`BETWEEN` 不會改善。
- **`KEYSET` 形式**:把 `ROW_NUMBER()` 只算在 `BPSNView`(篩選欄位全部屬於 BPSNView),外層再用 `ROWID BETWEEN` 取出該頁的 10 個 `BPENO`,之後才 join 明細表。深頁由 2,166 ms / 262 萬 reads 降為 **48 ms / 6,549 reads(約 45× 快、400× reads**
- **限制**`KEYSET` 假設各明細 join 為 1:1(特別是 `RASN` 的現職派遣),否則原本「以 join 後結果計數」的語意會不同(同一員工可能多列)。已於 1:1 合成資料驗證 `TOP``KEYSET` 取出的頁面完全相同(差異 0 筆);正式環境需先確認 `RASN` 現職是否唯一。
### 最終實作(已套用於 BpsnDAC)
- `SelectPage` 改為 KEYSET:先在 `BPSNView`(套用篩選)算 `ROW_NUMBER()` 取出該頁 `BPENO`,再 join 明細;`WHERE R.ROWID BETWEEN @STARTROWINDEX+1 AND @STARTROWINDEX+@MAXIMUMROWS`
- `SelectCount` 改為窄集合 `SELECT COUNT(*) FROM BPSNView A WHERE 1=1 {filter}`(與 KEYSET 分頁一致,且不需 join)。
- `SelectBPENOIndex` 同步改為窄集合。
| 指標(N=100,000、PageSize=10 | 舊 SqlDataSource | 新 KEYSET |
|---|---|---|
| SelectPage 首頁 | 4,098 ms / 608,191 reads(全量) | 3.4 ms / 300 reads |
| SelectPage 深頁 | 4,053 ms / 608,191 reads | 48 ms / 6,549 reads |
| SelectCount(新增) | — | 110 ms / 6,253 reads |
| 首頁總計(count + page | 4,098 ms / 608,191 reads | ~113 ms / ~6,553 reads |
| 回傳/繫結列數 | 100,000 | 10 |
| App 記憶體 | ~252 MB | ~0 |
改善:首頁總計約 **38× 快、93× 少 reads**;深頁約 **45×**。原本 count 需 608,176 reads,窄集合後降為 6,253 reads。
## 待辦清單(Todo
- [x] 建立分支 `feature/gridview-to-objectdatasource`
- [x] 撰寫本計畫文檔
- [x] fmBPSNBpsnDAC 新增 SelectPage / SelectCount / SelectBPENOIndex
- [x] fmBPSNfmBpsn.ascx 改 dsBPSNGrid 為 ObjectDataSource
- [x] fmBPSNfmBpsn.ascx.cs 調整 Search / Selected / OnInit
- [x] fmBPSN:編譯驗證(aspnet_compiler 通過,產出 App_Code.dll
- [ ] fmBPSN:手動功能驗證(各篩選、分頁、跳頁、NODATA)
- [x] fmBcus:新增 BcusDACSelectPage/SelectCount/SelectBCNUMIndex);dsBCUSGrid 改 ObjectDataSourceSearch/Selected/DataBound 調整;編譯通過
- [ ] 其餘 22 個 Grid 依樣板陸續轉換(逐檔 commit)
## 變更紀錄
| 日期 | 內容 |
|---|---|
| 2026-09-10 | 建立計畫文檔、盤點清單;開始 fmBPSN 驗證 |
| 2026-09-10 | fmBPSN 轉換完成:BpsnDAC 新增 SelectPage/SelectCount/SelectBPENOIndexfmBpsn.ascx 改 ObjectDataSourcefmBpsn.ascx.cs 調整 Search/Selected/OnInitaspnet_compiler 編譯通過 |
| 2026-09-10 | 修復 BpsnDAC.cs 亂碼註解(原檔為 Big5,編輯後毀損),自 git HEAD 還原中文註解,並將檔案統一改存為 UTF-8 with BOM;重新編譯通過 |
| 2026-09-10 | 以 LocalDB 合成資料(2 萬/10 萬筆)基準測試舊 SqlDataSource 與新 ObjectDataSource;結果:首頁列數 ~10,000×、記憶體趨近 0、DB 時間約 6×;深頁跳轉 reads 反而增加 |
| 2026-09-10 | 分頁 SQL 形式比較:`BETWEEN``TOP` 相同(無改善);改採 KEYSET(窄集合算 ROWID 再 join 明細)並將 SelectCount/SelectBPENOIndex 改為窄集合。深頁 2,166ms/262萬 reads → 48ms/6,549 readscount 714ms/608,176 reads → 110ms/6,253 readsaspnet_compiler 編譯通過 |
| 2026-09-10 | 轉換 fmBcusBCUS):新增 BcusDACdsBCUSGrid 改 ObjectDataSource;跳回選取列改用 SelectBCNUMIndexaspnet_compiler 編譯通過 |
| 2026-09-10 | 轉換 fmBpaaBPAA):BpaaDAC 新增 SelectPage/SelectCount/SelectBPAAIndexdsBPAAGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpab / fmBpabBig / fmBpabSmallBPAB):新增 BpabDACSelectPage/SelectCountmode 區分科目/大類/小類);三檔 dsBPABGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpjaBPJA):新增 BpjaDACSelectPage/SelectCount/SelectBPJAIndex);dsBPJAGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpjbBPJB):新增 BpjbDACSelectPage/SelectCount);dsBPJBGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBprjBPRJ):BprjDAC 新增 SelectPage/SelectCount/SelectBPRJIndex(含 LAST_YEAR 排序);dsBPRJGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBprmBPRM):BprmDAC 新增 SelectPage/SelectCountdsBPRMGrid 改 ObjectDataSourcedsBPRM_Selected 拆分為 grid/form 兩個事件;編譯通過 |
| 2026-09-10 | 轉換 fmRasnRASN3 個 Grid):RasnDAC 新增 SelectPage/SelectCount 及 SelectRAENO/SelectRABRH;三個 datasource 改 ObjectDataSourceSearch/Selected 調整;編譯通過 |
| 2026-09-10 | 轉換 fmRpfeRPFE):新增 RpfeDACSelectPage/SelectCount);dsRPFEGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmSignRPAB):RpabDAC 新增 SelectRPABdsRPAB2/dsRPAB 改 ObjectDataSourcedsRPAB2_Selecting 改 ODS 事件;編譯通過 |
| 2026-09-10 | 轉換 fmSalaryCalcSACD):新增 SacdDACSelectByProject);dsSACD 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmRparRPAR):RparDAC 新增 SelectPage/SelectCountdsRPARGrid 改 ObjectDataSourceSearch/Selected 調整;編譯通過 |
| 2026-09-10 | 轉換 fmRparWorkerRPAR/RPAB):RparDAC 新增 SelectWorkerPage/SelectWorkerCountRpabDAC 新增 SelectRPABByRPRENdsRPARGrid/dsRPAB 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmRsajRSAJ):RsajDAC 新增 SelectPage/SelectCountdsRSAJGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmSendSalaryStripSSMS):SsmsDAC 新增 SelectSalaryStrip/SelectSalaryStripSumdsSSMS 改 ObjectDataSource;移除 dsSSMSSumfooter 改用 SsmsDAC);編譯通過 |
| 2026-09-10 | fmRowkROWK)保留未轉換:其 Grid 綁定使用 WUserControlBase 的 Grid_View/GridView_DataSourceSqlDataSource)框架與 override Search,無法直接改用 ObjectDataSource,需另案重構 |
+110
View File
@@ -0,0 +1,110 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 客戶資料的資料處理類別
/// </summary>
[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;
}
/// <summary>
/// 客戶資料 Grid 分頁查詢
/// </summary>
[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);
}
/// <summary>
/// 客戶資料 Grid 查詢筆數
/// </summary>
[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));
}
/// <summary>
/// 取得指定客戶編號在查詢結果中的序號 (0 起算)
/// </summary>
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;
}
/// <summary>
/// 組出客戶資料 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
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 + "%"));
}
}
}
+95
View File
@@ -3,12 +3,15 @@ using System.Data;
using System.Configuration;
using System.Data.Common;
using System.Collections;
using System.ComponentModel;
using System.Text;
using Wellan.Common;
using Wellan.Data;
/// <summary>
/// 取得專案年度接單資料
/// </summary>
[DataObject(true)]
public class BpaaDAC : Wellan.Data.WDAC
{
public BpaaDAC()
@@ -325,4 +328,96 @@ public class BpaaDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("BPPNM", bppnm));
return WDAC.GetStringValue(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 年度接單 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPNM, string BPYER, string BPPYN, string BPPYM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM, BPYER, BPPYN, BPPYM);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPPNM, BPYER) AS ROWID
FROM BPAA 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);
}
/// <summary>
/// 年度接單 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string BPPNM, string BPYER, string BPPYN, string BPPYM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM, BPYER, BPPYN, BPPYM);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPAA WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 取得指定年度接單在查詢結果中的序號 (0 起算)
/// </summary>
public int SelectBPAAIndex(string targetBPPNM, string targetBPYER, string BPPNM, string BPYER, string BPPYN, string BPPYM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM, BPYER, BPPYN, BPPYM);
cmd.CommandText = String.Format(
@"SELECT ROWID - 1 FROM
(
SELECT BPPNM, BPYER, ROW_NUMBER() OVER (ORDER BY BPPNM, BPYER) AS ROWID
FROM BPAA WHERE 1=1 {0}
) AS TMP WHERE BPPNM = @TARGET_BPPNM AND BPYER = @TARGET_BPYER",
filter.ToString());
cmd.Parameters.Add(Query.NewParameter("TARGET_BPPNM", targetBPPNM));
cmd.Parameters.Add(Query.NewParameter("TARGET_BPYER", targetBPYER));
object o = Query.ExecuteScalar(cmd);
return (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1;
}
/// <summary>
/// 組出年度接單 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPNM, string BPYER, string BPPYN, string BPPYM)
{
if (!string.IsNullOrEmpty(BPPNM))
{
sb.Append(" AND BPPNM LIKE @BPPNM1 ");
cmd.Parameters.Add(Query.NewParameter("BPPNM1", BPPNM + "%"));
}
if (!string.IsNullOrEmpty(BPYER))
{
sb.Append(" AND BPYER LIKE @BPYER1 ");
cmd.Parameters.Add(Query.NewParameter("BPYER1", BPYER + "%"));
}
if (!string.IsNullOrEmpty(BPPYN))
{
sb.Append(" AND BPPYN LIKE @BPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYN1", BPPYN + "%"));
}
if (!string.IsNullOrEmpty(BPPYM))
{
sb.Append(" AND BPPYM LIKE @BPPYM1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYM1", BPPYM + "%"));
}
}
}
+103
View File
@@ -0,0 +1,103 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 年度科目設定的資料處理類別
/// </summary>
[DataObject(true)]
public class BpabDAC : Wellan.Data.WDAC
{
public BpabDAC()
{
}
public BpabDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public BpabDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 年度科目設定 Grid 分頁查詢
/// mode: BIG=大類, SMALL=小類, 其他=科目
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPYN, string mode)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, mode);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY {0}) AS ROWID
FROM BPAB WHERE 1=1 {1}
) AS TMP
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY ROWID",
OrderBy(mode), 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 BPPYN, string mode)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, mode);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPAB WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
private static string OrderBy(string mode)
{
if (mode == "BIG" || mode == "SMALL")
return "BPPYN, BPCLS, BPORD";
return "BPPYN, BPCLS";
}
/// <summary>
/// 組出年度科目設定 Grid 的查詢條件 (與舊 Search 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPYN, string mode)
{
if (!string.IsNullOrEmpty(BPPYN))
{
sb.Append(" AND BPPYN LIKE @BPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYN1", BPPYN + "%"));
}
switch (mode)
{
case "BIG":
sb.Append(" AND SUBSTRING(BPACC,3,4) = '0000' ");
break;
case "SMALL":
sb.Append(" AND SUBSTRING(BPACC,3,2) <> '00' AND SUBSTRING(BPACC,5,2) = '00' ");
break;
default:
sb.Append(" AND SUBSTRING(BPACC,3,2) <> '00' AND SUBSTRING(BPACC,5,2) <> '00' ");
break;
}
}
}
+106
View File
@@ -0,0 +1,106 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 年度職稱設定的資料處理類別
/// </summary>
[DataObject(true)]
public class BpjaDAC : Wellan.Data.WDAC
{
public BpjaDAC()
{
}
public BpjaDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public BpjaDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 年度職稱設定 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPPYN, BPJNO) AS ROWID
FROM BPJA 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);
}
/// <summary>
/// 年度職稱設定 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string BPPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPJA WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 取得指定職稱在查詢結果中的序號 (0 起算)
/// </summary>
public int SelectBPJAIndex(string targetBPPYN, string targetBPJNO, string BPPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN);
cmd.CommandText = String.Format(
@"SELECT ROWID - 1 FROM
(
SELECT BPPYN, BPJNO, ROW_NUMBER() OVER (ORDER BY BPPYN, BPJNO) AS ROWID
FROM BPJA WHERE 1=1 {0}
) AS TMP WHERE BPPYN = @TARGET_BPPYN AND BPJNO = @TARGET_BPJNO",
filter.ToString());
cmd.Parameters.Add(Query.NewParameter("TARGET_BPPYN", targetBPPYN));
cmd.Parameters.Add(Query.NewParameter("TARGET_BPJNO", targetBPJNO));
object o = Query.ExecuteScalar(cmd);
return (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1;
}
/// <summary>
/// 組出年度職稱設定 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPYN)
{
if (!string.IsNullOrEmpty(BPPYN))
{
sb.Append(" AND BPPYN LIKE @BPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYN1", BPPYN + "%"));
}
}
}
+87
View File
@@ -0,0 +1,87 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 職稱等級設定的資料處理類別
/// </summary>
[DataObject(true)]
public class BpjbDAC : Wellan.Data.WDAC
{
public BpjbDAC()
{
}
public BpjbDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public BpjbDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 職稱等級設定 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPYN, string BPJNO)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, BPJNO);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPPYN, BPJNO, BPCNO) AS ROWID
FROM BPJB 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);
}
/// <summary>
/// 職稱等級設定 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string BPPYN, string BPJNO)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, BPJNO);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPJB WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出職稱等級設定 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPYN, string BPJNO)
{
if (!string.IsNullOrEmpty(BPPYN))
{
sb.Append(" AND BPPYN LIKE @BPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYN1", BPPYN + "%"));
}
if (!string.IsNullOrEmpty(BPJNO))
{
sb.Append(" AND BPJNO LIKE @BPJNO1 ");
cmd.Parameters.Add(Query.NewParameter("BPJNO1", BPJNO + "%"));
}
}
}
+99
View File
@@ -5,12 +5,15 @@ using System.Configuration;
using System.Data.Common;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
using Wellan.Common;
/// <summary>
/// BprjDAC 的摘要描述
/// </summary>
[DataObject(true)]
public class BprjDAC : Wellan.Data.WDAC
{
public BprjDAC()
@@ -28,4 +31,100 @@ public class BprjDAC : Wellan.Data.WDAC
{
this._query = query;
}
private const string LastYearExpr =
"(SELECT TOP 1 BPYER FROM BPAA WHERE BPAA.BPPNM = BPRJ.BPPNM ORDER BY BPYER DESC)";
/// <summary>
/// 客戶專案 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPNUM, string BPPNM, string BPPME)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPNUM, BPPNM, BPPME);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT X.*, ROW_NUMBER() OVER (ORDER BY LAST_YEAR DESC, BPNUM, BPPNM) AS ROWID
FROM
(
SELECT *, {0} LAST_YEAR FROM BPRJ WHERE 1=1 {1}
) X
) AS TMP
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY ROWID",
LastYearExpr, 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 BPNUM, string BPPNM, string BPPME)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPNUM, BPPNM, BPPME);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPRJ WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 取得指定專案在查詢結果中的序號 (0 起算)
/// </summary>
public int SelectBPRJIndex(string targetBPNUM, string targetBPPNM, string BPNUM, string BPPNM, string BPPME)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPNUM, BPPNM, BPPME);
cmd.CommandText = String.Format(
@"SELECT ROWID - 1 FROM
(
SELECT X.BPNUM, X.BPPNM, ROW_NUMBER() OVER (ORDER BY X.LAST_YEAR DESC, X.BPNUM, X.BPPNM) AS ROWID
FROM
(
SELECT BPNUM, BPPNM, {0} LAST_YEAR FROM BPRJ WHERE 1=1 {1}
) X
) AS TMP WHERE BPNUM = @TARGET_BPNUM AND BPPNM = @TARGET_BPPNM",
LastYearExpr, filter.ToString());
cmd.Parameters.Add(Query.NewParameter("TARGET_BPNUM", targetBPNUM));
cmd.Parameters.Add(Query.NewParameter("TARGET_BPPNM", targetBPPNM));
object o = Query.ExecuteScalar(cmd);
return (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1;
}
/// <summary>
/// 組出客戶專案 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPNUM, string BPPNM, string BPPME)
{
if (!string.IsNullOrEmpty(BPNUM))
{
sb.Append(" AND BPNUM LIKE @BPNUM1 ");
cmd.Parameters.Add(Query.NewParameter("BPNUM1", BPNUM + "%"));
}
if (!string.IsNullOrEmpty(BPPNM))
{
sb.Append(" AND BPPNM LIKE @BPPNM1 ");
cmd.Parameters.Add(Query.NewParameter("BPPNM1", BPPNM + "%"));
}
if (!string.IsNullOrEmpty(BPPME))
{
sb.Append(" AND BPPME LIKE @BPPME1 ");
cmd.Parameters.Add(Query.NewParameter("BPPME1", "%" + BPPME + "%"));
}
}
}
+56
View File
@@ -8,11 +8,14 @@ using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Common;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
/// <summary>
/// 用來取得專案處理人員資料的類別
/// </summary>
[DataObject(true)]
public class BprmDAC : Wellan.Data.WDAC
{
public BprmDAC()
@@ -63,4 +66,57 @@ public class BprmDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN));
return Query.Select(cmd);
}
/// <summary>
/// 專案處理人員 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPNM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPENO) AS ROWID
FROM BPRM 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);
}
/// <summary>
/// 專案處理人員 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string BPPNM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPRM WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出專案處理人員 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPNM)
{
if (!string.IsNullOrEmpty(BPPNM))
{
sb.Append(" AND BPPNM LIKE @BPPNM1 ");
cmd.Parameters.Add(Query.NewParameter("BPPNM1", BPPNM + "%"));
}
}
}
+243 -15
View File
@@ -1,14 +1,16 @@
using System;
using System;
using System.Data;
using System.Data.Common;
using System.Configuration;
using System.Text;
using System.Collections.Generic;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 員工資料的資料處理類別
/// 員工資料的資料處理類別
/// </summary>
[DataObject(true)]
public class BpsnDAC : Wellan.Data.BPSN_DAC
{
private DbCommand cmdSelect;
@@ -115,7 +117,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員目前派駐專案
/// 取得人員目前派駐專案
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -125,7 +127,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員目前派駐專案
/// 取得人員目前派駐專案
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -154,7 +156,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員目前派駐地點
/// 取得人員目前派駐地點
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -164,7 +166,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員目前派駐地點
/// 取得人員目前派駐地點
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -182,7 +184,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員電子郵件
/// 取得人員電子郵件
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -197,7 +199,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員電子郵件2
/// 取得人員電子郵件2
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -212,10 +214,10 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得某日期人員所屬公司名稱
/// 取得某日期人員所屬公司名稱
/// </summary>
/// <param name="bpeno">員工編號</param>
/// <param name="date">日期</param>
/// <param name="bpeno">員工編號</param>
/// <param name="date">日期</param>
/// <returns></returns>
public List<string> GetCompanyByDate(string bpeno, DateTime date)
{
@@ -243,7 +245,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員到職日期
/// 取得人員到職日期
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -258,7 +260,7 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取得人員離職日期
/// 取得人員離職日期
/// </summary>
/// <param name="bpeno"></param>
/// <returns></returns>
@@ -287,12 +289,238 @@ public class BpsnDAC : Wellan.Data.BPSN_DAC
}
/// <summary>
/// 取出某日期在職的員工
/// 取出某日期在職的員工
/// </summary>
/// <param name="date">日期</param>
/// <param name="date">日期</param>
/// <returns></returns>
public DataTable GetOnBoardEmployee(DateTime date)
{
return Query.Select(Query.NewCommand("SELECT * FROM BPSNView WHERE dbo.EmployeeOnboard(BPENO, @DATE) = 1"));
}
private const string GridSelectColumns =
@" A2.*
, B.RAPYN, C.BPPYM RAPYNX, B.RABRH, D.BSSCR RABRHX, B.RAJNO, E.BPJME RAJNOX, B.RACNO
, F.BPCME RACNOX, ISNULL(H.RPCPY, G.RPCPY) AS RPCPY ";
// 只 join 該頁明細用 (明細主表為 A2)
private const string GridDetailJoins =
@" LEFT OUTER JOIN RASN B ON A2.BPENO=B.RANUM AND (B.RAEDT IS NULL OR (B.RASDT <= @TODAY AND B.RAEDT >= @TODAY))
LEFT OUTER JOIN BPAA C ON B.RAPYN=C.BPPYN
LEFT OUTER JOIN BCLS D ON D.BSCLS=B.RABRH AND D.BSPAR='BPSNBRH'
LEFT OUTER JOIN BPJA E ON E.BPPYN=B.RAPYN AND E.BPJNO=B.RAJNO
LEFT OUTER JOIN BPJB F ON F.BPPYN=B.RAPYN AND F.BPJNO=B.RAJNO AND F.BPCNO=B.RACNO
LEFT OUTER JOIN RPIR G ON A2.BPENO=G.RPENO AND G.RPREN=(SELECT MAX(RPREN) FROM RPIR WHERE RPENO=A2.BPENO)
LEFT OUTER JOIN RPIB H ON G.RPREN=H.RPREN AND H.RPITM=(SELECT MAX(RPITM) FROM RPIB WHERE RPREN=H.RPREN) ";
/// <summary>
/// 人員資料 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(
int startRowIndex,
int maximumRows,
string BPENO,
string BPNME,
string BPENM,
string BPIDN,
string BPEDY_TYPE,
string BPDPT_TYPE,
string BPSDY1,
string BPSDY2,
string BPEDY1,
string BPEDY2,
bool canSearch,
string userId)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildGridFilter(filter, cmd, BPENO, BPNME, BPENM, BPIDN, BPEDY_TYPE, BPDPT_TYPE, BPSDY1, BPSDY2, BPEDY1, BPEDY2, canSearch, userId);
// 先在窄集合 (BPSNView) 依 BPENO 排序計算 ROWID,取出該頁的 BPENO 後,
// 才 join 明細表,避免深頁時對整個 join 結果計算 ROW_NUMBER()。
cmd.CommandText = String.Format(
@"SELECT {0}
FROM
(
SELECT A.BPENO, ROW_NUMBER() OVER (ORDER BY A.BPENO) AS ROWID
FROM BPSNView A WHERE 1=1 {1}
) R
JOIN BPSNView A2 ON A2.BPENO = R.BPENO
{2}
WHERE R.ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY R.ROWID",
GridSelectColumns, filter.ToString(), GridDetailJoins);
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 BPENO,
string BPNME,
string BPENM,
string BPIDN,
string BPEDY_TYPE,
string BPDPT_TYPE,
string BPSDY1,
string BPSDY2,
string BPEDY1,
string BPEDY2,
bool canSearch,
string userId)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildGridFilter(filter, cmd, BPENO, BPNME, BPENM, BPIDN, BPEDY_TYPE, BPDPT_TYPE, BPSDY1, BPSDY2, BPEDY1, BPEDY2, canSearch, userId);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPSNView A WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 取得指定人員編號在查詢結果中的序號 (0 起算)
/// </summary>
public int SelectBPENOIndex(
string targetBPENO,
string BPENO,
string BPNME,
string BPENM,
string BPIDN,
string BPEDY_TYPE,
string BPDPT_TYPE,
string BPSDY1,
string BPSDY2,
string BPEDY1,
string BPEDY2,
bool canSearch,
string userId)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildGridFilter(filter, cmd, BPENO, BPNME, BPENM, BPIDN, BPEDY_TYPE, BPDPT_TYPE, BPSDY1, BPSDY2, BPEDY1, BPEDY2, canSearch, userId);
cmd.CommandText = String.Format(
@"SELECT ROWID - 1 FROM
(
SELECT A.BPENO, ROW_NUMBER() OVER (ORDER BY A.BPENO) AS ROWID
FROM BPSNView A WHERE 1=1 {0}
) AS TMP WHERE BPENO = @TARGET",
filter.ToString());
cmd.Parameters.Add(Query.NewParameter("TARGET", targetBPENO));
object o = Query.ExecuteScalar(cmd);
return (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1;
}
/// <summary>
/// 組出人員資料 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildGridFilter(
StringBuilder sb,
DbCommand cmd,
string BPENO,
string BPNME,
string BPENM,
string BPIDN,
string BPEDY_TYPE,
string BPDPT_TYPE,
string BPSDY1,
string BPSDY2,
string BPEDY1,
string BPEDY2,
bool canSearch,
string userId)
{
cmd.Parameters.Add(Query.NewParameter("TODAY", DateTime.UtcNow.AddHours(8).Date));
if (!canSearch)
{
if (!string.IsNullOrEmpty(userId))
{
sb.Append(" AND BPENO LIKE @BPENO1 ");
cmd.Parameters.Add(Query.NewParameter("BPENO1", userId + "%"));
}
return;
}
if (!string.IsNullOrEmpty(BPENO))
{
sb.Append(" AND BPENO LIKE @BPENO1 ");
cmd.Parameters.Add(Query.NewParameter("BPENO1", BPENO + "%"));
}
if (!string.IsNullOrEmpty(BPNME))
{
sb.Append(" AND BPNME LIKE @BPNME1 ");
cmd.Parameters.Add(Query.NewParameter("BPNME1", BPNME + "%"));
}
if (!string.IsNullOrEmpty(BPENM))
{
sb.Append(" AND BPENM LIKE @BPENM1 ");
cmd.Parameters.Add(Query.NewParameter("BPENM1", BPENM + "%"));
}
if (!string.IsNullOrEmpty(BPIDN))
{
sb.Append(" AND BPIDN LIKE @BPIDN1 ");
cmd.Parameters.Add(Query.NewParameter("BPIDN1", BPIDN + "%"));
}
switch (BPEDY_TYPE)
{
case "1":
sb.Append(" AND (BPEDY IS NULL OR BPEDY >= @TODAY) ");
break;
case "2":
sb.Append(" AND (BPEDY < @TODAY) ");
break;
}
switch (BPDPT_TYPE)
{
case "1":
sb.AppendFormat(" AND BPDPT IN {0} ", PublicVariable.InnerDepartment);
break;
case "2":
sb.AppendFormat(" AND BPDPT NOT IN {0} ", PublicVariable.InnerDepartment);
break;
}
AppendRange(sb, cmd, "BPSDY", BPSDY1, BPSDY2);
AppendRange(sb, cmd, "BPEDY", BPEDY1, BPEDY2);
if (!IsManager(userId))
{
sb.Append(" AND BPENO NOT IN ('00001','00002','00003') ");
}
}
private void AppendRange(StringBuilder sb, DbCommand cmd, string field, string value1, string value2)
{
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)
{
sb.AppendFormat(" AND {0} LIKE @{0}1 ", field);
cmd.Parameters.Add(Query.NewParameter(field + "1", value1 + "%"));
}
else if (has2)
{
sb.AppendFormat(" AND {0} LIKE @{0}2 ", field);
cmd.Parameters.Add(Query.NewParameter(field + "2", value2 + "%"));
}
}
}
+119
View File
@@ -12,6 +12,7 @@ using Wellan.Data;
/// <summary>
/// 人員派遣資料的資料處理類別
/// </summary>
[DataObject(true)]
public class RasnDAC : Wellan.Data.WDAC
{
private DbCommand cmdSelectRasnRapyn = null;
@@ -582,6 +583,124 @@ public class RasnDAC : Wellan.Data.WDAC
}
*/
/// <summary>
/// 派遣人員清單 (未結束,供挑選人員用)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRAENO(string RAPYN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT A.RANUM, B.BPNME
FROM RASN AS A
INNER JOIN BPSNView AS B ON A.RANUM = B.BPENO
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL");
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
return Query.Select(cmd);
}
/// <summary>
/// 站別統計 (未結束,供挑選站別用)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRABRH(string RAPYN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT A.RABRH, B.BSSCR, COUNT(1) AS RABRH_COUNT
FROM RASN AS A
INNER JOIN BCLS AS B ON A.RABRH = B.BSCLS AND B.BSPAR = 'BPSNBRH'
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL
GROUP BY A.RABRH, B.BSSCR");
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
return Query.Select(cmd);
}
private static readonly List<string> HQ_RAPYNS = new List<string>() { "103TYB00001", "103JYB00001" };
private string BuildRasnGridSql(string RAPYN, string BPENO, string BPNME, int year, StringBuilder filter, DbCommand cmd)
{
string order1, order2;
if (HQ_RAPYNS.IndexOf(RAPYN) < 0)
{
order1 = "RANUM";
order2 = "RAEDT, RANUM";
}
else
{
order1 = "RAEDT, RANUM";
order2 = "RAEDT, RANUM";
}
if (year > 0 && HQ_RAPYNS.IndexOf(RAPYN) < 0)
{
filter.AppendFormat(
" AND ((RASDT >= '{0}/01/01' AND RASDT <= '{0}/12/31') OR (RAEDT >= '{0}/01/01' AND RAEDT <= '{0}/12/31') OR (RASDT <= '{0}/01/01' AND RAEDT >= '{0}/12/31') ) ",
year);
}
if (!string.IsNullOrEmpty(BPENO))
{
filter.Append(" AND C.BPENO LIKE @BPENO1 ");
cmd.Parameters.Add(Query.NewParameter("BPENO1", BPENO + "%"));
}
if (!string.IsNullOrEmpty(BPNME))
{
filter.Append(" AND C.BPNME LIKE @BPNME1 ");
cmd.Parameters.Add(Query.NewParameter("BPNME1", BPNME + "%"));
}
return String.Format(@"
SELECT A.*, B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05
FROM
(
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {0}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NULL) T1
UNION ALL
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {1}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NOT NULL) T2
) A
LEFT OUTER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO
LEFT OUTER JOIN BPSNView C ON A.RANUM=C.BPENO
WHERE 1=1 {2}", order1, order2, filter.ToString());
}
/// <summary>
/// 派遣紀錄 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string RAPYN, string BPENO, string BPNME, int year)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
string inner = BuildRasnGridSql(RAPYN, BPENO, BPNME, year, filter, cmd);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT Q.*, ROW_NUMBER() OVER (ORDER BY CASE WHEN Q.RAEDT IS NULL THEN 0 ELSE 1 END, Q.ROWNUM) AS ROWID
FROM ( {0} ) Q
) AS TMP
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY ROWID", inner);
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
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 RAPYN, string BPENO, string BPNME, int year)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
string inner = BuildRasnGridSql(RAPYN, BPENO, BPNME, year, filter, cmd);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM ( {0} ) Q", inner);
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
}
+29
View File
@@ -12,6 +12,7 @@ using System.ComponentModel;
/// <summary>
/// 人員差勤簽核檔
/// </summary>
[DataObject(true)]
public class RpabDAC : Wellan.Data.WDAC
{
private string _select =
@@ -289,4 +290,32 @@ public class RpabDAC : Wellan.Data.WDAC
AddParam(cmd, "OLD_RPREN", RPREN);
Query.ExecuteNonQuery(tran.Connection, tran, cmd);
}
/// <summary>
/// 取得簽核關卡明細 (已簽核)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPAB(string RPREN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT RPANO, RPAPN, RPENO, RPDAT, RPAPP, RPDOC
FROM RPAB
WHERE RPREN = @RPREN AND RPDAT IS NOT NULL");
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);
}
}
+181
View File
@@ -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,186 @@ 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));
}
}
}
/// <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);
}
}
+82
View File
@@ -0,0 +1,82 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 專案憑證的資料處理類別
/// </summary>
[DataObject(true)]
public class RpfeDAC : Wellan.Data.WDAC
{
public RpfeDAC()
{
}
public RpfeDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public RpfeDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 專案憑證 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string RPPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RPPYN);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY RPPYN, RPREN) AS ROWID
FROM RPFE 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);
}
/// <summary>
/// 專案憑證 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string RPPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RPPYN);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RPFE WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出專案憑證 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string RPPYN)
{
if (!string.IsNullOrEmpty(RPPYN))
{
sb.Append(" AND RPPYN LIKE @RPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("RPPYN1", RPPYN + "%"));
}
}
}
+61
View File
@@ -1,12 +1,15 @@
using System;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
using Wellan.Common;
/// <summary>
/// 薪資加減項資料處理類別
/// </summary>
[DataObject(true)]
public class RsajDAC : Wellan.Data.WDAC
{
public RsajDAC()
@@ -127,4 +130,62 @@ public class RsajDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("RSYMM", yymm));
return GetStringValue(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 薪資加減項 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string RSENO, string RSPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RSENO, RSPYN);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY RSYMM DESC, RSREN DESC) AS ROWID
FROM RSAJ 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);
}
/// <summary>
/// 薪資加減項 Grid 查詢筆數
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string RSENO, string RSPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RSENO, RSPYN);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RSAJ WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出薪資加減項 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string RSENO, string RSPYN)
{
if (!string.IsNullOrEmpty(RSENO))
{
sb.Append(" AND RSENO LIKE @RSENO1 ");
cmd.Parameters.Add(Query.NewParameter("RSENO1", RSENO + "%"));
}
if (!string.IsNullOrEmpty(RSPYN))
{
sb.Append(" AND RSPYN LIKE @RSPYN1 ");
cmd.Parameters.Add(Query.NewParameter("RSPYN1", RSPYN + "%"));
}
}
}
+45
View File
@@ -0,0 +1,45 @@
using System;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 薪資科目匯總的資料處理類別
/// </summary>
[DataObject(true)]
public class SacdDAC : Wellan.Data.WDAC
{
public SacdDAC()
{
}
public SacdDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public SacdDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 取得某專案年月的科目預算與本月金額
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectByProject(string BPPYN, DateTime SAYMM)
{
DbCommand cmd = Query.NewCommand(
@"SELECT BPAB.BPPYN, BPAB.BPACC, ISNULL(BPAB.BPBGT, 0) AS BPBGT, BPAB.BPCLS, BPAB.BPAME, ISNULL(SACD.SAAMT, 0) AS SAAMT, SACD.SADOC
FROM BPAB
LEFT OUTER JOIN SACD ON BPAB.BPPYN = SACD.SAPYN AND BPAB.BPACC = SACD.SAACC AND SACD.SAYMM = @SAYMM
WHERE (BPAB.BPPYN = @BPPYN) AND (SUBSTRING(BPAB.BPACC, 5, 2) <> '00')
ORDER BY BPAB.BPCLS");
cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN));
cmd.Parameters.Add(Query.NewParameter("SAYMM", SAYMM));
return Query.Select(cmd);
}
}
+92
View File
@@ -1,10 +1,13 @@
using System;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
using Wellan.Common;
using System.Data.SqlClient;
[DataObject(true)]
public class SsmsDAC : Wellan.Data.WDAC
{
private DbCommand cmdSelectSSMS;
@@ -629,6 +632,95 @@ public class SsmsDAC : Wellan.Data.WDAC
return result;
}
private const string SelectSalaryStripSql =
@"SELECT A.*,
SSP06 + SSP07 + SSP08 + SSP13 + SSP14 OVERWORK,
SSP09 + SSP10 + SSP12 OUTGOING,
SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99 SSPLUS,
SSS01 + SSS02 + SSS09 LEAVING,
SST01 + SST02 + SST03 + SST21 + SST22 OVERWORKTIME,
(SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99)
- (SSS01 + SSS02 + SSS03 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 + SSS15 + SSS99) SSTOTAL,
SSS01 + SSS02 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 + SSS15 + SSS99 SSMINUS,
SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99 TOTALPLUS,
SSH01 + SSH02 + SSH03 EMPLOYER,
ISNULL(B.BPNME, '') BPNME,
ISNULL(C.BPPYM, '') BPPYM,
ISNULL(B.BPSWY, '') BPSWY,
ISNULL(D.BCNAM, '') BCNAM,
ISNULL(B.BPACC, '') BPACC,
ISNULL(B.BPEML, '') BPEML,
ISNULL(B.BPEM2, '') BPEM2,
(SELECT SUM(SSS06) FROM {0} E WHERE A.SSENO=E.SSENO AND E.SSYMM <= @SSYMM) SSS06SUM,
(SELECT SUM(SSH06) FROM {0} F WHERE A.SSENO=F.SSENO AND F.SSYMM <= @SSYMM) SSH06SUM,
SSC01, SSC03, SSC03, SSC04, SSC05, SSC06, SSC07, SSC08, SSC09, SSC10
FROM {0} A
LEFT OUTER JOIN BPSNView B ON A.SSENO=B.BPENO
LEFT OUTER JOIN BPAA C ON A.SSPYN=C.BPPYN
LEFT OUTER JOIN BRML D ON B.BPBNK=D.BCNUM";
private const string SelectSalaryStripSumSql =
@"SELECT ISNULL(SUM(SSD01), 0) SSD01, ISNULL(SUM(SSD02), 0) SSD02, ISNULL(SUM(SSSRD), 0) SSSRD, ISNULL(SUM(SSP00), 0) SSP00,
ISNULL(SUM(SSP01), 0) SSP01, ISNULL(SUM(SSP02), 0) SSP02, ISNULL(SUM(SSP03), 0) SSP03, ISNULL(SUM(SSP04), 0) SSP04,
ISNULL(SUM(SSP05), 0) SSP05, ISNULL(SUM(SSP06), 0) SSP06, ISNULL(SUM(SSP07), 0) SSP07, ISNULL(SUM(SSP08), 0) SSP08,
ISNULL(SUM(SSP09), 0) SSP09, ISNULL(SUM(SSP10), 0) SSP10, ISNULL(SUM(SSP11), 0) SSP11, ISNULL(SUM(SSP12), 0) SSP12,
ISNULL(SUM(SSP13), 0) SSP13, ISNULL(SUM(SSP14), 0) SSP14, ISNULL(SUM(SSP15), 0) SSP15, ISNULL(SUM(SSP99), 0) SSP99,
ISNULL(SUM(SSS01), 0) SSS01, ISNULL(SUM(SSS02), 0) SSS02, ISNULL(SUM(SSS03), 0) SSS03, ISNULL(SUM(SSS04), 0) SSS04,
ISNULL(SUM(SSS05), 0) SSS05, ISNULL(SUM(SSS06), 0) SSS06, ISNULL(SUM(SSS07), 0) SSS07, ISNULL(SUM(SSS08), 0) SSS08,
ISNULL(SUM(SSS09), 0) SSS09, ISNULL(SUM(SSS10), 0) SSS10, ISNULL(SUM(SSS11), 0) SSS11, ISNULL(SUM(SSS12), 0) SSS12,
ISNULL(SUM(SSS13), 0) SSS13, ISNULL(SUM(SSS14), 0) SSS14, ISNULL(SUM(SSS15), 0) SSS15, ISNULL(SUM(SSS99), 0) SSS99,
ISNULL(SUM(SSH01), 0) SSH01, ISNULL(SUM(SSH02), 0) SSH02, ISNULL(SUM(SSH03), 0) SSH03, ISNULL(SUM(SSH04), 0) SSH04,
ISNULL(SUM(SSH05), 0) SSH05, ISNULL(SUM(SSH06), 0) SSH06, ISNULL(SUM(SSH07), 0) SSH07, ISNULL(SUM(SSH08), 0) SSH08,
ISNULL(SUM(SSH09), 0) SSH09, ISNULL(SUM(SSH10), 0) SSH10, ISNULL(SUM(SST01), 0) SST01, ISNULL(SUM(SST02), 0) SST02,
ISNULL(SUM(SST03), 0) SST03, ISNULL(SUM(SST04), 0) SST04, ISNULL(SUM(SST05), 0) SST05, ISNULL(SUM(SST06), 0) SST06,
ISNULL(SUM(SST07), 0) SST07, ISNULL(SUM(SST08), 0) SST08, ISNULL(SUM(SST09), 0) SST09, ISNULL(SUM(SST10), 0) SST10,
ISNULL(SUM(SST11), 0) SST11, ISNULL(SUM(SST12), 0) SST12, ISNULL(SUM(SST13), 0) SST13, ISNULL(SUM(SST14), 0) SST14,
ISNULL(SUM(SST15), 0) SST15, ISNULL(SUM(SST16), 0) SST16, ISNULL(SUM(SST17), 0) SST17, ISNULL(SUM(SST18), 0) SST18,
ISNULL(SUM(SST19), 0) SST19, ISNULL(SUM(SST20), 0) SST20, ISNULL(SUM(SST21), 0) SST21, ISNULL(SUM(SST22), 0) SST22,
ISNULL(SUM(SST23), 0) SST23, ISNULL(SUM(SST24), 0) SST24, ISNULL(SUM(SST25), 0) SST25, ISNULL(SUM(SSL01), 0) SSL01,
ISNULL(SUM(SSL02), 0) SSL02, ISNULL(SUM(SSL03), 0) SSL03, ISNULL(SUM(SSL04), 0) SSL04, ISNULL(SUM(SSL05), 0) SSL05,
ISNULL(SUM(SSP06 + SSP07 + SSP08 + SSP13 + SSP14), 0) OVERWORK,
ISNULL(SUM(SSP09 + SSP10 + SSP12), 0) OUTGOING,
ISNULL(SUM(SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 +
SSP13 + SSP14 + SSP15 + SSP99), 0) SSPLUS,
ISNULL(SUM(SSS01 + SSS02 + SSS09), 0) LEAVING,
ISNULL(SUM(SST01 + SST02 + SST03 + SST21 + SST22), 0) OVERWORKTIME,
ISNULL(SUM((SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 +
SSP13 + SSP14 + SSP15 + SSP99)
- (SSS01 + SSS02 + SSS03 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 +
SSS14 + SSS15 + SSS99)), 0) SSTOTAL,
ISNULL(SUM(SSS01 + SSS02 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 +
SSS15 + SSS99), 0) SSMINUS,
ISNULL(SUM(SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 +
SSP14 + SSP15 + SSP99), 0) TOTALPLUS,
ISNULL(SUM(SSH01 + SSH02 + SSH03), 0) EMPLOYER
FROM {0} A WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN";
/// <summary>
/// 薪資條發放 Grid 查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectSalaryStrip(string tableName, DateTime SSYMM, string SSPYN)
{
DbCommand cmd = Query.NewCommand(
String.Format(SelectSalaryStripSql, tableName) + " WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN ORDER BY SSENO ");
cmd.Parameters.Add(Query.NewParameter("SSYMM", SSYMM));
cmd.Parameters.Add(Query.NewParameter("SSPYN", SSPYN));
return Query.Select(cmd);
}
/// <summary>
/// 薪資條發放 Grid 合計查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectSalaryStripSum(string tableName, DateTime SSYMM, string SSPYN)
{
DbCommand cmd = Query.NewCommand(String.Format(SelectSalaryStripSumSql, tableName));
cmd.Parameters.Add(Query.NewParameter("SSYMM", SSYMM));
cmd.Parameters.Add(Query.NewParameter("SSPYN", SSPYN));
return Query.Select(cmd);
}
}
public class SsmsRecord
+8 -5
View File
@@ -43,11 +43,14 @@
</table>
</asp:View>
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBCUSGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM BCUS WHERE 1=0"
ConnectionString="Data Source=SRYANG-2K3;Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsBCUSGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBCUSGrid" runat="server"
TypeName="BcusDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBCUSGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BCNUM" Type="String" />
<asp:Parameter Name="BCNAM" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBCUSForm" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM BCUS WHERE BCNUM=@BCNUM"
DeleteCommand="DELETE BCUS&#13;&#10; WHERE BCNUM = @OLD_BCNUM&#13;&#10; AND APPNO = @OLD_APPNO"
+19 -33
View File
@@ -20,10 +20,6 @@ public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
private string _BCNUM = "";
private string _BCNAM = "";
private string _OLD_BCNUM = "";
private string select = "SELECT * ";
private string from = " FROM BCUS ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BCNUM";
private string _bcusCls = "";
private string _bcusZon = "";
@@ -40,7 +36,6 @@ public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBCUSForm.ConnectionString = ConnectionString;
dsBCUSGrid.ConnectionString = ConnectionString;
GetGridViewRowColor(gvBCUS);
@@ -95,15 +90,23 @@ public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBCUSGrid.SelectParameters.Clear();
AddSearch(sql, dsBCUSGrid, "BCNUM", _BCNUM, "", true);
AddSearch(sql, dsBCUSGrid, "BCNAM", _BCNAM, "", true);
sql.Append(order);
dsBCUSGrid.SelectCommand = sql.ToString();
dsBCUSGrid.SelectParameters["BCNUM"].DefaultValue = _BCNUM;
dsBCUSGrid.SelectParameters["BCNAM"].DefaultValue = _BCNAM;
// 返回時,回到之前選擇的那一筆
if (ParamList != null && ParamList.ContainsKey("BCNUM"))
{
string bcnum = WDAC.GetStringValue(ParamList["BCNUM"]);
int rowIndex = new BcusDAC(Query).SelectBCNUMIndex(bcnum, _BCNUM, _BCNAM);
if (rowIndex >= 0)
{
gvBCUS.PageIndex = rowIndex / gvBCUS.PageSize;
gvBCUS.SelectedIndex = rowIndex - gvBCUS.PageIndex * gvBCUS.PageSize;
}
ParamList.Remove("BCNUM");
}
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -130,23 +133,6 @@ public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
if (gvBCUS.SelectedIndex == -1)
gvBCUS.SelectedIndex = 0;
// 返回時,回到之前選擇的那一筆
if (ParamList.ContainsKey("BCNUM"))
{
string bcnum = WDAC.GetStringValue(ParamList["BCNUM"]);
DataView dv = dsBCUSGrid.Select(new DataSourceSelectArguments()) as DataView;
dv.RowFilter = String.Format("BCNUM='{0}'", bcnum);
if (dv.Count > 0)
{
int rowIndex = dv.Table.Rows.IndexOf(dv[0].Row);
gvBCUS.PageIndex = (rowIndex / gvBCUS.PageSize);
gvBCUS.SelectedIndex = rowIndex - gvBCUS.PageIndex * gvBCUS.PageSize;
}
ParamList.Remove("BCNUM");
}
fvBCUS.DataBind();
}
@@ -157,9 +143,9 @@ public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
gvBCUS.DataBind();
}
protected void dsBCUSGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBCUSGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
if (MultiView1.ActiveViewIndex == 0)
{
+10 -4
View File
@@ -66,10 +66,16 @@
TextMessageId="" Visible="False"></cc1:WLabel>
</asp:View>
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPAAGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM BPAA WHERE 1=0"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsBPAAGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPAAGrid" runat="server"
TypeName="BpaaDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPAAGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPNM" Type="String" />
<asp:Parameter Name="BPYER" Type="String" />
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="BPPYM" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPAAForm" runat="server"
InsertCommand="INSERT INTO BPAA
(BPPNM, BPYER, BPPYN, BPPYM, BPBGT, BPFED, BPSAL, BPOTT, BPOTD, BPALT, APPNO, TRDAT, TRMOD,
+23 -34
View File
@@ -27,10 +27,6 @@ public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase
private string _BPPYM = "";
//private int _OLD_BPYER = 0;
//private string _OLD_BPPYN = "";
private string select = "SELECT * ";
private string from = " FROM BPAA ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPNM, BPYER";
protected void Page_Load(object sender, EventArgs e)
{
@@ -42,7 +38,6 @@ public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPAAForm.ConnectionString = ConnectionString;
dsBPAAGrid.ConnectionString = ConnectionString;
//_BPPNM = ViewState["BPPNM"] != null ? ViewState["BPPNM"].ToString() : "";
//_BPYER = ViewState["BPYER"] != null ? ViewState["BPYER"].ToString() : "";
@@ -113,17 +108,27 @@ public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPAAGrid.SelectParameters.Clear();
AddSearch(sql, dsBPAAGrid, "BPPNM", _BPPNM, "", true);
AddSearch(sql, dsBPAAGrid, "BPYER", _BPYER, "", true);
AddSearch(sql, dsBPAAGrid, "BPPYN", _BPPYN, "", true);
AddSearch(sql, dsBPAAGrid, "BPPYM", _BPPYM, "", true);
sql.Append(order);
dsBPAAGrid.SelectCommand = sql.ToString();
dsBPAAGrid.SelectParameters["BPPNM"].DefaultValue = _BPPNM;
dsBPAAGrid.SelectParameters["BPYER"].DefaultValue = _BPYER;
dsBPAAGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
dsBPAAGrid.SelectParameters["BPPYM"].DefaultValue = _BPPYM;
// 返回時,回到之前選擇的那一筆
if (ParamList != null && ParamList.ContainsKey("BPPNM") && ParamList.ContainsKey("BPYER"))
{
int rowIndex = new BpaaDAC(Query).SelectBPAAIndex(
WDAC.GetStringValue(ParamList["BPPNM"]),
WDAC.GetStringValue(ParamList["BPYER"]),
_BPPNM, _BPYER, _BPPYN, _BPPYM);
if (rowIndex >= 0)
{
gvBPAA.PageIndex = rowIndex / gvBPAA.PageSize;
gvBPAA.SelectedIndex = rowIndex - gvBPAA.PageIndex * gvBPAA.PageSize;
}
ParamList.Remove("BPYER");
}
}
private void CalcFields(System.Collections.Specialized.IOrderedDictionary values)
@@ -155,22 +160,6 @@ public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase
if (gvBPAA.SelectedIndex == -1)
gvBPAA.SelectedIndex = 0;
// 返回時,回到之前選擇的那一筆
if (ParamList.ContainsKey("BPPNM") && ParamList.ContainsKey("BPYER"))
{
DataView dv = dsBPAAGrid.Select(new DataSourceSelectArguments()) as DataView;
dv.RowFilter = String.Format("BPPNM='{0}' and BPYER={1}", ParamList["BPPNM"], ParamList["BPYER"]);
if (dv.Count > 0)
{
int rowIndex = dv.Table.Rows.IndexOf(dv[0].Row);
gvBPAA.PageIndex = (rowIndex / gvBPAA.PageSize);
gvBPAA.SelectedIndex = rowIndex - gvBPAA.PageIndex * gvBPAA.PageSize;
}
// ParamList.Remove("BPPNM");
ParamList.Remove("BPYER");
}
fvBPAA.DataBind();
}
}
@@ -182,9 +171,9 @@ public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase
gvBPAA.DataBind();
}
protected void dsBPAAGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPAAGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
fvBPAA.ChangeMode(FormViewMode.Insert);
fvBPAA_ModeChanged(sender, e);
+8 -4
View File
@@ -72,10 +72,14 @@
</table>
</asp:View>
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPABGrid" runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM BPAB WHERE 1=0" ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsBPABGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPABGrid" runat="server"
TypeName="BpabDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPABGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="mode" Type="String" DefaultValue="ALL" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPABForm" runat="server" InsertCommand="INSERT INTO BPAB
(BPPYN, BPACC, BPAME, BPBGT, BPCLS, BPORD,
APPNO, TRDAT, TRMOD, TRUSR)
+3 -17
View File
@@ -23,10 +23,6 @@ public partial class forms_customer_fmBpab : Wellan.Web.UI.WUserControlBase
protected string _BPNUM = "";
protected string _BPPYN = "";
private string _OLD_BPACC = "";
private string select = "SELECT * ";
private string from = " FROM BPAB ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPCLS";
private DbCommand cmdTree;
protected void Page_Load(object sender, EventArgs e)
@@ -42,7 +38,6 @@ public partial class forms_customer_fmBpab : Wellan.Web.UI.WUserControlBase
Page.ClientScript.RegisterStartupScript(Page.GetType(), "RestoreDivPosition", "RestoreDivPosition();", true);
dsBPABForm.ConnectionString = ConnectionString;
dsBPABGrid.ConnectionString = ConnectionString;
dsBPABBig.ConnectionString = ConnectionString;
dsBPABSmall.ConnectionString = ConnectionString;
@@ -60,16 +55,7 @@ public partial class forms_customer_fmBpab : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPABGrid.SelectParameters.Clear();
AddSearch(sql, dsBPABGrid, "BPPYN", _BPPYN, "", true);
sql.Append(" AND SUBSTRING(BPACC,3,2) <> '00' AND SUBSTRING(BPACC,5,2) <> '00' ");
sql.Append(order);
dsBPABGrid.SelectCommand = sql.ToString();
dsBPABGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -129,9 +115,9 @@ public partial class forms_customer_fmBpab : Wellan.Web.UI.WUserControlBase
gv.DataBind();
}
protected void dsBPABGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPABGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
gvBPAB.Visible = false;
fvBPAB.ChangeMode(FormViewMode.Insert);
+8 -7
View File
@@ -10,13 +10,14 @@
<asp:MultiView ID="MultiView1"
runat="server" ActiveViewIndex="0">
<asp:View ID="BigClassView" runat="server">
<asp:SqlDataSource ID="dsBPABGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT TRDAT, TRMOD, TRUSR, BPPYN, BPACC, BPAME, BPBGT, BPCLS, BPORD, APPNO FROM BPAB WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsBPABGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPABGrid" runat="server"
TypeName="BpabDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPABGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="mode" Type="String" DefaultValue="BIG" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPABForm"
runat="server" InsertCommand="INSERT INTO BPAB&#13;&#10; (BPPYN, BPACC, BPAME, BPBGT, BPCLS, BPORD, &#13;&#10; APPNO, TRDAT, TRMOD, TRUSR) &#13;&#10; VALUES &#13;&#10; (@BPPYN, @BPACC, @BPAME, @BPBGT, @BPCLS, @BPORD, &#13;&#10; 1, GETDATE(), 'INSERT', @TRUSR)"
UpdateCommand="UPDATE BPAB SET &#13;&#10; BPACC = @BPACC, &#13;&#10; BPAME = @BPAME, &#13;&#10; BPBGT = @BPBGT, &#13;&#10; BPCLS = @BPCLS, &#13;&#10; BPORD = @BPORD, &#13;&#10; APPNO = APPNO + 1, &#13;&#10; TRDAT = GETDATE(), &#13;&#10; TRMOD = 'UPDATE', &#13;&#10; TRUSR = @TRUSR&#13;&#10; WHERE BPPYN = @OLD_BPPYN&#13;&#10; AND BPACC = @OLD_BPACC&#13;&#10; AND APPNO = @OLD_APPNO"
+3 -17
View File
@@ -22,10 +22,6 @@ public partial class forms_customer_fmBpabBig : Wellan.Web.UI.WUserControlBase
{
protected string _BPNUM = "";
protected string _BPPYN = "";
private string select = "SELECT * ";
private string from = " FROM BPAB ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPCLS, BPORD";
protected void Page_Load(object sender, EventArgs e)
{
@@ -37,7 +33,6 @@ public partial class forms_customer_fmBpabBig : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPABForm.ConnectionString = ConnectionString;
dsBPABGrid.ConnectionString = ConnectionString;
_BPNUM = GetStringParam("BPNUM");
_BPPYN = GetStringParam("BPPYN");
@@ -50,16 +45,7 @@ public partial class forms_customer_fmBpabBig : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPABGrid.SelectParameters.Clear();
AddSearch(sql, dsBPABGrid, "BPPYN", _BPPYN, "", true);
sql.Append(" AND SUBSTRING(BPACC,3,4) = '0000' ");
sql.Append(order);
dsBPABGrid.SelectCommand = sql.ToString();
dsBPABGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -139,9 +125,9 @@ public partial class forms_customer_fmBpabBig : Wellan.Web.UI.WUserControlBase
gvBPAB.DataBind();
}
protected void dsBPABGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPABGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
gvBPAB.Visible = false;
fvBPAB.ChangeMode(FormViewMode.Insert);
+8 -7
View File
@@ -9,13 +9,14 @@
<asp:MultiView ID="MultiView1"
runat="server" ActiveViewIndex="0">
<asp:View ID="BigClassView" runat="server">
<asp:SqlDataSource ID="dsBPABGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM BPAB WHERE 1=0"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsBPABGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPABGrid" runat="server"
TypeName="BpabDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPABGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="mode" Type="String" DefaultValue="SMALL" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPABForm"
runat="server" InsertCommand="INSERT INTO BPAB
(BPPYN, BPACC, BPAME, BPBGT, BPCLS, BPORD,
+3 -17
View File
@@ -23,10 +23,6 @@ public partial class forms_customer_fmBpabSmall : Wellan.Web.UI.WUserControlBase
protected string _BPNUM = "";
protected string _BPPYN = "";
private string _OLD_BPACC = "";
private string select = "SELECT * ";
private string from = " FROM BPAB ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPCLS, BPORD";
protected void Page_Load(object sender, EventArgs e)
{
@@ -38,7 +34,6 @@ public partial class forms_customer_fmBpabSmall : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPABForm.ConnectionString = ConnectionString;
dsBPABGrid.ConnectionString = ConnectionString;
dsBPABBig.ConnectionString = ConnectionString;
_BPNUM = GetStringParam("BPNUM");
@@ -54,16 +49,7 @@ public partial class forms_customer_fmBpabSmall : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPABGrid.SelectParameters.Clear();
AddSearch(sql, dsBPABGrid, "BPPYN", _BPPYN, "", true);
sql.Append(" AND SUBSTRING(BPACC,3,2) <> '00' AND SUBSTRING(BPACC,5,2) = '00' ");
sql.Append(order);
dsBPABGrid.SelectCommand = sql.ToString();
dsBPABGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -194,9 +180,9 @@ public partial class forms_customer_fmBpabSmall : Wellan.Web.UI.WUserControlBase
gvBPAB.DataBind();
}
protected void dsBPABGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPABGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
gvBPAB.Visible = false;
fvBPAB.ChangeMode(FormViewMode.Insert);
+8 -4
View File
@@ -9,10 +9,14 @@
<asp:MultiView ID="MultiView1"
runat="server" ActiveViewIndex="0">
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPJAGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM BPJA WHERE (1 = 0)"
OnSelected="dsBPJAGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPJAGrid"
runat="server" TypeName="BpjaDAC"
SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPJAGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPJAForm"
runat="server" InsertCommand="INSERT INTO dbo.BPJA
(BPPYN, BPJNO, BPJME, BPQTY, BPCLS, APPNO, TRDAT, TRMOD, TRUSR)
+20 -32
View File
@@ -22,10 +22,6 @@ public partial class forms_customer_fmBpja : Wellan.Web.UI.WUserControlBase
{
protected string _BPNUM = "";
protected string _BPPYN = "";
private string select = "SELECT * ";
private string from = " FROM BPJA ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPJNO";
protected void Page_Load(object sender, EventArgs e)
{
@@ -37,7 +33,6 @@ public partial class forms_customer_fmBpja : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPJAForm.ConnectionString = ConnectionString;
dsBPJAGrid.ConnectionString = ConnectionString;
_BPPYN = GetStringParam("BPPYN");
_BPNUM = GetStringParam("BPNUM");
@@ -50,14 +45,24 @@ public partial class forms_customer_fmBpja : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPJAGrid.SelectParameters.Clear();
AddSearch(sql, dsBPJAGrid, "BPPYN", _BPPYN, "", true);
sql.Append(order);
dsBPJAGrid.SelectCommand = sql.ToString();
dsBPJAGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
// 返回時,回到之前選擇的那一筆
if (ParamList != null && ParamList.ContainsKey("BPPYN") && ParamList.ContainsKey("BPJNO"))
{
int rowIndex = new BpjaDAC(Query).SelectBPJAIndex(
WDAC.GetStringValue(ParamList["BPPYN"]),
WDAC.GetStringValue(ParamList["BPJNO"]),
_BPPYN);
if (rowIndex >= 0)
{
gvBPJA.PageIndex = rowIndex / gvBPJA.PageSize;
gvBPJA.SelectedIndex = rowIndex - gvBPJA.PageIndex * gvBPJA.PageSize;
}
ParamList.Remove("BPJNO");
}
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -84,23 +89,6 @@ public partial class forms_customer_fmBpja : Wellan.Web.UI.WUserControlBase
if (gvBPJA.SelectedIndex == -1)
gvBPJA.SelectedIndex = 0;
// 返回時,回到之前選擇的那一筆
// BPPYN,BPJNO
if (ParamList.ContainsKey("BPPYN") && ParamList.ContainsKey("BPJNO"))
{
DataView dv = dsBPJAGrid.Select(new DataSourceSelectArguments()) as DataView;
dv.RowFilter = String.Format("BPPYN='{0}' and BPJNO='{1}'", ParamList["BPPYN"], ParamList["BPJNO"]);
if (dv.Count > 0)
{
int rowIndex = dv.Table.Rows.IndexOf(dv[0].Row);
gvBPJA.PageIndex = (rowIndex / gvBPJA.PageSize);
gvBPJA.SelectedIndex = rowIndex - gvBPJA.PageIndex * gvBPJA.PageSize;
}
// ParamList.Remove("BPPYN");
ParamList.Remove("BPJNO");
}
fvBPJA.DataBind();
}
}
@@ -112,9 +100,9 @@ public partial class forms_customer_fmBpja : Wellan.Web.UI.WUserControlBase
gvBPJA.DataBind();
}
protected void dsBPJAGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPJAGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
fvBPJA.ChangeMode(FormViewMode.Insert);
fvBPJA_ModeChanged(sender, e);
+9 -7
View File
@@ -9,13 +9,15 @@
<asp:MultiView ID="MultiView1"
runat="server" ActiveViewIndex="0">
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPJBGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM BPJB WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsBPJBGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPJBGrid"
runat="server" TypeName="BpjbDAC"
SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPJBGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="BPJNO" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPJBForm"
runat="server" InsertCommand="INSERT INTO BPJB
(BPPYN, BPJNO, BPCNO, BPCME, BPSRM, BPSRD, BPP01, BPP02, BPP03, BPP04, BPP05, APPNO, TRDAT, TRMOD, TRUSR)
+4 -16
View File
@@ -24,10 +24,6 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
protected string _BPPYN = "";
protected string _BPJNO = "";
protected string _BPJME = "";
private string select = "SELECT * ";
private string from = " FROM BPJB ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPJNO, BPCNO";
protected void Page_Load(object sender, EventArgs e)
{
@@ -39,7 +35,6 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPJBForm.ConnectionString = ConnectionString;
dsBPJBGrid.ConnectionString = ConnectionString;
_BPNUM = GetStringParam("BPNUM");
_BPPYN = GetStringParam("BPPYN");
@@ -54,15 +49,8 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPJBGrid.SelectParameters.Clear();
AddSearch(sql, dsBPJBGrid, "BPPYN", _BPPYN, "", true);
AddSearch(sql, dsBPJBGrid, "BPJNO", _BPJNO, "", true);
sql.Append(order);
dsBPJBGrid.SelectCommand = sql.ToString();
dsBPJBGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
dsBPJBGrid.SelectParameters["BPJNO"].DefaultValue = _BPJNO;
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -115,9 +103,9 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
gvBPJB.DataBind();
}
protected void dsBPJBGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPJBGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
fvBPJB.ChangeMode(FormViewMode.Insert);
fvBPJB_ModeChanged(sender, e);
+9 -4
View File
@@ -57,10 +57,15 @@
</table>
</asp:View>
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPRJGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM BPRJ WHERE 1=0"
ConnectionString="Data Source=SRYANG-2K3;Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsBPRJGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPRJGrid" runat="server"
TypeName="BprjDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPRJGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPNUM" Type="String" />
<asp:Parameter Name="BPPNM" Type="String" />
<asp:Parameter Name="BPPME" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPRJForm" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM BPRJ WHERE BPNUM=@BPNUM AND BPPNM=@BPPNM"
DeleteCommand="DELETE BPRJ
+23 -36
View File
@@ -32,10 +32,6 @@ public partial class forms_customer_fmBprj : Wellan.Web.UI.WUserControlBase
private string _BPPME = "";
//private string _CurrentBPNUM = "";
//private string _CurrentBPPNM = "";
private string select = "SELECT *, (SELECT TOP 1 BPYER FROM BPAA WHERE BPAA.BPPNM = BPRJ.BPPNM ORDER BY BPYER DESC) LAST_YEAR ";
private string from = " FROM BPRJ ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY LAST_YEAR DESC";
protected void Page_Load(object sender, EventArgs e)
{
@@ -52,7 +48,6 @@ public partial class forms_customer_fmBprj : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsBPRJForm.ConnectionString = ConnectionString;
dsBPRJGrid.ConnectionString = ConnectionString;
_BPNUM = ForwardSource != "" ? GetStringParam("BCNUM") : _BPNUM;
@@ -127,16 +122,27 @@ public partial class forms_customer_fmBprj : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPRJGrid.SelectParameters.Clear();
AddSearch(sql, dsBPRJGrid, "BPNUM", _BPNUM, "", true);
AddSearch(sql, dsBPRJGrid, "BPPNM", _BPPNM, "", true);
AddSearch(sql, dsBPRJGrid, "BPPME", "%" + _BPPME, "", true);
sql.Append(order);
dsBPRJGrid.SelectCommand = sql.ToString();
dsBPRJGrid.SelectParameters["BPNUM"].DefaultValue = _BPNUM;
dsBPRJGrid.SelectParameters["BPPNM"].DefaultValue = _BPPNM;
dsBPRJGrid.SelectParameters["BPPME"].DefaultValue = _BPPME;
// 返回時,回到之前選擇的那一筆
if (ParamList != null && ParamList.ContainsKey("BPNUM") && ParamList.ContainsKey("BPPNM"))
{
int rowIndex = new BprjDAC(Query).SelectBPRJIndex(
WDAC.GetStringValue(ParamList["BPNUM"]),
WDAC.GetStringValue(ParamList["BPPNM"]),
_BPNUM, _BPPNM, _BPPME);
if (rowIndex >= 0)
{
gvBPRJ.PageIndex = rowIndex / gvBPRJ.PageSize;
gvBPRJ.SelectedIndex = rowIndex - gvBPRJ.PageIndex * gvBPRJ.PageSize;
}
ParamList.Remove("BPNUM");
ParamList.Remove("BPPNM");
}
}
protected string GetBtmeName(object bptme)
@@ -155,25 +161,6 @@ public partial class forms_customer_fmBprj : Wellan.Web.UI.WUserControlBase
if (gvBPRJ.SelectedIndex == -1)
gvBPRJ.SelectedIndex = 0;
// 返回時,回到之前選擇的那一筆
if (ParamList.ContainsKey("BPNUM") && ParamList.ContainsKey("BPPNM"))
{
string bpnum = WDAC.GetStringValue(ParamList["BPNUM"]);
string bppnm = WDAC.GetStringValue(ParamList["BPPNM"]);
DataView dv = dsBPRJGrid.Select(new DataSourceSelectArguments()) as DataView;
dv.RowFilter = String.Format("BPNUM='{0}' and BPPNM='{1}'", bpnum, bppnm);
if (dv.Count > 0)
{
int rowIndex = dv.Table.Rows.IndexOf(dv[0].Row);
gvBPRJ.PageIndex = (rowIndex / gvBPRJ.PageSize);
gvBPRJ.SelectedIndex = rowIndex - gvBPRJ.PageIndex * gvBPRJ.PageSize;
}
ParamList.Remove("BPNUM");
ParamList.Remove("BPPNM");
}
fvBPRJ.DataBind();
}
@@ -185,10 +172,10 @@ public partial class forms_customer_fmBprj : Wellan.Web.UI.WUserControlBase
}
// 資料擷取完後的事件
protected void dsBPRJGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPRJGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
// 沒有資料,回到查詢畫面
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
if (MultiView1.ActiveViewIndex != 0)
MultiView1.ActiveViewIndex = 0;
+7 -6
View File
@@ -80,12 +80,13 @@
</table>
</asp:View>
<asp:View ID="View3" runat="server">
<asp:SqlDataSource ID="dsBPRMGrid" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
OnSelected="dsBPRM_Selected"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM BPRM"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPRMGrid" runat="server"
TypeName="BprmDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPRMGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPPNM" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPRMForm" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa" DeleteCommand="DELETE FROM BPRM
+9 -12
View File
@@ -19,10 +19,6 @@ using System.Data.Common;
public partial class forms_customer_fmBprm : Wellan.Web.UI.WUserControlBase
{
protected string _BPPNM = "";
private string select = "SELECT * ";
private string from = " FROM BPRM ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPENO";
protected void Page_Load(object sender, EventArgs e)
{
@@ -181,14 +177,15 @@ public partial class forms_customer_fmBprm : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPRMGrid.SelectParameters.Clear();
AddSearch(sql, dsBPRMGrid, "BPPNM", _BPPNM, "", true);
sql.Append(order);
dsBPRMGrid.SelectCommand = sql.ToString();
dsBPRMGrid.SelectParameters["BPPNM"].DefaultValue = _BPPNM;
}
protected void dsBPRMGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
fvBPRM.ChangeMode(FormViewMode.Insert);
}
}
protected void dsBPRM_Selected(object sender, SqlDataSourceStatusEventArgs e)
+18 -28
View File
@@ -53,28 +53,19 @@
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="dsRASN_RAENO1" runat="server"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT A.RANUM, B.BPNME
FROM RASN AS A
INNER JOIN BPSNView AS B ON A.RANUM = B.BPENO
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL">
<asp:ObjectDataSource ID="dsRASN_RAENO1" runat="server"
TypeName="RasnDAC" SelectMethod="SelectRAENO">
<SelectParameters>
<asp:Parameter Name="RAPYN" />
<asp:Parameter Name="RAPYN" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRASN_RABRH1" runat="server"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT A.RABRH, B.BSSCR, COUNT(1) AS RABRH_COUNT
FROM RASN AS A
INNER JOIN BCLS AS B ON A.RABRH = B.BSCLS AND B.BSPAR = 'BPSNBRH'
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL
GROUP BY A.RABRH, B.BSSCR">
<asp:ObjectDataSource ID="dsRASN_RABRH1" runat="server"
TypeName="RasnDAC" SelectMethod="SelectRABRH">
<SelectParameters>
<asp:Parameter Name="RAPYN" />
<asp:Parameter Name="RAPYN" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRASN_RAWTZ" runat="server"
ProviderName="System.Data.SqlClient"
@@ -282,17 +273,16 @@
</InsertParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="dsRASNGrid" runat="server"
ConflictDetection="CompareAllValues"
SelectCommand="SELECT A.*, B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05
FROM RASN A
LEFT OUTER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO
LEFT OUTER JOIN BPSNView C ON A.RANUM=C.BPENO
WHERE 1=0"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsRASNGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRASNGrid" runat="server"
TypeName="RasnDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsRASNGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RAPYN" Type="String" />
<asp:Parameter Name="BPENO" Type="String" />
<asp:Parameter Name="BPNME" Type="String" />
<asp:Parameter Name="year" Type="Int32" DefaultValue="0" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:FormView ID="RASNForm" runat="server"
DataSourceID="dsRASNForm"
+8 -39
View File
@@ -53,13 +53,10 @@ public partial class forms_customer_fmRasn : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRASNForm.ConnectionString = ConnectionString;
dsRASNGrid.ConnectionString = ConnectionString;
dsRASN_RABRH.ConnectionString = ConnectionString;
dsRASN_RANUM.ConnectionString = ConnectionString;
dsRASN_BPJNO.ConnectionString = ConnectionString;
dsRASN_BPCNO.ConnectionString = ConnectionString;
dsRASN_RAENO1.ConnectionString = ConnectionString;
dsRASN_RABRH1.ConnectionString = ConnectionString;
dsRASN_RAWTZ.ConnectionString = ConnectionString;
_YY = GetIntParam("YY");
@@ -219,44 +216,16 @@ public partial class forms_customer_fmRasn : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
List<string> HQ_RAPYNS = new List<string>() { "103TYB00001", "103JYB00001" };
String searchOrder1 = String.Empty, searchOrder2 = String.Empty;
if (HQ_RAPYNS.IndexOf(_RAPYN) < 0)
{
searchOrder1 = "RANUM";
searchOrder2 = "RAEDT, RANUM";
}
else
{
searchOrder1 = "RAEDT, RANUM";
searchOrder2 = "RAEDT, RANUM";
}
sql.Append(string.Format(@"
SELECT A.*, B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05
FROM
(
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {0}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NULL) T1
UNION ALL
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {1}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NOT NULL) T2
) A
LEFT OUTER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO
LEFT OUTER JOIN BPSNView C ON A.RANUM=C.BPENO
WHERE 1=1
", searchOrder1, searchOrder2));
int year = 0;
if (!string.IsNullOrEmpty(txtYY.Text) && HQ_RAPYNS.IndexOf(_RAPYN) < 0)
{
sql.Append(string.Format(" AND ((RASDT >= '{0}/01/01' AND RASDT <= '{0}/12/31') OR (RAEDT >= '{0}/01/01' AND RAEDT <= '{0}/12/31') OR (RASDT <= '{0}/01/01' AND RAEDT >= '{0}/12/31') ) ", WQuery.GetInt32Value(txtYY.Text) + WGuard1.CY11));
}
year = WQuery.GetInt32Value(txtYY.Text) + WGuard1.CY11;
dsRASNGrid.SelectParameters.Clear();
dsRASNGrid.SelectParameters.Add(new Parameter("RAPYN", DbType.String, _RAPYN));
// AddSearch(sql, dsRASNGrid, "RAPYN", _RAPYN, "", true);
AddSearch(sql, dsRASNGrid, "C.BPENO", _BPENO, "", true);
AddSearch(sql, dsRASNGrid, "C.BPNME", _BPNME, "", true);
dsRASNGrid.SelectCommand = sql.ToString();
dsRASNGrid.SelectParameters["RAPYN"].DefaultValue = _RAPYN;
dsRASNGrid.SelectParameters["BPENO"].DefaultValue = _BPENO;
dsRASNGrid.SelectParameters["BPNME"].DefaultValue = _BPNME;
dsRASNGrid.SelectParameters["year"].DefaultValue = year.ToString();
}
// 存檔前的計算動作
@@ -302,9 +271,9 @@ WHERE 1=1
RASNGrid.DataBind();
}
protected void dsRASNGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRASNGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
if (ForwardSource != "")
RASNForm.ChangeMode(FormViewMode.Insert);
+7 -5
View File
@@ -6,11 +6,13 @@
TextMessageId="FMRPFE.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server"
Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRPFEGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RPFE WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsRPFEGrid_Selected">
</asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRPFEGrid" runat="server"
TypeName="RpfeDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsRPFEGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RPPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPFEForm" runat="server"
UpdateCommand="UPDATE RPFE SET &#13;&#10; RPENO = @RPENO, &#13;&#10; RPDAT = @RPDAT, &#13;&#10; RPACC = @RPACC, &#13;&#10; RPAMT = @RPAMT, &#13;&#10; RPDOC = @RPDOC, &#13;&#10; APPNO = APPNO + 1, &#13;&#10; TRDAT = GETDATE(),&#13;&#10; TRMOD = 'UPDATE',&#13;&#10; TRUSR = @TRUSR&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO"
DeleteCommand="DELETE FROM RPFE&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO"
+3 -15
View File
@@ -23,10 +23,6 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
{
private string _RPPYN = "";
private int _YY = 0;
private string select = "SELECT * ";
private string from = " FROM RPFE ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY RPPYN, RPREN";
private TextBox[] RPDATs = new TextBox[10];
private DropDownList[] RPACCs = new DropDownList[10];
private TextBox[] RPAMTs = new TextBox[10];
@@ -47,7 +43,6 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRPFEForm.ConnectionString = ConnectionString;
dsRPFEGrid.ConnectionString = ConnectionString;
dsRPFE_RPACC.ConnectionString = ConnectionString;
dsRPFE_RPENO.ConnectionString = ConnectionString;
@@ -152,14 +147,7 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRPFEGrid.SelectParameters.Clear();
AddSearch(sql, dsRPFEGrid, "RPPYN", _RPPYN, "", true);
sql.Append(order);
dsRPFEGrid.SelectCommand = sql.ToString();
dsRPFEGrid.SelectParameters["RPPYN"].DefaultValue = _RPPYN;
}
private int CheckInsertInput(int index)
@@ -229,9 +217,9 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
RPFEGrid.DataBind();
}
protected void dsRPFEGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRPFEGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
//RPFEForm.ChangeMode(FormViewMode.Insert);
//RPFEForm_ModeChanged(sender, e);
+6 -6
View File
@@ -690,13 +690,13 @@
</EmptyDataTemplate>
</asp:GridView>
<asp:SqlDataSource ID="dsRPAB2" runat="server" ConnectionString="Data Source=SRYANG-X200\SQL2K8;Initial Catalog=THINKYU_WEB_TY;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT [RPANO], [RPAPN], [RPENO], [RPDAT], [RPAPP], [RPDOC] FROM [RPAB] WHERE (([RPREN] = @RPREN) AND ([RPDAT] IS NOT NULL))"
<asp:ObjectDataSource ID="dsRPAB2" runat="server"
TypeName="RpabDAC" SelectMethod="SelectRPAB"
OnSelecting="dsRPAB2_Selecting">
<SelectParameters>
<asp:Parameter Name="RPREN" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
</div>
</asp:View>
<asp:View ID="View5" runat="server">
@@ -2589,13 +2589,13 @@
</EmptyDataTemplate>
</asp:GridView>
<asp:SqlDataSource ID="dsRPAB" runat="server" ConnectionString="Data Source=SRYANG-X200\SQL2K8;Initial Catalog=THINKYU_WEB_TY;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT [RPANO], [RPAPN], [RPENO], [RPDAT], [RPAPP], [RPDOC] FROM [RPAB] WHERE (([RPREN] = @RPREN) AND ([RPDAT] IS NOT NULL))">
<asp:ObjectDataSource ID="dsRPAB" runat="server"
TypeName="RpabDAC" SelectMethod="SelectRPAB">
<SelectParameters>
<asp:ControlParameter ControlID="RPARGrid" Name="RPREN" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
</td>
</tr>
</table>
+2 -5
View File
@@ -86,10 +86,8 @@ public partial class forms_flow_fmSign : Wellan.Web.UI.WUserControlBase
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
dsRPAB.ConnectionString = ConnectionString;
dsRPARForm.ConnectionString = ConnectionString;
dsRPAR_RPTYP.ConnectionString = ConnectionString;
dsRPAB2.ConnectionString = ConnectionString;
rparDao = new RparDAC(Query);
rpabDao = new RpabDAC(Query);
bsgpDao = new BsgpDAC(Query);
@@ -1746,11 +1744,10 @@ public partial class forms_flow_fmSign : Wellan.Web.UI.WUserControlBase
RPARGrid2.DataBind();
}
protected void dsRPAB2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
protected void dsRPAB2_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
if (RPARGrid2.SelectedValue != null)
e.Command.Parameters["@RPREN"].Value = RPARGrid2.SelectedValue;
//(sender as SqlDataSource).SelectParameters["RPREN"].DefaultValue = WDAC.GetStringValue(RPARGrid2.SelectedValue);
e.InputParameters["RPREN"] = RPARGrid2.SelectedValue;
}
protected string GetAttachLink(string RPREN)
+5 -7
View File
@@ -139,15 +139,13 @@
</asp:Panel>
<asp:Panel ID="pnSACD" runat="server"
Width="100%" Visible="False">
<asp:SqlDataSource ID="dsSACD"
runat="server" ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT BPAB.BPPYN, BPAB.BPACC, ISNULL(BPAB.BPBGT, 0) AS BPBGT, BPAB.BPCLS, BPAB.BPAME, ISNULL(SACD.SAAMT, 0) AS SAAMT, SACD.SADOC FROM BPAB LEFT OUTER JOIN SACD ON BPAB.BPPYN = SACD.SAPYN AND BPAB.BPACC = SACD.SAACC AND SACD.SAYMM = @SAYMM WHERE (BPAB.BPPYN = @BPPYN) AND (SUBSTRING(BPAB.BPACC, 5, 2) <> '00') ORDER BY BPAB.BPCLS">
<asp:ObjectDataSource ID="dsSACD"
runat="server" TypeName="SacdDAC" SelectMethod="SelectByProject">
<SelectParameters>
<asp:Parameter Name="SAYMM" />
<asp:Parameter Name="BPPYN" />
<asp:Parameter Name="BPPYN" Type="String" />
<asp:Parameter Name="SAYMM" Type="DateTime" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
-1
View File
@@ -1560,7 +1560,6 @@ public partial class forms_summary_fmSalaryCalc : Wellan.Web.UI.WUserControlBase
bool result = true;
aYYMM = CheckDate(lbYYMM.Text + "01", "", ref result, cvMessage);
dsSACD.ConnectionString = ConnectionString;
dsSACD.SelectParameters["BPPYN"].DefaultValue = ddlRSPYN.SelectedValue;
dsSACD.SelectParameters["SAYMM"].DefaultValue = aYYMM.ToString(System.Globalization.CultureInfo.InvariantCulture);
GridView1.DataBind();
+19 -6
View File
@@ -215,12 +215,25 @@
TextMessageId="" Visible="False"></cc1:WLabel>
</asp:View>
<asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPSNGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM BPSNView WHERE 1=0"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsBPSNGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsBPSNGrid"
runat="server" TypeName="BpsnDAC"
SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsBPSNGrid_Selected">
<SelectParameters>
<asp:Parameter Name="BPENO" Type="String" />
<asp:Parameter Name="BPNME" Type="String" />
<asp:Parameter Name="BPENM" Type="String" />
<asp:Parameter Name="BPIDN" Type="String" />
<asp:Parameter Name="BPEDY_TYPE" Type="String" />
<asp:Parameter Name="BPDPT_TYPE" Type="String" />
<asp:Parameter Name="BPSDY1" Type="String" />
<asp:Parameter Name="BPSDY2" Type="String" />
<asp:Parameter Name="BPEDY1" Type="String" />
<asp:Parameter Name="BPEDY2" Type="String" />
<asp:Parameter Name="canSearch" Type="Boolean" />
<asp:Parameter Name="userId" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPSNForm"
runat="server"
ConflictDetection="CompareAllValues"
+17 -78
View File
@@ -24,23 +24,6 @@ public partial class forms_worker_fmBpsn : Wellan.Web.UI.WUserControlBase
private string _BPEDY1 = "";
private string _BPEDY2 = "";
private string select =
@" SELECT
A.*
, B.RAPYN, C.BPPYM RAPYNX, B.RABRH, D.BSSCR RABRHX, B.RAJNO, E.BPJME RAJNOX, B.RACNO
, F.BPCME RACNOX, ISNULL(H.RPCPY, G.RPCPY) AS RPCPY
, ROW_NUMBER() OVER (ORDER BY A.BPENO) ROWID ";
private string from =
@" FROM BPSNView A
LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND (B.RAEDT IS NULL OR (B.RASDT <= @TODAY AND B.RAEDT >= @TODAY))
LEFT OUTER JOIN BPAA C ON B.RAPYN=C.BPPYN
LEFT OUTER JOIN BCLS D ON D.BSCLS=B.RABRH AND D.BSPAR='BPSNBRH'
LEFT OUTER JOIN BPJA E ON E.BPPYN=B.RAPYN AND E.BPJNO=B.RAJNO
LEFT OUTER JOIN BPJB F ON F.BPPYN=B.RAPYN AND F.BPJNO=B.RAJNO AND F.BPCNO=B.RACNO
LEFT OUTER JOIN RPIR G ON A.BPENO=G.RPENO AND G.RPREN=(SELECT MAX(RPREN) FROM RPIR WHERE RPENO=A.BPENO)
LEFT OUTER JOIN RPIB H ON G.RPREN=H.RPREN AND H.RPITM=(SELECT MAX(RPITM) FROM RPIB WHERE RPREN=H.RPREN) ";
private string where = " WHERE 1=1 ";
// private string order = " ORDER BY BPENO ";
private bool fileOK = false;
internal BprmDAC bprmDAC;
@@ -163,7 +146,6 @@ public partial class forms_worker_fmBpsn : Wellan.Web.UI.WUserControlBase
dsBPSNForm.DeleteCommand = @"DELETE BPSN WHERE BPENO = @OLD_BPENO AND APPNO = @OLD_APPNO";
dsBPSNForm.ConnectionString = ConnectionString;
dsBPSNGrid.ConnectionString = ConnectionString;
dsBPSN_BPTYP.ConnectionString = ConnectionString;
dsBPSN_BPGNR.ConnectionString = ConnectionString;
dsBPSN_BPSGR.ConnectionString = ConnectionString;
@@ -298,70 +280,27 @@ public partial class forms_worker_fmBpsn : Wellan.Web.UI.WUserControlBase
_BPEDY_TYPE = ddlBPEDY.SelectedValue;
_BPDPT_TYPE = ddlBPDPT.SelectedValue;
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsBPSNGrid.SelectParameters.Clear();
dsBPSNGrid.SelectParameters.Add("TODAY", String.Format(WGuard1.InvariantCulture, "{0:yyyy-MM-dd}", DateTime.UtcNow.AddHours(8).Date));
if (canSearch)
{
AddSearch(sql, dsBPSNGrid, "BPENO", _BPENO, "", true);
AddSearch(sql, dsBPSNGrid, "BPNME", _BPNME, "", true);
AddSearch(sql, dsBPSNGrid, "BPENM", _BPENM, "", true);
AddSearch(sql, dsBPSNGrid, "BPIDN", _BPIDN, "", true);
switch (_BPEDY_TYPE)
{
case "1":
sql.Append(" AND (BPEDY IS NULL OR BPEDY >= @TODAY) ");
break;
case "2":
sql.Append(" AND (BPEDY < @TODAY)");
break;
}
switch (_BPDPT_TYPE)
{
case "1":
sql.Append(String.Format(" AND BPDPT IN {0} ", PublicVariable.InnerDepartment));
break;
case "2":
sql.Append(String.Format(" AND BPDPT NOT IN {0} ", PublicVariable.InnerDepartment));
break;
}
AddSearch(sql, dsBPSNGrid, "BPSDY", _BPSDY1, _BPSDY2, true);
AddSearch(sql, dsBPSNGrid, "BPEDY", _BPEDY1, _BPEDY2, true);
if (!BpsnDAC.IsManager(UserId))
{
sql.Append(" AND BPENO NOT IN ('00001','00002','00003') ");
}
}
else
{
AddSearch(sql, dsBPSNGrid, "BPENO", UserId, "", true);
}
// sql.Append(order);
dsBPSNGrid.SelectCommand = sql.ToString();
dsBPSNGrid.SelectParameters["BPENO"].DefaultValue = _BPENO;
dsBPSNGrid.SelectParameters["BPNME"].DefaultValue = _BPNME;
dsBPSNGrid.SelectParameters["BPENM"].DefaultValue = _BPENM;
dsBPSNGrid.SelectParameters["BPIDN"].DefaultValue = _BPIDN;
dsBPSNGrid.SelectParameters["BPEDY_TYPE"].DefaultValue = _BPEDY_TYPE;
dsBPSNGrid.SelectParameters["BPDPT_TYPE"].DefaultValue = _BPDPT_TYPE;
dsBPSNGrid.SelectParameters["BPSDY1"].DefaultValue = _BPSDY1;
dsBPSNGrid.SelectParameters["BPSDY2"].DefaultValue = _BPSDY2;
dsBPSNGrid.SelectParameters["BPEDY1"].DefaultValue = _BPEDY1;
dsBPSNGrid.SelectParameters["BPEDY2"].DefaultValue = _BPEDY2;
dsBPSNGrid.SelectParameters["canSearch"].DefaultValue = canSearch.ToString();
dsBPSNGrid.SelectParameters["userId"].DefaultValue = UserId;
if (!string.IsNullOrEmpty(GetStringParam("BPENO")) || !string.IsNullOrEmpty(WDAC.GetStringValue(ViewState["RPENO"])))
{
string bpeno = "";
if (!string.IsNullOrEmpty(GetStringParam("BPENO"))) bpeno = GetStringParam("BPENO");
if (!string.IsNullOrEmpty(WDAC.GetStringValue(ViewState["RPENO"]))) bpeno = WDAC.GetStringValue(ViewState["RPENO"]);
var cmdIndex = Query.NewCommand();
cmdIndex.CommandText = string.Format("SELECT ROWID - 1 FROM ( {0} ) T WHERE BPENO = @TARGET", dsBPSNGrid.SelectCommand);
Query.AddParam(cmdIndex, "TODAY", DateTime.UtcNow.AddHours(8).Date);
Query.AddParam(cmdIndex, "BPENO1", _BPENO);
Query.AddParam(cmdIndex, "BPNME1", _BPNME);
Query.AddParam(cmdIndex, "BPENM1", _BPENM);
Query.AddParam(cmdIndex, "BPIDN1", _BPIDN);
Query.AddParam(cmdIndex, "BPSDY1", _BPSDY1);
Query.AddParam(cmdIndex, "BPSDY2", _BPSDY2);
Query.AddParam(cmdIndex, "BPEDY1", _BPEDY1);
Query.AddParam(cmdIndex, "BPEDY2", _BPEDY2);
Query.AddParam(cmdIndex, "TARGET", bpeno);
var o = Query.ExecuteScalar(cmdIndex);
int idx = (o is Int32 || o is Int64) ? WDAC.GetInt32Value(o) : -1;
int idx = new BpsnDAC(Query).SelectBPENOIndex(
bpeno, _BPENO, _BPNME, _BPENM, _BPIDN, _BPEDY_TYPE, _BPDPT_TYPE, _BPSDY1, _BPSDY2, _BPEDY1, _BPEDY2, canSearch, UserId);
if (idx >= 0)
{
@@ -455,9 +394,9 @@ public partial class forms_worker_fmBpsn : Wellan.Web.UI.WUserControlBase
GridView1.DataBind();
}
protected void dsBPSNGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsBPSNGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
if (MultiView1.ActiveViewIndex == 0)
{
+13 -6
View File
@@ -6,12 +6,19 @@
CssClass="pageTitle"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage"
runat="server" Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRPARGrid"
runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM RPAR WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"
OnSelected="dsRPARGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRPARGrid"
runat="server" TypeName="RparDAC"
SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsRPARGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RPPYN" Type="String" />
<asp:Parameter Name="RPNUM1" Type="String" />
<asp:Parameter Name="RPNUM2" Type="String" />
<asp:Parameter Name="RPRDT1" Type="String" />
<asp:Parameter Name="RPRDT2" Type="String" />
<asp:Parameter Name="rparType" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPARForm"
runat="server" InsertCommand="INSERT INTO RPAR
(RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT, RPTYP, RPTCT,
+8 -15
View File
@@ -37,7 +37,6 @@ public partial class forms_worker_fmRpar : Wellan.Web.UI.WUserControlBase
RPRSN, RPAGM, ISNULL(RPTCT - FLOOR(RPTCT / 60) * 60, 0) AS RPTMT";
private string from = " FROM RPAR ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY RPREN";
private FormView RPARForm;
private Panel RPARPanel;
protected string rparType;
@@ -71,7 +70,6 @@ public partial class forms_worker_fmRpar : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRPARForm.ConnectionString = ConnectionString;
dsRPARGrid.ConnectionString = ConnectionString;
dsRPAR_RPTYP.ConnectionString = ConnectionString;
rparDao = new RparDAC(Query);
@@ -282,21 +280,16 @@ public partial class forms_worker_fmRpar : Wellan.Web.UI.WUserControlBase
// RPARForm.Visible = true;
}
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRPARGrid.SelectParameters.Clear();
DateTime RPRDT1, RPRDT2;
CheckDate(_RPRDT1, out RPRDT1);
CheckDate(_RPRDT2, out RPRDT2);
AddSearch(sql, dsRPARGrid, "RPPYN", _RPPYN, "", false);
AddSearch(sql, dsRPARGrid, "RPNUM", _RPNUM1, _RPNUM2, true);
AddSearch(sql, dsRPARGrid, "RPRDT", RPRDT1, RPRDT2, true);
sql.Append(order);
dsRPARGrid.SelectCommand = sql.ToString();
dsRPARGrid.SelectParameters["RPPYN"].DefaultValue = _RPPYN;
dsRPARGrid.SelectParameters["RPNUM1"].DefaultValue = _RPNUM1;
dsRPARGrid.SelectParameters["RPNUM2"].DefaultValue = _RPNUM2;
dsRPARGrid.SelectParameters["RPRDT1"].DefaultValue = RPRDT1.Ticks > 0 ? RPRDT1.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectParameters["RPRDT2"].DefaultValue = RPRDT2.Ticks > 0 ? RPRDT2.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectParameters["rparType"].DefaultValue = rparType;
dsRPARForm.SelectCommand = select + from + " WHERE RPREN=@RPREN ";
}
@@ -625,9 +618,9 @@ public partial class forms_worker_fmRpar : Wellan.Web.UI.WUserControlBase
RPARGrid.DataBind();
}
protected void dsRPARGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRPARGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
switch (MultiView1.ActiveViewIndex)
{
+13 -7
View File
@@ -5,9 +5,16 @@
TagPrefix="uc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRPARGrid" runat="server" ConflictDetection="CompareAllValues"
SelectCommand="SELECT * FROM RPAR WHERE (1 = 0)" ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsRPARGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRPARGrid" runat="server"
TypeName="RparDAC" SelectMethod="SelectWorkerPage" SelectCountMethod="SelectWorkerCount"
EnablePaging="true" OnSelected="dsRPARGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RPNUM_FIXED" Type="String" />
<asp:Parameter Name="RPRDT1" Type="String" />
<asp:Parameter Name="RPRDT2" Type="String" />
<asp:Parameter Name="rparType" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPARForm" runat="server"
InsertCommand="INSERT INTO RPAR
(RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT,
@@ -182,14 +189,13 @@
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPAB" runat="server" ConnectionString="Data Source=SRYANG-X200\SQL2K8;Initial Catalog=THINKYU_WEB_TY;Integrated Security=True"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [RPANO], [RPAPN], [RPENO], [RPDAT], [RPAPP], [RPDOC] FROM [RPAB] WHERE [RPREN] = @RPREN">
<asp:ObjectDataSource ID="dsRPAB" runat="server"
TypeName="RpabDAC" SelectMethod="SelectRPABByRPREN">
<SelectParameters>
<asp:ControlParameter ControlID="RPARGrid" Name="RPREN" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:ObjectDataSource>
<asp:ObjectDataSource ID="dsBPSE" runat="server" OldValuesParameterFormatString="original_{0}"
OnSelecting="dsBPSE_Selecting" SelectMethod="Select片語By類別"
+6 -14
View File
@@ -49,7 +49,6 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
FLOOR(RPTC5 / 60) AS RPTC5, RPTC5 - FLOOR(RPTC5 / 60) * 60 AS RPTM5";
private string from = " FROM RPAR ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY RPRDT DESC";
private FormView RPARForm;
private Panel RPARPanel;
protected string rparType;
@@ -136,9 +135,7 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRPARForm.ConnectionString = ConnectionString;
dsRPARGrid.ConnectionString = ConnectionString;
dsRPAR_RPTYP.ConnectionString = ConnectionString;
dsRPAB.ConnectionString = ConnectionString;
bpsnDao = new BpsnDAC(Query);
rparDao = new RparDAC(Query);
@@ -354,19 +351,14 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
RPARPanel.Visible = true;
}
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRPARGrid.SelectParameters.Clear();
DateTime RPRDT1, RPRDT2;
CheckDate(_RPRDT1, out RPRDT1);
CheckDate(_RPRDT2, out RPRDT2);
AddSearch(sql, dsRPARGrid, "RPRDT", RPRDT1, RPRDT2, true);
sql.Append(order);
dsRPARGrid.SelectCommand = sql.ToString();
dsRPARGrid.SelectParameters["RPNUM_FIXED"].DefaultValue = UserId;
dsRPARGrid.SelectParameters["RPRDT1"].DefaultValue = RPRDT1.Ticks > 0 ? RPRDT1.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectParameters["RPRDT2"].DefaultValue = RPRDT2.Ticks > 0 ? RPRDT2.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectParameters["rparType"].DefaultValue = rparType;
dsRPARForm.SelectCommand = select + from + " WHERE RPREN=@RPREN ";
@@ -959,9 +951,9 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
gvRPAD.DataBind();
}
protected void dsRPARGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRPARGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
switch (MultiView1.ActiveViewIndex)
{
+8 -4
View File
@@ -6,10 +6,14 @@
TextMessageId="FMRSAJ.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server"
Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRSAJGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RSAJ WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsRSAJGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRSAJGrid" runat="server"
TypeName="RsajDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsRSAJGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RSENO" Type="String" />
<asp:Parameter Name="RSPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRSAJForm" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RSAJ WHERE RSREN = @RSREN"
DeleteCommand="DELETE RSAJ WHERE RSREN = @OLD_RSREN AND APPNO = @OLD_APPNO"
+4 -17
View File
@@ -23,11 +23,6 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
protected DateTime _YYMM;
protected string _RSENO = "";
protected string _RSPYN = "";
private string select = "SELECT * ";
private string from = " FROM RSAJ ";
private string where = " WHERE 1=1 ";
// private string order = " ORDER BY RSPYN, RSREN";
private string order = " ORDER BY RSYMM DESC, RSREN DESC";
private TextBox[] RSYMMs = new TextBox[10];
private DropDownList[] RSENOs = new DropDownList[10];
private TextBox[] RSAMTs = new TextBox[10];
@@ -48,7 +43,6 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRSAJForm.ConnectionString = ConnectionString;
dsRSAJGrid.ConnectionString = ConnectionString;
dsRSAJ_RSENO.ConnectionString = ConnectionString;
dsRSAJ_RSENO.SelectCommand =
@"IF @RSPYN = '-ALL-'
@@ -201,15 +195,8 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRSAJGrid.SelectParameters.Clear();
AddSearch(sql, dsRSAJGrid, "RSENO", _RSENO, "", true);
AddSearch(sql, dsRSAJGrid, "RSPYN", _RSPYN, "", true);
sql.Append(order);
dsRSAJGrid.SelectCommand = sql.ToString();
dsRSAJGrid.SelectParameters["RSENO"].DefaultValue = _RSENO;
dsRSAJGrid.SelectParameters["RSPYN"].DefaultValue = _RSPYN;
}
// 存檔前的計算動作
@@ -254,9 +241,9 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
RSAJGrid.DataBind();
}
protected void dsRSAJGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRSAJGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
/*
if (ForwardSource != "")
+8 -6
View File
@@ -69,12 +69,14 @@
OnClick="btnSSPYN_Click"></cc1:WButton></td>
</tr>
</table>
<asp:SqlDataSource ID="dsSSMS" runat="server"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"></asp:SqlDataSource>
<asp:SqlDataSource ID="dsSSMSSum" runat="server"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsSSMS" runat="server"
TypeName="SsmsDAC" SelectMethod="SelectSalaryStrip">
<SelectParameters>
<asp:Parameter Name="tableName" Type="String" />
<asp:Parameter Name="SSYMM" Type="DateTime" />
<asp:Parameter Name="SSPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:Button ID="btnSend" runat="server" OnClick="btnSend_Click"
Text="S.發送" CssClass="button" AccessKey="S"
OnClientClick='if (confirm("是否確定發送薪資單郵件?")) {ShowProcessing(2000); return true;} else return false;' />
+21 -63
View File
@@ -50,42 +50,6 @@ public partial class forms_worker_fmSendSalaryStrip : Wellan.Web.UI.WUserControl
LEFT OUTER JOIN BPSNView B ON A.SSENO=B.BPENO
LEFT OUTER JOIN BPAA C ON A.SSPYN=C.BPPYN
LEFT OUTER JOIN BRML D ON B.BPBNK=D.BCNUM";
private string selectSum =
@"SELECT ISNULL(SUM(SSD01), 0) SSD01, ISNULL(SUM(SSD02), 0) SSD02, ISNULL(SUM(SSSRD), 0) SSSRD, ISNULL(SUM(SSP00), 0) SSP00,
ISNULL(SUM(SSP01), 0) SSP01, ISNULL(SUM(SSP02), 0) SSP02, ISNULL(SUM(SSP03), 0) SSP03, ISNULL(SUM(SSP04), 0) SSP04,
ISNULL(SUM(SSP05), 0) SSP05, ISNULL(SUM(SSP06), 0) SSP06, ISNULL(SUM(SSP07), 0) SSP07, ISNULL(SUM(SSP08), 0) SSP08,
ISNULL(SUM(SSP09), 0) SSP09, ISNULL(SUM(SSP10), 0) SSP10, ISNULL(SUM(SSP11), 0) SSP11, ISNULL(SUM(SSP12), 0) SSP12,
ISNULL(SUM(SSP13), 0) SSP13, ISNULL(SUM(SSP14), 0) SSP14, ISNULL(SUM(SSP15), 0) SSP15, ISNULL(SUM(SSP99), 0) SSP99,
ISNULL(SUM(SSS01), 0) SSS01, ISNULL(SUM(SSS02), 0) SSS02, ISNULL(SUM(SSS03), 0) SSS03, ISNULL(SUM(SSS04), 0) SSS04,
ISNULL(SUM(SSS05), 0) SSS05, ISNULL(SUM(SSS06), 0) SSS06, ISNULL(SUM(SSS07), 0) SSS07, ISNULL(SUM(SSS08), 0) SSS08,
ISNULL(SUM(SSS09), 0) SSS09, ISNULL(SUM(SSS10), 0) SSS10, ISNULL(SUM(SSS11), 0) SSS11, ISNULL(SUM(SSS12), 0) SSS12,
ISNULL(SUM(SSS13), 0) SSS13, ISNULL(SUM(SSS14), 0) SSS14, ISNULL(SUM(SSS15), 0) SSS15, ISNULL(SUM(SSS99), 0) SSS99,
ISNULL(SUM(SSH01), 0) SSH01, ISNULL(SUM(SSH02), 0) SSH02, ISNULL(SUM(SSH03), 0) SSH03, ISNULL(SUM(SSH04), 0) SSH04,
ISNULL(SUM(SSH05), 0) SSH05, ISNULL(SUM(SSH06), 0) SSH06, ISNULL(SUM(SSH07), 0) SSH07, ISNULL(SUM(SSH08), 0) SSH08,
ISNULL(SUM(SSH09), 0) SSH09, ISNULL(SUM(SSH10), 0) SSH10, ISNULL(SUM(SST01), 0) SST01, ISNULL(SUM(SST02), 0) SST02,
ISNULL(SUM(SST03), 0) SST03, ISNULL(SUM(SST04), 0) SST04, ISNULL(SUM(SST05), 0) SST05, ISNULL(SUM(SST06), 0) SST06,
ISNULL(SUM(SST07), 0) SST07, ISNULL(SUM(SST08), 0) SST08, ISNULL(SUM(SST09), 0) SST09, ISNULL(SUM(SST10), 0) SST10,
ISNULL(SUM(SST11), 0) SST11, ISNULL(SUM(SST12), 0) SST12, ISNULL(SUM(SST13), 0) SST13, ISNULL(SUM(SST14), 0) SST14,
ISNULL(SUM(SST15), 0) SST15, ISNULL(SUM(SST16), 0) SST16, ISNULL(SUM(SST17), 0) SST17, ISNULL(SUM(SST18), 0) SST18,
ISNULL(SUM(SST19), 0) SST19, ISNULL(SUM(SST20), 0) SST20, ISNULL(SUM(SST21), 0) SST21, ISNULL(SUM(SST22), 0) SST22,
ISNULL(SUM(SST23), 0) SST23, ISNULL(SUM(SST24), 0) SST24, ISNULL(SUM(SST25), 0) SST25, ISNULL(SUM(SSL01), 0) SSL01,
ISNULL(SUM(SSL02), 0) SSL02, ISNULL(SUM(SSL03), 0) SSL03, ISNULL(SUM(SSL04), 0) SSL04, ISNULL(SUM(SSL05), 0) SSL05,
ISNULL(SUM(SSP06 + SSP07 + SSP08 + SSP13 + SSP14), 0) OVERWORK,
ISNULL(SUM(SSP09 + SSP10 + SSP12), 0) OUTGOING,
ISNULL(SUM(SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 +
SSP13 + SSP14 + SSP15 + SSP99), 0) SSPLUS,
ISNULL(SUM(SSS01 + SSS02 + SSS09), 0) LEAVING,
ISNULL(SUM(SST01 + SST02 + SST03 + SST21 + SST22), 0) OVERWORKTIME,
ISNULL(SUM((SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 +
SSP13 + SSP14 + SSP15 + SSP99)
- (SSS01 + SSS02 + SSS03 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 +
SSS14 + SSS15 + SSS99)), 0) SSTOTAL,
ISNULL(SUM(SSS01 + SSS02 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 +
SSS15 + SSS99), 0) SSMINUS,
ISNULL(SUM(SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 +
SSP14 + SSP15 + SSP99), 0) TOTALPLUS,
ISNULL(SUM(SSH01 + SSH02 + SSH03), 0) EMPLOYER
FROM {0} A WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN";
protected void Page_Load(object sender, EventArgs e)
{
@@ -102,11 +66,6 @@ public partial class forms_worker_fmSendSalaryStrip : Wellan.Web.UI.WUserControl
if (_BonusTimes == "")
_BonusTimes = "0";
dsSSMS.ConnectionString = ConnectionString;
dsSSMSSum.ConnectionString = ConnectionString;
dsSSMS.SelectCommand = String.Format(select, _tableName) + " WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN ORDER BY SSENO ";
dsSSMSSum.SelectCommand = String.Format(selectSum, _tableName);
if (ForwardSource != "")
{
MultiView1.ActiveViewIndex = 1;
@@ -140,10 +99,9 @@ public partial class forms_worker_fmSendSalaryStrip : Wellan.Web.UI.WUserControl
_SSYMM = _SSYMM.AddDays(i);
s = _SSYMM.ToString(WGuard1.InvariantCulture);
dsSSMS.SelectParameters.Add("SSYMM", s);
dsSSMS.SelectParameters.Add("SSPYN", ddlSSPYN.SelectedValue);
dsSSMSSum.SelectParameters.Add("SSYMM", s);
dsSSMSSum.SelectParameters.Add("SSPYN", ddlSSPYN.SelectedValue);
dsSSMS.SelectParameters["tableName"].DefaultValue = _tableName;
dsSSMS.SelectParameters["SSYMM"].DefaultValue = s;
dsSSMS.SelectParameters["SSPYN"].DefaultValue = ddlSSPYN.SelectedValue;
if (_BonusTimes == "0")
{
@@ -582,42 +540,42 @@ public partial class forms_worker_fmSendSalaryStrip : Wellan.Web.UI.WUserControl
if (e.Row.RowType == DataControlRowType.Footer)
{
var param = new DataSourceSelectArguments();
var a = dsSSMSSum.Select(param) as DataView;
DataTable a = new SsmsDAC(Query).SelectSalaryStripSum(_tableName, _SSYMM, ddlSSPYN.SelectedValue);
DataRow ar = a.Rows[0];
e.Row.Cells[1].Text = "合計";
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[2].Text = string.Format("{0:###,###,##0}", a[0]["SSP00"]); // 本薪
e.Row.Cells[2].Text = string.Format("{0:###,###,##0}", ar["SSP00"]); // 本薪
e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[3].Text = string.Format("{0:###,###,##0}", a[0]["SSP01"]); // 全勤獎金
e.Row.Cells[3].Text = string.Format("{0:###,###,##0}", ar["SSP01"]); // 全勤獎金
e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[4].Text = string.Format("{0:###,###,##0}", a[0]["OVERWORK"]);
e.Row.Cells[4].Text = string.Format("{0:###,###,##0}", ar["OVERWORK"]);
e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[5].Text = string.Format("{0:###,###,##0}", a[0]["OUTGOING"]);
e.Row.Cells[5].Text = string.Format("{0:###,###,##0}", ar["OUTGOING"]);
e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[6].Text = string.Format("{0:###,###,##0}", a[0]["SSP11"]);
e.Row.Cells[6].Text = string.Format("{0:###,###,##0}", ar["SSP11"]);
e.Row.Cells[6].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[7].Text = string.Format("{0:###,###,##0}", a[0]["SSP02"]);
e.Row.Cells[7].Text = string.Format("{0:###,###,##0}", ar["SSP02"]);
e.Row.Cells[7].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[8].Text = string.Format("{0:###,###,##0}", a[0]["SSP99"]);
e.Row.Cells[8].Text = string.Format("{0:###,###,##0}", ar["SSP99"]);
e.Row.Cells[8].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[9].Text = string.Format("{0:###,###,##0}", a[0]["SSP03"]);
e.Row.Cells[9].Text = string.Format("{0:###,###,##0}", ar["SSP03"]);
e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[10].Text = string.Format("{0:###,###,##0}", a[0]["SSP05"]);
e.Row.Cells[10].Text = string.Format("{0:###,###,##0}", ar["SSP05"]);
e.Row.Cells[10].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[12].Text = string.Format("{0:###,###,##0}", a[0]["SSPLUS"]);
e.Row.Cells[12].Text = string.Format("{0:###,###,##0}", ar["SSPLUS"]);
e.Row.Cells[12].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[13].Text = string.Format("{0:###,###,##0}", a[0]["LEAVING"]);
e.Row.Cells[13].Text = string.Format("{0:###,###,##0}", ar["LEAVING"]);
e.Row.Cells[13].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[14].Text = string.Format("{0:###,###,##0}", a[0]["SSS05"]);
e.Row.Cells[14].Text = string.Format("{0:###,###,##0}", ar["SSS05"]);
e.Row.Cells[14].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[15].Text = string.Format("{0:###,###,##0}", a[0]["SSS04"]);
e.Row.Cells[15].Text = string.Format("{0:###,###,##0}", ar["SSS04"]);
e.Row.Cells[15].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[16].Text = string.Format("{0:###,###,##0}", a[0]["SSS07"]);
e.Row.Cells[16].Text = string.Format("{0:###,###,##0}", ar["SSS07"]);
e.Row.Cells[16].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[17].Text = string.Format("{0:###,###,##0}", a[0]["SSS06"]);
e.Row.Cells[17].Text = string.Format("{0:###,###,##0}", ar["SSS06"]);
e.Row.Cells[17].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[18].Text = string.Format("{0:###,###,##0}", a[0]["SSS99"]);
e.Row.Cells[18].Text = string.Format("{0:###,###,##0}", ar["SSS99"]);
e.Row.Cells[18].HorizontalAlign = HorizontalAlign.Center;
}
}