水晶报表怎么统计每页的条数

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>

注:此处到最后一页,继续点击下一页会跳转至首页。

效果图如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于水晶报表怎么统计每页的条数的主要内容,如果未能解决你的问题,请参考以下文章

获取水晶报表中每页字段的总和

2019-1-17水晶报表技巧总结

VB.net中如何制作水晶报表?

C#怎么生成水晶报表

Winform中怎么使用水晶报表?

Visual Studio 2010 里面的水晶报表怎么弄?