急!!!!!数据窗口分组后在分页每页打固定的行?每页固定行不足补空行,如何实现?

时间:2022-04-12 16:16:41
我现在是根据条件分组后然后在分页,每页打固定的行数,根据分组的条件每页打印的数据行数不一定,不满足固定行的要求就要补空行,我用了很多方法都不能实现,希望大家帮帮我,是每页都要补空行,不是最后一页。

17 个解决方案

#1


使Datawindow每页打印固定行 
---- 第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/20) <--这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。 

---- 第二步:定义分组,选择菜单Rows->Create Group... 

---- 按计算列字段分组,并一定将check box-->New Page On Group Break选中。 

---- 第三步:将此计算列设为不可视。 

---- 另外,如果需要最后一页不足补空行。也很简单,如下: 

long ll_pagerow = 6 //每页打印行数 
long ll_count, ll_row 
ll_count = dw_report.retrieve(...)
//取得现有报表的总行数 
ll_count = ll_pagerow - mod(ll_count, ll_pagerow) 
If ll_count < ll_pagerow Then 
for ll_row = 1 to ll_count 
dw_print.insertrow(0) //补足空行 
next 
end If 

#2


早晨,新意这么早就来上班了!

#3


mark ...

#4


引用 2 楼 sunfor 的回复:
早晨,新意这么早就来上班了!


呵呵,彼此,彼此

路过看看

#5


使Datawindow每页打印固定行  
---- 第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/20) <--这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。  

---- 第二步:定义分组,选择菜单Rows->Create Group...  

---- 按计算列字段分组,并一定将check box-->New Page On Group Break选中。  

---- 第三步:将此计算列设为不可视。  

---- 另外,如果需要最后一页不足补空行。也很简单,如下:  

long ll_pagerow = 6 //每页打印行数  
long ll_count, ll_row  
ll_count = dw_report.retrieve(...)
//取得现有报表的总行数  
ll_count = ll_pagerow - mod(ll_count, ll_pagerow)  
If ll_count < ll_pagerow Then  
for ll_row = 1 to ll_count  
dw_print.insertrow(0) //补足空行  
next  
end If  

学习

#6


我还有四个字段要做作为分组条件,这种方法我也试了不好使啊。

#7


根据这四个分组条件来分组然后分页打印,然后在判断每页有几行不足的补空行

#8


新意的是个思路,顶!

#9


可以先判断检索出来的数据有多少行,然后先往datawindow插入空行,最后再赋值

#10


retrieve后从第一页开始到最后一页,插一遍空行
for g = 0 to 9  //9为总页数减1,用page()取
    n = g* 5 + 1 //5为每页想要的行数,n每页第一行
    i= dw_1.getitemdecimal(n,"compute_1") // 计算列count(getrow() for group 1)的值,分组后每页行数
    if i < 5 then  
        for j = 1 to 5 - i  
            dw_1.insertrow(n+i) //从每页最后一行开始插。。
        next
         else
            //分组后某页行数大于5情况 看你需求结合新意哥写的自己想吧
    end if     

next

我用了,可以达到要求,你试下

#11


请问如果有多页时,如何打印页尾相关信息出来?
我的信息都放在SUMMARY上的,信息内容主要是相关提示内容的。
因现在凡是打印多于一页时,前一页就不会显示SUMMARY的内容出来。
谢谢!

#12


引用 11 楼 rocky2free 的回复:
请问如果有多页时,如何打印页尾相关信息出来?
我的信息都放在SUMMARY上的,信息内容主要是相关提示内容的。
因现在凡是打印多于一页时,前一页就不会显示SUMMARY的内容出来。
谢谢!


把summary里的内容放到footer区里

#13


前面说的都差不错了,用repeater控件也行,方法前面都说的差不多了,你总结一下就行了,祝你早点解决!!!

#14


我也在做这个,没法发只能向后台绑定的datatable里添加行了

#15


引用 10 楼 rudygod 的回复:
retrieve后从第一页开始到最后一页,插一遍空行
for g = 0 to 9 //9为总页数减1,用page()取
  n = g* 5 + 1 //5为每页想要的行数,n每页第一行
  i= dw_1.getitemdecimal(n,"compute_1") // 计算列count(getrow() for group 1)的值,分组后每页行数
  if i < 5 then  ……

这样可以,思路是没问题的,如果有必要还可以把分组依据列和排序列赋上值。

#16


一般 兩種方式:
1.detail 顯示 不是 自動 折行的情況,直接可以在 sql 語法 加入空 行 用 union all 處理
  如:一頁顯示5行,加 4 個 union all  可以用 嵌套 方式 此部份數據

