在Access中模拟sql server存储过程翻页

sjq985211

sjq985211

2016-02-19 18:20

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的在Access中模拟sql server存储过程翻页教程,一起来看看吧!超容易上手~

sql server中翻页存储过程:
Create           PROC blog_GetPagedPosts
(
 @PageIndex int,
 @PageSize int,
 @BlogID   int=0,
 @PostType int=-1,
  @CategoryID int=-1,
  @Hiding     bit =0,
  @Count    int output
       
)
as
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
SET @PageLowerBound = @PageSize * @PageIndex - @PageSize
SET @PageUpperBound = @PageLowerBound + @PageSize + 1

Create Table #IDs
(
 TempID int IDENTITY (1, 1) NOT NULL,
 EntryID int not null
)
Insert  into #IDs(EntryID)  select DISTINCT [ID] from view_Content  where CategoryID=@CategoryID and blogID=@BlogID   order by [ID] desc
SELECT  vc.*
FROM   View_Content vc
     INNER JOIN #IDS tmp ON (vc .[ID] = tmp.EntryID)
WHERE  tmp.TempID @PageLowerBound
 AND tmp.TempID @PageUpperBound and vc.Hiding=0
ORDER BY tmp.TempID
SELECT @Count=COUNT(*) FROM  #IDS
SELECT @Count=COUNT(*) FROM  #IDS
DROP TABLE #IDS
return @Count
GO 

在Access中由于不支持存储过程,不能建立临时表只能在程序中实现
Access中实现如下,这也是我在myblog Access版中使用的:
public ListDayBook GetPagedPost(PagedPost p, out int TotalRecords)
        {
            ListDayBook list = new ListDayBook();

            using (OleDbConnection conn = GetOleDbConnection())
            {
                StringBuilder sql = new StringBuilder();
                sql.AppendFormat("select  [ID] from blog_Content as p ");//构造查询条件
                if (p.CategoryID 0)
                {
                    sql.AppendFormat(",blog_Categories AS c, blog_Links AS l WHERE c.CategoryID=l.CategoryID and (p.ID=l.PostID ) and c.CategoryID={1} and p.BlogID={0}  ",p.BlogID, p.CategoryID);
                }
                else
                {
                    sql.AppendFormat(" where p.blogID={0} ", p.BlogID);
                }
                if (p.PostType != PostType.Undeclared)
                {
                    sql.AppendFormat(" and p.PostType={0} ", (int)p.PostType);
                }
                sql.Append(" order by p.[DateUpdated] desc");
               // NetDiskContext.Current.Context.Response.Write(sql.ToString());
                //NetDiskContext.Current.Context.Response.End();
                OleDbCommand MyComm = new OleDbCommand(sql.ToString(), conn);
                Listint IDs = new Listint(); //获取主题ID列表
                conn.Open();
                using (OleDbDataReader dr = MyComm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        IDs.Add((int)dr[0]);
                   
                    }
                }
              
                TotalRecords=IDs.Count;//返回记录总数
                if (TotalRecords 1)
                    return list;
                int pageLowerBound = p.PageSize * p.PageIndex - p.PageSize;//记录索引
                int pageUpperBound = pageLowerBound + p.PageSize ;
                StringBuilder sb = new StringBuilder();
                if (TotalRecords = pageLowerBound)
                    for (int i = pageLowerBound; i TotalRecords && i pageUpperBound; i++)
                    {
                        sb.AppendFormat("{0},", IDs[i]);//构造ID in() 条件,取其中一页
                    }
                else return list; //如没有记录返回空表
                if(sb.Length1)
                sb.Remove(sb.Length - 1, 1);//删除最后一个逗号
            MyComm.CommandText = string.Format("SELECT b.* , c.Account as Account FROM blog_Content b, Blog_Config  c where b.BlogID=c.BlogID and b.[ID] in ({0}) order by b.dateadded desc", sb.ToString());
                using (OleDbDataReader dr = MyComm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        list.Add(DataHelp.LoadDayBook(dr));
                    }
                }
                return list;
            }
         }

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

 转帖请注明出处..深Q

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

在Access中模拟sql server存储过程翻页

编程语言 网络编程
在Access中模拟sql server存储过程翻页

在SQL Server存储过程中执行DTS包

SQLServer
在SQL Server存储过程中执行DTS包

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在SQL Server 2005中如何列出所有存储过程

编程语言 网络编程
在SQL Server 2005中如何列出所有存储过程

在SQL Server的存储过程中调用Com组件

SQLServer
在SQL Server的存储过程中调用Com组件

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java中调用SQL Server存储过程示例

编程语言 网络编程
Java中调用SQL Server存储过程示例

SQL Server 存储过程解析

编程语言 网络编程
SQL Server 存储过程解析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何将我的文件上传到服务器?

如何将我的文件上传到服务器?

实例讲解Access数据库在线压缩的实现方法

实例讲解Access数据库在线压缩的实现方法
下拉加载更多内容 ↓