水晶报表怎么统计每页的条数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水晶报表怎么统计每页的条数相关的知识,希望对你有一定的参考价值。
数据太多,想统计每页显示的条数,有了解的给指教下
你说的那个我试了,如果把记录条数放到“详细资料”里面会在每条数据下面都会有个记录条数
方法一:
例如每页显示20条记录:
1、选择[区段专家]。
2、选择[明细]。
3、选择[在之前新增分页]的公式按钮,输入以下公式
IF Remainder (RecordNumber, PageNumber*20+1 )=0 then
True
Else
False
把20改为一个参数,即用户输入的参数即可,如:PageNum。
方法二:
对数据进行分组,然后设置每组显示一页。
Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。最大的优势是实现了与绝大多数流行开发工具的集成和接口。最开始的开发公司名为Crystal Services Inc.,最初的软件的名称为Quik Reports,开发版本从1.0到3.0。1996年被Seagate Technology公司收购,集成在Crystal Decisions软件中。Crystal Decisions于2003年被Business Objects公司收购,开发了版本10与11(Crystal reports XI系列).2007年10月8日,Business Objects公司被SAP公司收购,开发了版本12,也就是Crystal reports2008版本。 参考技术A 我知道在FineReport报表中,可在需要统计的记录所在单元格如B3的右边单元格C3处写入公式=count(B3),就会对每条记录计数,然后在C4单元格写入公式=sum(C3),就会对刚刚的计数进行求和,还需要在下一行设置“行后分页”,这样得到的结果就是每页的记录数。水晶报表里面不知道行不行得通,楼主可以试一试。 参考技术B 如果记录放在"详细资料"那一节,右键选"节专家"
选中"详细资料",勾上"在后面页新建页"
在公式定义中写:
if onlastrecord then
false
else
if RecordNumber mod 18 =0 then
true
else
false
如上mod 18 也就是记录数模上18,等于0就是每页为18条本回答被提问者采纳
使用Servlet和JSP完成分页查询
工程目录结构:
1、分页可以使数据库表中的数据以表的形式显示出来,每页展示限制的数量,直观明了。
2、分页查询语句mysql为:select *from users limit ?,?;
第一个参数为从第一页开始跳过的条数,第二个参数为每页显示的条数
注:跳过的条数=(总页数-1)/每页的条数;
假设每页显示3条:Integer num=(total-1)/3;
ps.setInt(1,num);
ps.setInt(2,3);
3.持久层,在Dao包中写一个分页查询的方法UserDao,根据传入的总页数来进行查询,存放到一个users数组里面
代码如下:
public List<User> findAllPage(Integer total)
//数组
List<User> users=new ArrayList<User>();
//获取连接
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try
conn=DBUtils.getIntance();
String sql="select *from users limit ?,?";
ps=conn.preparedStatement(sql);
Integer num=(total-1)*3;//3表示每页显示三条数据
ps.setInt(1,num);
ps.setInt(2,3);
rs=ps.executeQuery();
while(rs.hasNext())
User user=new User();
int id=rs.getInt("id");
String un=rs.getString("username");
String pw=rs.getString("password");
String email=rs.getString("email");
user.setId(id);
user.setUsername(un);
user.setPassword(pwd);
user.setEmail(em);
users.add(user);
catch(Exception e)
//System.out.println("users:"+users);
//将用户返回
return users;
4、控制层,在ActionServlet里面来处理请求
1)获取到用户表的总条数,通过查询用户表所有记录,调用size()方法即可获取大小。
2)获取到jsp页面传过来的第几页
3)调用Dao包下的findAllPage()方法
4)将第几页和总页数放入到request对象里面,一同转发给listUsers.jsp
代码如下:
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
//处理分页请求
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf8");
UserDAO dao=new UserDAO();
int page=Integer.parseInt(request.getParameter("page"));
List<User> users=dao.findAllPage(page);
List<User> allUsers=dao.findAllUser();
int size=allUsers.size();//数据总条数
//下一页就是page+1,
System.out.println();
int total=size/3;//总页数
request.setAttribute("total", total);
request.setAttribute("page", page);
System.out.println(users.size());
request.setAttribute("users", users);
request.getRequestDispatcher("/myweb/listUsers.jsp").forward(request, response);
5、listUsers.jsp页面用来展示显现出来的列表,点击下一页
代码如下:
<%
Integer page1=(Integer)request.getAttribute("page");
if(page1==null)
page1=1;
request.setAttribute("page", page1);
else if(page1>=(Integer)request.getAttribute("total"))
//跳转到第一页
request.setAttribute("page", 0);
%>
<a href="<%=request.getContextPath()%>/action?page=1">首页</a>
<a href="<%=request.getContextPath()%>/action?page=<%= (Integer)request.getAttribute("page")+1%>">下一页</a>
注:此处到最后一页,继续点击下一页会跳转至首页。
效果图如下:
以上是关于水晶报表怎么统计每页的条数的主要内容,如果未能解决你的问题,请参考以下文章