2.每頁判斷 ,不足 插入分組行。

#17


另外一種方式 也可以 在 每行的 放一個空 嵌套報表 (參數根據 當前分組當前頁的行數 傳進做補充的行條件)

#1


使Datawindow每页打印固定行 
---- 第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/20) <--这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。 

---- 第二步:定义分组,选择菜单Rows->Create Group... 

---- 按计算列字段分组,并一定将check box-->New Page On Group Break选中。 

---- 第三步:将此计算列设为不可视。 

---- 另外,如果需要最后一页不足补空行。也很简单,如下: 

long ll_pagerow = 6 //每页打印行数 
long ll_count, ll_row 
ll_count = dw_report.retrieve(...)
//取得现有报表的总行数 
ll_count = ll_pagerow - mod(ll_count, ll_pagerow) 
If ll_count < ll_pagerow Then 
for ll_row = 1 to ll_count 
dw_print.insertrow(0) //补足空行 
next 
end If 

#2


早晨,新意这么早就来上班了!

#3


mark ...

#4


引用 2 楼 sunfor 的回复:
早晨,新意这么早就来上班了!


呵呵,彼此,彼此

路过看看

#5


使Datawindow每页打印固定行  
---- 第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/20) <--这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。  

---- 第二步:定义分组,选择菜单Rows->Create Group...  

---- 按计算列字段分组,并一定将check box-->New Page On Group Break选中。  

---- 第三步:将此计算列设为不可视。  

---- 另外,如果需要最后一页不足补空行。也很简单,如下:  

long ll_pagerow = 6 //每页打印行数  
long ll_count, ll_row  
ll_count = dw_report.retrieve(...)
//取得现有报表的总行数  
ll_count = ll_pagerow - mod(ll_count, ll_pagerow)  
If ll_count < ll_pagerow Then  
for ll_row = 1 to ll_count  
dw_print.insertrow(0) //补足空行  
next  
end If  

学习

#6


我还有四个字段要做作为分组条件,这种方法我也试了不好使啊。

#7


根据这四个分组条件来分组然后分页打印,然后在判断每页有几行不足的补空行

#8


新意的是个思路,顶!

#9


可以先判断检索出来的数据有多少行,然后先往datawindow插入空行,最后再赋值

#10


retrieve后从第一页开始到最后一页,插一遍空行
for g = 0 to 9  //9为总页数减1,用page()取
    n = g* 5 + 1 //5为每页想要的行数,n每页第一行
    i= dw_1.getitemdecimal(n,"compute_1") // 计算列count(getrow() for group 1)的值,分组后每页行数
    if i < 5 then  
        for j = 1 to 5 - i  
            dw_1.insertrow(n+i) //从每页最后一行开始插。。
        next
         else
            //分组后某页行数大于5情况 看你需求结合新意哥写的自己想吧
    end if     

next

我用了,可以达到要求,你试下

#11


请问如果有多页时,如何打印页尾相关信息出来?
我的信息都放在SUMMARY上的,信息内容主要是相关提示内容的。
因现在凡是打印多于一页时,前一页就不会显示SUMMARY的内容出来。
谢谢!

#12


引用 11 楼 rocky2free 的回复:
请问如果有多页时,如何打印页尾相关信息出来?
我的信息都放在SUMMARY上的,信息内容主要是相关提示内容的。
因现在凡是打印多于一页时,前一页就不会显示SUMMARY的内容出来。
谢谢!


把summary里的内容放到footer区里

#13


前面说的都差不错了,用repeater控件也行,方法前面都说的差不多了,你总结一下就行了,祝你早点解决!!!

#14


我也在做这个,没法发只能向后台绑定的datatable里添加行了

#15


引用 10 楼 rudygod 的回复:
retrieve后从第一页开始到最后一页,插一遍空行
for g = 0 to 9 //9为总页数减1,用page()取
  n = g* 5 + 1 //5为每页想要的行数,n每页第一行
  i= dw_1.getitemdecimal(n,"compute_1") // 计算列count(getrow() for group 1)的值,分组后每页行数
  if i < 5 then  ……

这样可以,思路是没问题的,如果有必要还可以把分组依据列和排序列赋上值。

#16


一般 兩種方式:
1.detail 顯示 不是 自動 折行的情況,直接可以在 sql 語法 加入空 行 用 union all 處理
  如:一頁顯示5行,加 4 個 union all  可以用 嵌套 方式 此部份數據

2.每頁判斷 ,不足 插入分組行。

#17


另外一種方式 也可以 在 每行的 放一個空 嵌套報表 (參數根據 當前分組當前頁的行數 傳進做補充的行條件)