目的: 顯示資料的分頁處理(RNK), RNK 必需為唯一, 即 order by 必需為 PK
處理說明: 1>*.cs 顯示資料的 SQL , RNK 必需為唯一 , 即 order by 必需為 PK
[HttpPost]
public dynamic getGridData_M(bool par_paging= true)
{
Sql = " SELECT RNK, "
+ " ACNO,SAPNO,AMMNO,ITM,PN,MOSM, PLANNINGCARD,AREA, TEAM,CRITCL,BSDT,BEDT,STAFF,HRS,STDHRS,DURAION,STARTDAY,ENDDAY,INSDT, CLS, "
+ " GRP,FOREMAN1,TEAM,LDMAN1,EMPLYID,DT,CLSRM,PATCHMAN,ASHR,REMARK,PTY,CREWBOARDSDT "
+ " FROM ( "
+"select dense_rank() over(order by nvl(d.STARTVAL,d.ACNO),d.SAPNO,a.AMMNO,a.ITM,b.EMPLYID,b.DT) as RNK,"
//+ "select dense_rank() over(order by nvl(d.STARTVAL,d.ACNO),d.SAPNO) as RNK," //非唯一,分頁會有問題
+ " nvl(d.STARTVAL,d.ACNO) as ACNO, d.SAPNO,d.PTY,d.CREWBOARDSDT, "
+ " a.AMMNO,a.ITM,a.PN,a.MOSM,a.PLANNINGCARD,a.AREA, a.TEAM,a.CRITCL,a.BSDT,a.BEDT,a.STAFF,a.HRS,a.STDHRS,a.DURAION,a.STARTDAY,a.ENDDAY,a.INSDT, a.CLS, "
+ " b.GRP,b.FOREMAN1,b.TEAM as bTEAM,b.LDMAN1,b.EMPLYID,b.DT,b.CLSRM,b.PATCHMAN,b.ASHR,b.REMARK "
+ " from AMM_CREW a, AMM_SRO d, "
+ " (select a.AMMNO,a.ITM,a.GRP,b.FOREMAN1,a.TEAM,c.LDMAN1,a.EMPLYID,a.DT,a.CLSRM,a.PATCHMAN,a.ASHR,a.REMARK "
+ " from AMM_CREWD a, AMM_CREWGRP b,AMM_CREWTEAM c "
+ " where a.GRP = b.GRP and a.TEAM = c.TEAM) b "
+ " where a.AMMNO = b.AMMNO(+) "
+ " and a.ITM = b.ITM(+) "
+ " and a.AMMNO=d.AMMNO ";
//AMM單號
if (!myfunc.checkisnull(Tmp_AMMNO))
{
Tmp_Sql = Tmp_Sql + " AND A.AMMNO=" + myfunc.AA(Tmp_AMMNO);
};
//分工單計畫開始日 起~迄
if ((!myfunc.checkisnull(Tmp_BEDT1)) || (!myfunc.checkisnull(Tmp_BEDT2)))
{
if (!myfunc.checkisnull(Tmp_BEDT1))
{
Tmp_Sql = Tmp_Sql + " AND A.BEDT >=" + myfunc.AA(Tmp_BEDT1);
}
if (!myfunc.checkisnull(Tmp_BEDT2))
{
Tmp_Sql = Tmp_Sql + " AND A.BEDT <=" + myfunc.AA(Tmp_BEDT2);
}
};
//施工日期 起~迄
if ((!myfunc.checkisnull(Tmp_DT1)) || (!myfunc.checkisnull(Tmp_DT2)))
{
if (!myfunc.checkisnull(Tmp_DT1))
{
Tmp_Sql = Tmp_Sql + " AND B.DT >=" + myfunc.AA(Tmp_DT1);
}
if (!myfunc.checkisnull(Tmp_DT2))
{
Tmp_Sql = Tmp_Sql + " AND B.DT <=" + myfunc.AA(Tmp_DT2);
}
};
//區域
if (!myfunc.checkisnull(Tmp_AREA))
{
Tmp_Sql = Tmp_Sql + " AND A.AREA=" + myfunc.AA(Tmp_AREA);
};
//發工件號
if (!myfunc.checkisnull(Tmp_PN))
{
Tmp_Sql = Tmp_Sql + " AND A.PN=" + myfunc.AA(Tmp_PN);
};
//CREWBOARD起始天 起~迄
if ((!myfunc.checkisnull(Tmp_PLANDAY1)) || (!myfunc.checkisnull(Tmp_PLANDAY2)))
{
Tmp_Sql = Tmp_Sql + " AND A.PN IN (SELECT DISTINCT PLANNINGCARD FROM AMM_PLANCARD WHERE 1=1 ";
if (!myfunc.checkisnull(Tmp_PLANDAY1))
{
Tmp_Sql = Tmp_Sql + " AND PLANDAY >=" + myfunc.AA(Tmp_PLANDAY1);
}
if (!myfunc.checkisnull(Tmp_PLANDAY2))
{
Tmp_Sql = Tmp_Sql + " AND PLANDAY <=" + myfunc.AA(Tmp_PLANDAY2);
}
Tmp_Sql = Tmp_Sql + " ) ";
};
//TEAM
if (!myfunc.checkisnull(Tmp_TEAM))
{
Tmp_Sql = Tmp_Sql + " AND A.TEAM=" + myfunc.AA(Tmp_TEAM);
};
//領班 FOREMAN1 of AMM_CREWGRP.GRP
if (!myfunc.checkisnull(Tmp_FOREMAN1))
{
Tmp_Sql = Tmp_Sql + " AND B.GRP IN (SELECT GRP FROM AMM_CREWGRP WHERE FOREMAN1=" + myfunc.AA(Tmp_FOREMAN1) + ")";
};
//小組長 LDMAN1 of AMM_CREWTEAM.TEAM
if (!myfunc.checkisnull(Tmp_LDMAN1))
{
Tmp_Sql = Tmp_Sql + " AND B.TEAM IN (SELECT TEAM FROM AMM_CREWTEAM WHERE LDMAN1=" + myfunc.AA(Tmp_LDMAN1) + ")";
};
// AMM_SRO的過濾條件
//機號 & 工號
if ((!myfunc.checkisnull(Tmp_ACNO)) || (!myfunc.checkisnull(Tmp_SAPNO)) ||
(!myfunc.checkisnull(Tmp_PTY1)) || (!myfunc.checkisnull(Tmp_PTY2)) ||
(!myfunc.checkisnull(Tmp_CREWBOARDSDT1)) || (!myfunc.checkisnull(Tmp_CREWBOARDSDT2)))
{
Tmp_Sql = Tmp_Sql + " AND A.AMMNO IN (SELECT AMMNO FROM AMM_SRO WHERE 1=1 ";
if (!myfunc.checkisnull(Tmp_ACNO))
{
Tmp_Sql = Tmp_Sql + " AND nvl(STARTVAL,ACNO)=" + myfunc.AA(Tmp_ACNO);
};
if (!myfunc.checkisnull(Tmp_SAPNO))
{
Tmp_Sql = Tmp_Sql + " AND SAPNO=" + myfunc.AA(Tmp_SAPNO);
};
if (!myfunc.checkisnull(Tmp_PTY1))
{
Tmp_Sql = Tmp_Sql + " AND PTY>=" + Tmp_PTY1;
};
if (!myfunc.checkisnull(Tmp_PTY2))
{
Tmp_Sql = Tmp_Sql + " AND PTY<=" + Tmp_PTY2;
};
if (!myfunc.checkisnull(Tmp_CREWBOARDSDT1))
{
Tmp_CREWBOARDSDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(Tmp_CREWBOARDSDT1));
Tmp_Sql = Tmp_Sql + " AND CREWBOARDSDT>=" + myfunc.AA(Tmp_CREWBOARDSDT1);
};
if (!myfunc.checkisnull(Tmp_CREWBOARDSDT2))
{
Tmp_CREWBOARDSDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(Tmp_CREWBOARDSDT2));
Tmp_Sql = Tmp_Sql + " AND CREWBOARDSDT<=" + myfunc.AA(Tmp_CREWBOARDSDT2);
};
Tmp_Sql = Tmp_Sql + " )";
}
Tmp_Sql = Tmp_Sql + " ) ";
cmd.CommandText = Tmp_Sql;
string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
//匯出時 ,取全部資料, par_paging =true
DataSet ds = getDataTable(cmd, countSql, par_paging);
+ " ACNO,SAPNO,AMMNO,ITM,PN,MOSM, PLANNINGCARD,AREA, TEAM,CRITCL,BSDT,BEDT,STAFF,HRS,STDHRS,DURAION,STARTDAY,ENDDAY,INSDT, CLS, "
+ " GRP,FOREMAN1,TEAM,LDMAN1,EMPLYID,DT,CLSRM,PATCHMAN,ASHR,REMARK,PTY,CREWBOARDSDT "
+ " FROM ( "
+"select dense_rank() over(order by nvl(d.STARTVAL,d.ACNO),d.SAPNO,a.AMMNO,a.ITM,b.EMPLYID,b.DT) as RNK,"
//+ "select dense_rank() over(order by nvl(d.STARTVAL,d.ACNO),d.SAPNO) as RNK," //非唯一,分頁會有問題
+ " nvl(d.STARTVAL,d.ACNO) as ACNO, d.SAPNO,d.PTY,d.CREWBOARDSDT, "
+ " a.AMMNO,a.ITM,a.PN,a.MOSM,a.PLANNINGCARD,a.AREA, a.TEAM,a.CRITCL,a.BSDT,a.BEDT,a.STAFF,a.HRS,a.STDHRS,a.DURAION,a.STARTDAY,a.ENDDAY,a.INSDT, a.CLS, "
+ " b.GRP,b.FOREMAN1,b.TEAM as bTEAM,b.LDMAN1,b.EMPLYID,b.DT,b.CLSRM,b.PATCHMAN,b.ASHR,b.REMARK "
+ " from AMM_CREW a, AMM_SRO d, "
+ " (select a.AMMNO,a.ITM,a.GRP,b.FOREMAN1,a.TEAM,c.LDMAN1,a.EMPLYID,a.DT,a.CLSRM,a.PATCHMAN,a.ASHR,a.REMARK "
+ " from AMM_CREWD a, AMM_CREWGRP b,AMM_CREWTEAM c "
+ " where a.GRP = b.GRP and a.TEAM = c.TEAM) b "
+ " where a.AMMNO = b.AMMNO(+) "
+ " and a.ITM = b.ITM(+) "
+ " and a.AMMNO=d.AMMNO ";
//AMM單號
if (!myfunc.checkisnull(Tmp_AMMNO))
{
Tmp_Sql = Tmp_Sql + " AND A.AMMNO=" + myfunc.AA(Tmp_AMMNO);
};
//分工單計畫開始日 起~迄
if ((!myfunc.checkisnull(Tmp_BEDT1)) || (!myfunc.checkisnull(Tmp_BEDT2)))
{
if (!myfunc.checkisnull(Tmp_BEDT1))
{
Tmp_Sql = Tmp_Sql + " AND A.BEDT >=" + myfunc.AA(Tmp_BEDT1);
}
if (!myfunc.checkisnull(Tmp_BEDT2))
{
Tmp_Sql = Tmp_Sql + " AND A.BEDT <=" + myfunc.AA(Tmp_BEDT2);
}
};
//施工日期 起~迄
if ((!myfunc.checkisnull(Tmp_DT1)) || (!myfunc.checkisnull(Tmp_DT2)))
{
if (!myfunc.checkisnull(Tmp_DT1))
{
Tmp_Sql = Tmp_Sql + " AND B.DT >=" + myfunc.AA(Tmp_DT1);
}
if (!myfunc.checkisnull(Tmp_DT2))
{
Tmp_Sql = Tmp_Sql + " AND B.DT <=" + myfunc.AA(Tmp_DT2);
}
};
//區域
if (!myfunc.checkisnull(Tmp_AREA))
{
Tmp_Sql = Tmp_Sql + " AND A.AREA=" + myfunc.AA(Tmp_AREA);
};
//發工件號
if (!myfunc.checkisnull(Tmp_PN))
{
Tmp_Sql = Tmp_Sql + " AND A.PN=" + myfunc.AA(Tmp_PN);
};
//CREWBOARD起始天 起~迄
if ((!myfunc.checkisnull(Tmp_PLANDAY1)) || (!myfunc.checkisnull(Tmp_PLANDAY2)))
{
Tmp_Sql = Tmp_Sql + " AND A.PN IN (SELECT DISTINCT PLANNINGCARD FROM AMM_PLANCARD WHERE 1=1 ";
if (!myfunc.checkisnull(Tmp_PLANDAY1))
{
Tmp_Sql = Tmp_Sql + " AND PLANDAY >=" + myfunc.AA(Tmp_PLANDAY1);
}
if (!myfunc.checkisnull(Tmp_PLANDAY2))
{
Tmp_Sql = Tmp_Sql + " AND PLANDAY <=" + myfunc.AA(Tmp_PLANDAY2);
}
Tmp_Sql = Tmp_Sql + " ) ";
};
//TEAM
if (!myfunc.checkisnull(Tmp_TEAM))
{
Tmp_Sql = Tmp_Sql + " AND A.TEAM=" + myfunc.AA(Tmp_TEAM);
};
//領班 FOREMAN1 of AMM_CREWGRP.GRP
if (!myfunc.checkisnull(Tmp_FOREMAN1))
{
Tmp_Sql = Tmp_Sql + " AND B.GRP IN (SELECT GRP FROM AMM_CREWGRP WHERE FOREMAN1=" + myfunc.AA(Tmp_FOREMAN1) + ")";
};
//小組長 LDMAN1 of AMM_CREWTEAM.TEAM
if (!myfunc.checkisnull(Tmp_LDMAN1))
{
Tmp_Sql = Tmp_Sql + " AND B.TEAM IN (SELECT TEAM FROM AMM_CREWTEAM WHERE LDMAN1=" + myfunc.AA(Tmp_LDMAN1) + ")";
};
// AMM_SRO的過濾條件
//機號 & 工號
if ((!myfunc.checkisnull(Tmp_ACNO)) || (!myfunc.checkisnull(Tmp_SAPNO)) ||
(!myfunc.checkisnull(Tmp_PTY1)) || (!myfunc.checkisnull(Tmp_PTY2)) ||
(!myfunc.checkisnull(Tmp_CREWBOARDSDT1)) || (!myfunc.checkisnull(Tmp_CREWBOARDSDT2)))
{
Tmp_Sql = Tmp_Sql + " AND A.AMMNO IN (SELECT AMMNO FROM AMM_SRO WHERE 1=1 ";
if (!myfunc.checkisnull(Tmp_ACNO))
{
Tmp_Sql = Tmp_Sql + " AND nvl(STARTVAL,ACNO)=" + myfunc.AA(Tmp_ACNO);
};
if (!myfunc.checkisnull(Tmp_SAPNO))
{
Tmp_Sql = Tmp_Sql + " AND SAPNO=" + myfunc.AA(Tmp_SAPNO);
};
if (!myfunc.checkisnull(Tmp_PTY1))
{
Tmp_Sql = Tmp_Sql + " AND PTY>=" + Tmp_PTY1;
};
if (!myfunc.checkisnull(Tmp_PTY2))
{
Tmp_Sql = Tmp_Sql + " AND PTY<=" + Tmp_PTY2;
};
if (!myfunc.checkisnull(Tmp_CREWBOARDSDT1))
{
Tmp_CREWBOARDSDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(Tmp_CREWBOARDSDT1));
Tmp_Sql = Tmp_Sql + " AND CREWBOARDSDT>=" + myfunc.AA(Tmp_CREWBOARDSDT1);
};
if (!myfunc.checkisnull(Tmp_CREWBOARDSDT2))
{
Tmp_CREWBOARDSDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(Tmp_CREWBOARDSDT2));
Tmp_Sql = Tmp_Sql + " AND CREWBOARDSDT<=" + myfunc.AA(Tmp_CREWBOARDSDT2);
};
Tmp_Sql = Tmp_Sql + " )";
}
Tmp_Sql = Tmp_Sql + " ) ";
cmd.CommandText = Tmp_Sql;
string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
//匯出時 ,取全部資料, par_paging =true
DataSet ds = getDataTable(cmd, countSql, par_paging);