• <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在很多地方得到廣泛使用,例如小型企業,大公司的部門。

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲日韩在线视频| 五月天婷婷免费视频| 亚洲成a人片在线观看中文!!! | 亚洲成a人片77777kkkk| 亚洲综合久久综合激情久久| 久久九九全国免费| 婷婷亚洲久悠悠色悠在线播放 | 亚洲第一成年免费网站| 亚洲一区动漫卡通在线播放| 中国人xxxxx69免费视频| 男男AV纯肉无码免费播放无码| 亚洲电影日韩精品 | 日韩亚洲国产综合高清| 一区二区三区精品高清视频免费在线播放 | 亚洲婷婷在线视频| 在线观看成人免费视频不卡| 最新亚洲成av人免费看| ass亚洲**毛茸茸pics| 国内自产少妇自拍区免费| 亚洲av无码专区在线电影| 亚洲国产中文字幕在线观看| a级毛片免费完整视频| 亚洲欧洲日本精品| 永久黄网站色视频免费观看| yy一级毛片免费视频| 亚洲AV无码国产丝袜在线观看 | www免费插插视频| 亚洲人成77777在线播放网站| 亚洲精品蜜夜内射| 亚洲AV无码专区日韩| 日韩精品无码免费专区午夜 | 老外毛片免费视频播放| 中文字幕人成人乱码亚洲电影| 久久一区二区三区免费播放| 亚洲区小说区图片区| 免费人成黄页在线观看日本| 中文字幕亚洲精品无码| 中文字幕久久亚洲一区 | 自拍偷区亚洲国内自拍| 亚洲乱码国产一区网址| 亚洲一级免费毛片|