• <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| 18成禁人视频免费网站| 亚洲欧洲国产精品你懂的| 日韩内射激情视频在线播放免费 | 免费一级毛片正在播放| 亚洲AV无码专区在线电影成人| 成人免费看黄20分钟| 亚洲午夜一区二区三区| 免费理论片51人人看电影| 亚洲第一综合天堂另类专 | 91精品国产免费久久久久久青草 | 亚洲av永久无码一区二区三区| 热久久精品免费视频| 黄页网站在线观看免费| AV在线亚洲男人的天堂| 在线涩涩免费观看国产精品 | 亚洲AV日韩AV永久无码免下载| 大地资源网高清在线观看免费| 亚洲综合精品一二三区在线| 亚洲人成在线免费观看| 亚洲日本VA中文字幕久久道具| 国产在线98福利播放视频免费| 亚洲阿v天堂在线2017免费| 亚洲Av无码精品色午夜 | 最近中文字幕无免费| 中中文字幕亚洲无线码| 大胆亚洲人体视频| 青青草原1769久久免费播放| 亚洲人成人77777网站不卡| 免费一级国产生活片| 久久国产精品萌白酱免费| 亚洲va乱码一区二区三区| 免费不卡中文字幕在线| 18禁超污无遮挡无码免费网站| 亚洲国产成a人v在线观看| 亚洲男人的天堂一区二区| 蜜臀98精品国产免费观看| 风间由美在线亚洲一区| 亚洲国产精品lv|