• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 辦公軟件教程 > 詳細頁面

        mssql access top分頁辦法

        mssql access top分頁辦法

        更新時間:2022-05-09 文章作者:未知 信息來源:網絡 閱讀次數:

        Microsoft Office Access是由微軟發布的關系數據庫管理系統。它結合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項特點,是 Microsoft Office 的系統程序之一。Microsoft Office Access是微軟把數據庫引擎的圖形用戶界面和軟件開發工具結合在一起的一個數據庫管理系統。它是微軟OFFICE的一個成員, 在包括專業版和更高版本的office版本里面被單獨出售。2018年9月25日,最新的微軟Office Access 2019在微軟Office 2019里發布。

         mssql access top分頁方法

        雙top法相比于not in和max法,就是可以傳入一條sql語句來生成分頁sql語句,也可多字段排序;
        但是有利也有弊,它要求排序字段必須構成唯一記錄,且select后的字段列表中,不允許出現與排序字段同名的字段。
        雖然sql2k5及以上版本已經提供了rownum()來進行分頁處理,但是使用sql2k進行開發的還是較多的

        using system;
        using system.collections.generic;
        using system.text;

        /// <summary>
        /// 構造分頁后的sql語句
        /// </summary>
        public static class paginghelper
        {
            /// <summary>
            /// 獲取分頁sql語句,排序字段需要構成唯一記錄
            /// </summary>
            /// <param name="_recordcount">記錄總數</param>
            /// <param name="_pagesize">每頁記錄數</param>
            /// <param name="_pageindex">當前頁數</param>
            /// <param name="_safesql">sql查詢語句</param>
            /// <param name="_orderfield">排序字段,多個則用“,”隔開</param>
            /// <returns>分頁sql語句</returns>
            public static string createpagingsql(int _recordcount, int _pagesize, int _pageindex, string _safesql, string _orderfield)
            {
                //重新組合排序字段,防止有錯誤
                string[] arrstrorders = _orderfield.split(new char[] { ',' }, stringsplitoptions.removeemptyentries);
                stringbuilder sboriginalorder = new stringbuilder(); //原排序字段
                stringbuilder sbreverseo教程rder = new stringbuilder(); //與原排序字段相反,用于分頁
                for (int i = 0; i < arrstrorders.length; i++)
                {
                    arrstrorders[i] = arrstrorders[i].trim();  //去除前后空格
                    if (i != 0)
                    {
                        sboriginalorder.append(", ");
                        sbreverseorder.append(", ");
                    }
                    sboriginalorder.append(arrstrorders[i]);

                    int index = arrstrorders[i].indexof(" "); //判斷是否有升降標識
                    if (index > 0)
                    {
                        //替換升降標識,分頁所需
                        bool flag = arrstrorders[i].indexof(" desc", stringcomparison.ordinalignorecase) != -1;
                        sbreverseorder.appendformat("{0} {1}", arrstrorders[i].remove(index), flag ? "asc" : "desc");
                    }
                    else
                    {
                        sbreverseorder.appendformat("{0} desc", arrstrorders[i]);
                    }
                }

                //計算總頁數
                _pagesize = _pagesize == 0 ? _recordcount : _pagesize;
                int pagecount = (_recordcount + _pagesize - 1) / _pagesize;

                //檢查當前頁數
                if (_pageindex < 1)
                {
                    _pageindex = 1;
                }
                else if (_pageindex > pagecount)
                {
                    _pageindex = pagecount;
                }

                stringbuilder sbsql = new stringbuilder();
                //第一頁時,直接使用top n,而不進行分頁查詢
                if (_pageindex == 1)
                {
                    sbsql.appendformat(" select top {0} * ", _pagesize);
                    sbsql.appendformat(" from ({0}) as t ", _safesql);
                    sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
                }
                //最后一頁時,減少一個top n 
                else if (_pageindex == pagecount)
                {
                    sbsql.append(" select * from ");
                    sbsql.append(" ( ");
                    sbsql.appendformat(" select top {0} * ", _recordcount - _pagesize * (_pageindex - 1));
                    sbsql.appendformat(" from ({0}) as t ", _safesql);
                    sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
                    sbsql.append(" ) as t ");
                    sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
                }
                //前半頁數時的分頁
                else if (_pageindex < (pagecount / 2 + pagecount % 2))
                {
                    sbsql.append(" select * from ");
                    sbsql.append(" ( ");
                    sbsql.appendformat(" select top {0} * from ", _pagesize);
                    sbsql.append(" ( ");
                    sbsql.appendformat(" select top {0} * ", _pagesize * _pageindex);
                    sbsql.appendformat(" from ({0}) as t ", _safesql);
                    sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
                    sbsql.append(" ) as t ");
                    sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
                    sbsql.append(" ) as t ");
                    sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
                }
                //后半頁數時的分頁
                else
                {
                    sbsql.appendformat(" select top {0} * from ", _pagesize);
                    sbsql.append(" ( ");
                    sbsql.appendformat(" select top {0} * ", ((_recordcount % _pagesize) + _pagesize * (pagecount - _pageindex)));
                    sbsql.appendformat(" from ({0}) as t ", _safesql);
                    sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
                    sbsql.append(" ) as t ");
                    sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
                }

                return sbsql.tostring();
            }

            /// <summary>
            /// 獲取記錄總數sql語句
            /// </summary>
            /// <param name="_n">限定記錄數</param>
            /// <param name="_safesql">sql查詢語句</param>
            /// <returns>記錄總數sql語句</returns>
            public static string createtopnsql(int _n, string _safesql)
            {
                return string.format(" select top {0} * from ({1}) as t ", _n, _safesql);
            }

            /// <summary>
            /// 獲取記錄總數sql語句
            /// </summary>
            /// <param name="_safesql">sql查詢語句</param>
            /// <returns>記錄總數sql語句</returns>
            public static string createcountingsql(string _safesql)
            {
                return string.format(" select count(1) as recordcount from ({0}) as t ", _safesql);
            }
        }


        Microsoft Access在很多地方得到廣泛使用,例如小型企業,大公司的部門。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲人成电影在在线观看网色| 亚洲精品黄色视频在线观看免费资源| 亚洲熟妇无码八AV在线播放| 日韩亚洲人成网站| 毛片免费视频在线观看| 国产精品亚洲精品青青青| 麻豆一区二区免费播放网站 | 亚洲成a人片在线播放| 免费成人福利视频| 亚洲麻豆精品果冻传媒| 亚洲一级毛片免费在线观看| 亚洲免费在线视频播放| 日韩成全视频观看免费观看高清| 亚洲愉拍一区二区三区| 国产精品免费一级在线观看| 九九免费精品视频在这里| 国产av无码专区亚洲av果冻传媒 | 亚洲丁香色婷婷综合欲色啪| 一级毛片免费观看不卡的| 亚洲电影在线播放| 在线免费观看一区二区三区| 亚洲乱码日产精品一二三| 全部免费a级毛片| 亚洲一区二区久久| 国产美女精品视频免费观看| 一级毛片高清免费播放| 亚洲今日精彩视频| 日韩在线视频免费看| 国产国产人免费人成成免视频| 亚洲午夜免费视频| 成人毛片免费视频| jizz免费在线观看| 亚洲精品mv在线观看| 免费看少妇作爱视频| 老司机精品免费视频| 亚洲免费中文字幕| 中文字幕人成人乱码亚洲电影| 亚洲第一网站免费视频| 国产亚洲精品美女久久久久 | 亚洲色偷偷偷鲁综合| 免费毛片a在线观看67194|