如何实现上一条、下一条的功能

      在做应用程序的时候,经常会遇到需要实现上一条、下一条的功能,例如,一个CS的项目中,首先有一个列表窗体,选中列表中的一项后点击“编辑”按钮,会进入到一个编辑窗体,在这个窗体上有可以需要使用上一条、下一条这样的功能,那么如何来实现它呢?

      思路:其实可以把它看成一种分页,只不过这种分页是一页一条而已。另外,还需要有一个定位,即当前是哪一条记录。解决办法其实只需要加一个where条件即可。请看下面的语句:

上一条:
select top 1 * from t_subject where subID not in
(select top 1 subid from t_subject where subid=102 order by subid ) order by subid

下一条:(反向排序即可)

select top 1 * from t_subject where subID not in
(select top 1 subid from t_subject where subid=102 order by subid desc ) order by subid desc

       注:1. 其中的102表示的是当前的记录,实际使用时可以通过传参实现。

             2. 分页方法有很多种,可以使用其他的分页实现方法。

       另一种思路(哈哈,觉得有点笨):如果表中有一个连续的标识列字段,那么每次取的时候就可以直接将ID+1或ID-1了。但是,即使表中有标识列,也不可能保证编号是连续的,怎么办呢?可以创建一个临时表,表中除了包含原来表中的内容外,再使用IDENTITY()函数为其添加一个标识列,这样应该就OK了。

 

原文地址:https://www.cnblogs.com/lgzslf/p/1518058.html