多条件组合查询+分页
生活随笔
收集整理的這篇文章主要介紹了
多条件组合查询+分页
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
比較麻煩,把他記錄下來。
前臺UI:
實現的類代碼:
程序代碼
///?<summary>
????????///?多條件組合查詢
????????///?</summary>
????????///?<param?name="suppliercode">供應商代碼</param>
????????///?<param?name="materialcode">物料代碼</param>
????????///?<param?name="beginDate">合同有效日期搜索開始日期</param>
????????///?<param?name="endDate">合同有效日期搜索結束日期</param>
????????///?<param?name="companyType">廠別</param>
????????///?<param?name="formState">狀態</param>
????????///?<param?name="POCT">POCT</param>
????????///?<param?name="orderField">排序字段</param>
????????///?<returns></returns>
????????public?IList<Entity.CAS.PriceFormInfo>?MultiSearch(string?suppliercode,?string?materialcode,?string?beginDate,?string?endDate,?string?companyType,?string?formState,?string?POCT,?string?orderField,?int?pagesize,?int?pageindex)
????????{
????????????SqlParameter[]?Parms?=
???????????????{
???????????????????new?SqlParameter("@tblName",SqlDbType.VarChar,255),
???????????????????new?SqlParameter("@strGetFields",SqlDbType.VarChar,1000),
???????????????????new?SqlParameter("@fldName",SqlDbType.VarChar,255),
???????????????????new?SqlParameter("@PageSize",SqlDbType.Int,4),
???????????????????new?SqlParameter("@PageIndex",SqlDbType.Int,4),
???????????????????new?SqlParameter("@doCount",SqlDbType.Int,4),
???????????????????new?SqlParameter("@OrderType",SqlDbType.Int,4),
???????????????????new?SqlParameter("@strWhere",SqlDbType.VarChar,1500),
???????????????};
????????????Parms[0].Value?=?"UBS_CAS_PriceForm";
????????????Parms[1].Value?=?"*";
????????????Parms[2].Value?=?"FormID";
????????????Parms[3].Value?=?pagesize;
????????????Parms[4].Value?=?pageindex;
????????????Parms[5].Value?=?0;
????????????Parms[6].Value?=?1;
????????????string?sql_select="1=1";
???????????
???????????????
????????????if(!string.IsNullOrEmpty(suppliercode))
????????????{
????????????????sql_select+="and?suppliercode='"+suppliercode.ToString()+"'";
????????????}
????????????if(!string.IsNullOrEmpty(materialcode))
????????????{
????????????????sql_select+="?and?materialcode='"+materialcode.ToString()+"'";
????????????}
????????????if?(!string.IsNullOrEmpty(companyType.ToString()))
????????????{
????????????????sql_select?+=?"?and?companytype="?+?companyType.ToString();
????????????}
????????????if(!string.IsNullOrEmpty(POCT))
????????????{
?????????????????sql_select+="?and?POCT='"+POCT.ToString()?+"'";
????????????}
????????????if(!string.IsNullOrEmpty(formState.ToString()))
????????????{
?????????????????sql_select+="?and?formState="+formState.ToString()?;
????????????}
????????????if(!string.IsNullOrEmpty(beginDate.ToString())?&&?!string.IsNullOrEmpty(endDate.ToString()))
????????????{
????????????????sql_select+=?"??And?[EffectiveDate]?>='"?+?beginDate.ToString()?+?"'?And?[EffectiveDate]<=?'"?+?endDate.ToString()?+?"?'";
????????????}
????????????
????????????
????????????Parms[7].Value?=?sql_select;
???
????????????//Parms[7].Value?=?"1=1?and?suppliercode?is?null?or?suppliercode='"?+?suppliercode.ToString().Trim()?+?"'?and?materialcode?is?null?or?materialcode='"?+?materialcode.ToString()?+?"'?AND?companytype?is?null?or?CompanyType="?+?companyType.ToString()?+?"?AND?POCT?is?null?or?POCT='"?+?POCT.ToString()?+?"'?AND?EffectiveDate?between???'"?+?beginDate.ToString()?+?"'?AND??'"?+?endDate.ToString()?+?"'";
??
??
????????????IList<Entity.CAS.PriceFormInfo>?FormList?=?new?List<Entity.CAS.PriceFormInfo>();
????????????using?(SqlDataReader?dr?=?SqlHelper.ExecuteReader(SqlHelper.ConnectionStringProfile,?CommandType.StoredProcedure,?"UBS_System_Page",?Parms))
????????????{
????????????????while?(dr.Read())
????????????????{
????????????????????Entity.CAS.PriceFormInfo?priceForm?=?new?Entity.CAS.PriceFormInfo(Convert.ToInt32(dr["formID"]),?dr["materialCode"].ToString().Trim(),?dr["materialDesc"].ToString().Trim(),?dr["supplierCode"].ToString().Trim(),?dr["supplierName"].ToString().Trim(),?dr["payment"].ToString().Trim(),?Convert.ToDouble(dr["tax"]),?dr["currencyType"].ToString().Trim(),?Convert.ToDateTime(dr["effectiveDate"]),?dr["processMarDealWay"].ToString().Trim(),?dr["productMarDealWay"].ToString().Trim(),?dr["guaranDealWay"].ToString().Trim(),?dr["idelDealWay"].ToString().Trim(),?Convert.ToInt32(dr["companyType"]),?dr["purchaser"].ToString().Trim(),?Convert.ToInt32(dr["purchaserUID"]),?dr["auditor"].ToString().Trim(),?Convert.ToInt32(dr["auditorUID"]),?dr["description"].ToString().Trim(),?Convert.ToDateTime(dr["pubDate"]),?Convert.ToInt32(dr["formState"]),?dr["rejectReason"].ToString().Trim(),?Convert.ToInt32(dr["itemCostModelID"]),?Convert.ToDouble(dr["price"]),?Convert.ToDateTime(dr["checkedDate"]),?Convert.ToDouble(dr["profits"]),?Convert.ToDouble(dr["totalTaxPercent"]),?Convert.ToDouble(dr["processMarTax"]),?Convert.ToDouble(dr["productMarTax"]),?Convert.ToDouble(dr["guaranTax"]),?Convert.ToInt32(dr["IsCurrentPrice"]),?Convert.ToInt32(dr["FormType"]),?dr["POCT"].ToString().Trim(),?Convert.ToInt32(dr["MaterialClass"]),?dr["Checker"].ToString().Trim(),?Convert.ToInt32(dr["CheckerUID"]),?Convert.ToInt32(dr["IsBatch"]),?dr["AttributePath"].ToString().Trim(),?dr["BatchNo"].ToString().Trim());
????????????????????FormList.Add(priceForm);
????????????????}
????????????}
????????????return?FormList;
????????}
存儲過程實現代碼:(這個可以通用,在SQL或Access都可以用的)
程序代碼
--?=============================================
--?Author:Dezai??www.Dezai.cn
--?Create?date:2008-06-04?11:19:52
--?Description:查詢分頁集合(通用存儲過程)
--?=============================================
Create?PROCEDURE?UP_GetCollectionPage
????(
????????@tblName?VARCHAR(255),?--?表名
????????@strGetFields?VARCHAR(1000)?=?'*',?--?需要返回的列
????????@fldName?VARCHAR(255)='',?--?排序的字段名
????????@PageSize?INT?=?10,?--?頁尺寸
????????@PageIndex?INT?=?1,?--?頁碼
????????@doCount?BIT?=?0,?--?返回記錄總數,?非?0?值則返回
????????@OrderType?BIT?=?0,?--?設置排序類型,?非?0?值則降序
????????@strWhere?VARCHAR(1500)?=?''?--?查詢條件?(注意:?不要加?Where)
????)
AS
????SET?NOCOUNT?ON
????????DECLARE?@strSQL?VARCHAR(5000)?--?主語句
????????DECLARE?@strTmp?VARCHAR(110)?--?臨時變量
????????DECLARE?@strOrder?VARCHAR(400)?--?排序類型
????????IF(@doCount?!=?0)
????????????BEGIN
????????????????IF?@strWhere?!=''
????????????????????SET?@strSQL?=?'Select?COUNT(1)?AS?Total?FROM?['?+?@tblName?+?']?Where?'+@strWhere
????????????????ELSE
????????????????????SET?@strSQL?=?'Select?COUNT(1)?AS?Total?FROM?['?+?@tblName?+?']'
????????????END
????????????--以上代碼的意思是如果@doCount傳遞過來的不是0,就執行總數統計。以下的所有代碼都是@doCount為0的情況
????????ELSE
????????????BEGIN
????????????????IF?@OrderType?!=?0
????????????????????BEGIN
????????????????????????SET?@strTmp?=?'<(Select?MIN'
????????????????????????SET?@strOrder?=?'?orDER?BY?['?+?@fldName?+']?DESC'
????????????????????????--如果@OrderType不是0,就執行降序,這句很重要
????????????????????END
????????????????ELSE
????????????????????BEGIN
????????????????????????SET?@strTmp?=?'>(Select?MAX'
????????????????????????SET?@strOrder?=?'?orDER?BY?['?+?@fldName?+']?ASC'
????????????????????END
????????????????IF?@PageIndex?=?1
????????????????????BEGIN
????????????????????????IF?@strWhere?!=?''
????????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['?+?@tblName?+?']?Where?'?+?@strWhere?+?'?'?+?@strOrder
????????????????????????ELSE
????????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['+?@tblName?+?']?'+?@strOrder
????????????????????????--如果是第一頁就執行以上代碼,這樣會加快執行速度
????????????????????END
????????????????ELSE
????????????????????BEGIN
????????????????????????--以下代碼賦予了@strSQL以真正執行的SQL代碼
????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['
????????????????????????+?@tblName?+?']?Where?['?+?@fldName?+?']'?+?@strTmp?+?'(['+?@fldName?+?'])?FROM?(Select?TOP?'?+?str((@PageIndex-1)*@PageSize)?+?'?['+?@fldName?+?']?FROM?['?+?@tblName?+?']'?+?@strOrder?+?')?AS?tblTmp)'+?@strOrder
????????????????????????IF?@strWhere?!=?''
????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['
????????????????????????+?@tblName?+?']?Where?['?+?@fldName?+?']'?+?@strTmp?+?'(['
????????????????????????+?@fldName?+?'])?FROM?(Select?TOP?'?+?str((@PageIndex-1)*@PageSize)?+?'?['
????????????????????????+?@fldName?+?']?FROM?['?+?@tblName?+?']?Where?'?+?@strWhere?+?'?'
????????????????????????+?@strOrder?+?')?AS?tblTmp)?AND?'?+?@strWhere?+?'?'?+?@strOrder
????????????????????END
????????????END
????????EXEC?(@strSQL)
????SET?NOCOUNT?OFF
GO
記錄一下,與大家分享,歡迎糾錯。
來源:http://www.dezai.cn/blog/article.asp?id=199
前臺UI:
實現的類代碼:
程序代碼
///?<summary>
????????///?多條件組合查詢
????????///?</summary>
????????///?<param?name="suppliercode">供應商代碼</param>
????????///?<param?name="materialcode">物料代碼</param>
????????///?<param?name="beginDate">合同有效日期搜索開始日期</param>
????????///?<param?name="endDate">合同有效日期搜索結束日期</param>
????????///?<param?name="companyType">廠別</param>
????????///?<param?name="formState">狀態</param>
????????///?<param?name="POCT">POCT</param>
????????///?<param?name="orderField">排序字段</param>
????????///?<returns></returns>
????????public?IList<Entity.CAS.PriceFormInfo>?MultiSearch(string?suppliercode,?string?materialcode,?string?beginDate,?string?endDate,?string?companyType,?string?formState,?string?POCT,?string?orderField,?int?pagesize,?int?pageindex)
????????{
????????????SqlParameter[]?Parms?=
???????????????{
???????????????????new?SqlParameter("@tblName",SqlDbType.VarChar,255),
???????????????????new?SqlParameter("@strGetFields",SqlDbType.VarChar,1000),
???????????????????new?SqlParameter("@fldName",SqlDbType.VarChar,255),
???????????????????new?SqlParameter("@PageSize",SqlDbType.Int,4),
???????????????????new?SqlParameter("@PageIndex",SqlDbType.Int,4),
???????????????????new?SqlParameter("@doCount",SqlDbType.Int,4),
???????????????????new?SqlParameter("@OrderType",SqlDbType.Int,4),
???????????????????new?SqlParameter("@strWhere",SqlDbType.VarChar,1500),
???????????????};
????????????Parms[0].Value?=?"UBS_CAS_PriceForm";
????????????Parms[1].Value?=?"*";
????????????Parms[2].Value?=?"FormID";
????????????Parms[3].Value?=?pagesize;
????????????Parms[4].Value?=?pageindex;
????????????Parms[5].Value?=?0;
????????????Parms[6].Value?=?1;
????????????string?sql_select="1=1";
???????????
???????????????
????????????if(!string.IsNullOrEmpty(suppliercode))
????????????{
????????????????sql_select+="and?suppliercode='"+suppliercode.ToString()+"'";
????????????}
????????????if(!string.IsNullOrEmpty(materialcode))
????????????{
????????????????sql_select+="?and?materialcode='"+materialcode.ToString()+"'";
????????????}
????????????if?(!string.IsNullOrEmpty(companyType.ToString()))
????????????{
????????????????sql_select?+=?"?and?companytype="?+?companyType.ToString();
????????????}
????????????if(!string.IsNullOrEmpty(POCT))
????????????{
?????????????????sql_select+="?and?POCT='"+POCT.ToString()?+"'";
????????????}
????????????if(!string.IsNullOrEmpty(formState.ToString()))
????????????{
?????????????????sql_select+="?and?formState="+formState.ToString()?;
????????????}
????????????if(!string.IsNullOrEmpty(beginDate.ToString())?&&?!string.IsNullOrEmpty(endDate.ToString()))
????????????{
????????????????sql_select+=?"??And?[EffectiveDate]?>='"?+?beginDate.ToString()?+?"'?And?[EffectiveDate]<=?'"?+?endDate.ToString()?+?"?'";
????????????}
????????????
????????????
????????????Parms[7].Value?=?sql_select;
???
????????????//Parms[7].Value?=?"1=1?and?suppliercode?is?null?or?suppliercode='"?+?suppliercode.ToString().Trim()?+?"'?and?materialcode?is?null?or?materialcode='"?+?materialcode.ToString()?+?"'?AND?companytype?is?null?or?CompanyType="?+?companyType.ToString()?+?"?AND?POCT?is?null?or?POCT='"?+?POCT.ToString()?+?"'?AND?EffectiveDate?between???'"?+?beginDate.ToString()?+?"'?AND??'"?+?endDate.ToString()?+?"'";
??
??
????????????IList<Entity.CAS.PriceFormInfo>?FormList?=?new?List<Entity.CAS.PriceFormInfo>();
????????????using?(SqlDataReader?dr?=?SqlHelper.ExecuteReader(SqlHelper.ConnectionStringProfile,?CommandType.StoredProcedure,?"UBS_System_Page",?Parms))
????????????{
????????????????while?(dr.Read())
????????????????{
????????????????????Entity.CAS.PriceFormInfo?priceForm?=?new?Entity.CAS.PriceFormInfo(Convert.ToInt32(dr["formID"]),?dr["materialCode"].ToString().Trim(),?dr["materialDesc"].ToString().Trim(),?dr["supplierCode"].ToString().Trim(),?dr["supplierName"].ToString().Trim(),?dr["payment"].ToString().Trim(),?Convert.ToDouble(dr["tax"]),?dr["currencyType"].ToString().Trim(),?Convert.ToDateTime(dr["effectiveDate"]),?dr["processMarDealWay"].ToString().Trim(),?dr["productMarDealWay"].ToString().Trim(),?dr["guaranDealWay"].ToString().Trim(),?dr["idelDealWay"].ToString().Trim(),?Convert.ToInt32(dr["companyType"]),?dr["purchaser"].ToString().Trim(),?Convert.ToInt32(dr["purchaserUID"]),?dr["auditor"].ToString().Trim(),?Convert.ToInt32(dr["auditorUID"]),?dr["description"].ToString().Trim(),?Convert.ToDateTime(dr["pubDate"]),?Convert.ToInt32(dr["formState"]),?dr["rejectReason"].ToString().Trim(),?Convert.ToInt32(dr["itemCostModelID"]),?Convert.ToDouble(dr["price"]),?Convert.ToDateTime(dr["checkedDate"]),?Convert.ToDouble(dr["profits"]),?Convert.ToDouble(dr["totalTaxPercent"]),?Convert.ToDouble(dr["processMarTax"]),?Convert.ToDouble(dr["productMarTax"]),?Convert.ToDouble(dr["guaranTax"]),?Convert.ToInt32(dr["IsCurrentPrice"]),?Convert.ToInt32(dr["FormType"]),?dr["POCT"].ToString().Trim(),?Convert.ToInt32(dr["MaterialClass"]),?dr["Checker"].ToString().Trim(),?Convert.ToInt32(dr["CheckerUID"]),?Convert.ToInt32(dr["IsBatch"]),?dr["AttributePath"].ToString().Trim(),?dr["BatchNo"].ToString().Trim());
????????????????????FormList.Add(priceForm);
????????????????}
????????????}
????????????return?FormList;
????????}
存儲過程實現代碼:(這個可以通用,在SQL或Access都可以用的)
程序代碼
--?=============================================
--?Author:Dezai??www.Dezai.cn
--?Create?date:2008-06-04?11:19:52
--?Description:查詢分頁集合(通用存儲過程)
--?=============================================
Create?PROCEDURE?UP_GetCollectionPage
????(
????????@tblName?VARCHAR(255),?--?表名
????????@strGetFields?VARCHAR(1000)?=?'*',?--?需要返回的列
????????@fldName?VARCHAR(255)='',?--?排序的字段名
????????@PageSize?INT?=?10,?--?頁尺寸
????????@PageIndex?INT?=?1,?--?頁碼
????????@doCount?BIT?=?0,?--?返回記錄總數,?非?0?值則返回
????????@OrderType?BIT?=?0,?--?設置排序類型,?非?0?值則降序
????????@strWhere?VARCHAR(1500)?=?''?--?查詢條件?(注意:?不要加?Where)
????)
AS
????SET?NOCOUNT?ON
????????DECLARE?@strSQL?VARCHAR(5000)?--?主語句
????????DECLARE?@strTmp?VARCHAR(110)?--?臨時變量
????????DECLARE?@strOrder?VARCHAR(400)?--?排序類型
????????IF(@doCount?!=?0)
????????????BEGIN
????????????????IF?@strWhere?!=''
????????????????????SET?@strSQL?=?'Select?COUNT(1)?AS?Total?FROM?['?+?@tblName?+?']?Where?'+@strWhere
????????????????ELSE
????????????????????SET?@strSQL?=?'Select?COUNT(1)?AS?Total?FROM?['?+?@tblName?+?']'
????????????END
????????????--以上代碼的意思是如果@doCount傳遞過來的不是0,就執行總數統計。以下的所有代碼都是@doCount為0的情況
????????ELSE
????????????BEGIN
????????????????IF?@OrderType?!=?0
????????????????????BEGIN
????????????????????????SET?@strTmp?=?'<(Select?MIN'
????????????????????????SET?@strOrder?=?'?orDER?BY?['?+?@fldName?+']?DESC'
????????????????????????--如果@OrderType不是0,就執行降序,這句很重要
????????????????????END
????????????????ELSE
????????????????????BEGIN
????????????????????????SET?@strTmp?=?'>(Select?MAX'
????????????????????????SET?@strOrder?=?'?orDER?BY?['?+?@fldName?+']?ASC'
????????????????????END
????????????????IF?@PageIndex?=?1
????????????????????BEGIN
????????????????????????IF?@strWhere?!=?''
????????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['?+?@tblName?+?']?Where?'?+?@strWhere?+?'?'?+?@strOrder
????????????????????????ELSE
????????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['+?@tblName?+?']?'+?@strOrder
????????????????????????--如果是第一頁就執行以上代碼,這樣會加快執行速度
????????????????????END
????????????????ELSE
????????????????????BEGIN
????????????????????????--以下代碼賦予了@strSQL以真正執行的SQL代碼
????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['
????????????????????????+?@tblName?+?']?Where?['?+?@fldName?+?']'?+?@strTmp?+?'(['+?@fldName?+?'])?FROM?(Select?TOP?'?+?str((@PageIndex-1)*@PageSize)?+?'?['+?@fldName?+?']?FROM?['?+?@tblName?+?']'?+?@strOrder?+?')?AS?tblTmp)'+?@strOrder
????????????????????????IF?@strWhere?!=?''
????????????????????????SET?@strSQL?=?'Select?TOP?'?+?str(@PageSize)?+'?'+@strGetFields+?'?FROM?['
????????????????????????+?@tblName?+?']?Where?['?+?@fldName?+?']'?+?@strTmp?+?'(['
????????????????????????+?@fldName?+?'])?FROM?(Select?TOP?'?+?str((@PageIndex-1)*@PageSize)?+?'?['
????????????????????????+?@fldName?+?']?FROM?['?+?@tblName?+?']?Where?'?+?@strWhere?+?'?'
????????????????????????+?@strOrder?+?')?AS?tblTmp)?AND?'?+?@strWhere?+?'?'?+?@strOrder
????????????????????END
????????????END
????????EXEC?(@strSQL)
????SET?NOCOUNT?OFF
GO
記錄一下,與大家分享,歡迎糾錯。
來源:http://www.dezai.cn/blog/article.asp?id=199
轉載于:https://www.cnblogs.com/eastjazz/archive/2008/06/05/1214254.html
總結
以上是生活随笔為你收集整理的多条件组合查询+分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql列横排
- 下一篇: 老干妈烧猪脚怎么做好吃