请教free form datawinow 分页打印

delphihelp 2010-01-09 11:17:25
free form 形式的 datawindow,只有一条记录,由于dw中还有些其它文本,这条记录 必须打印在多页上,请问怎么分页?

dw_print.modify(" datawindow.print.page.range = '"+ ls_page +"'") 对 freeform 形式的dw好像是不起作用的。期待高手解答~~
...全文
154 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphihelp 2010-01-13
  • 打赏
  • 举报
回复
没辙了,给分吧
pb8 2010-01-12
  • 打赏
  • 举报
回复
呵呵,如果这样的话,
还是回到#6 + #8楼我和你讲的方式~~
delphihelp 2010-01-12
  • 打赏
  • 举报
回复
晕死啊,才明白,这样搞啊,这样搞也不行。我的dw是这样的,(一条记录freeform形式,都在一个dw里面)

——————————————————————————————————————————————
文本文本文本。。。。。。。。

。。。。。。。一条记录的第一个字段 “I D” 。。。。。。。

文本,文本。。。。。。。。。。。。。。。。。。。。。。
。。。。。。第一页结束

第二页开始。。。。。文本。。。

文本。。。。。。。一条记录的第二个字段 “data”

第二页结束。。。。。。


————————————————————————————————————————————

怎样单独打印第一页和第二页?包括dw里面的文本和数据。dw.print()的时候,不管文本有多长,只要是freeform都认为是1页内容。
pb8 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 delphihelp 的回复:]
搞了半天,ids_print怎么赋值?
[/Quote]
按你的需求,把id放到第一行,再insertrow
把data的值放到第二行~~
delphihelp 2010-01-12
  • 打赏
  • 举报
回复
搞了半天,ids_print怎么赋值?
delphihelp 2010-01-12
  • 打赏
  • 举报
回复
16楼的好像有点门道,我只需打印一行,
4. 在打印事件中: ids_Print.ReSet()
ids_Print.InsertRow(0)

// 赋值一下 ,如果是要打印多行 ,就进行多行赋值 ,插入一行 ,就赋值一行
ids_Print.Print()
怎么赋值?我原来的那个dw?
eviler 2010-01-11
  • 打赏
  • 举报
回复
如果要列转行 ,建议:

1. 数据库中建立试图 v_Print
Create Or Replace View v_Print as
Select Decode(b.rn ,1,a.Id,a.Data)DataCol ,a.Id
From 你的表 a ,(Select RowNum Rn From Dual Connect By RowNum < 3) b
Order By a.Id ,B.Rn
2. 使用这个试图建立数据窗口对象,这样查询出来的数据 就是
1行 id ,1行 data ,1行 id, 1行 data …… ,这样就好搞了
eviler 2010-01-11
  • 打赏
  • 举报
回复
如果是只是打印很简单
1. 建立一个外局数据源数据窗口 d_Print_DataObject, 就使用一列 ,类型 string ,长度 4000
2. 在窗口中定义实例变量 ids_Print
3. Open 事件 ids_Print = Create DataStore
ids_Print.DataObject = ‘d_Print_DataObject’

4. 在打印事件中: ids_Print.ReSet()
ids_Print.InsertRow(0)

// 赋值一下 ,如果是要打印多行 ,就进行多行赋值 ,插入一行 ,就赋值一行
ids_Print.Print()
pb8 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 delphihelp 的回复:]
通过SQL把列值转化为行值??关注这个方法

表结构没什么。第一列ID,第二列data。就说说这两列的转换?
[/Quote]

列值要转为行值需要根据你的结构来的,原理如下:
select 0 as col_type,id as newdata,id+data as mysn
union
select 1 as col_type,data as newdata,id+datas mysn

可以通过mysn来检索数据就可以了,通过sort by col_type这样id就在前data在后了

列值转行值与行值转列值都是根据具体的表结构来的,一般会用到case when之类的语句进行分隔~~




delphihelp 2010-01-11
  • 打赏
  • 举报
回复
通过SQL把列值转化为行值??关注这个方法

表结构没什么。第一列ID,第二列data。就说说这两列的转换?
pb8 2010-01-10
  • 打赏
  • 举报
回复
呵呵,你的需求比较有意思,你的表结构贴一下,这样的话你可以通过SQL把列值转化为行值再进行打印~~
delphihelp 2010-01-10
  • 打赏
  • 举报
回复
再详细解释一下吧

把我的问题打个比方:

比如我的 datawindow 是 freeform 形式的,这个 窗口中retrieve 一条数据,有两个字段,第一个字段是ID,第二个字段是Data。ID在这个数据窗口最上面,Data在最下面,距离很长,预览的时候,id在第一页,data在第二页。

现在我要单独打印第二页。data所在的页面,第一页不打印


pb8 2010-01-10
  • 打赏
  • 举报
回复
News page on group的作用就是在有新组时分面,呵呵,有多行时肯定会分的,楼主先理解上面讲的方法~~
delphihelp 2010-01-10
  • 打赏
  • 举报
回复
打印出来还是全部
delphihelp 2010-01-10
  • 打赏
  • 举报
回复
选择了,意思是一页建一个计算字段?
pb8 2010-01-09
  • 打赏
  • 举报
回复
创建分组,如果你一行一组就可以建个计算字段,使用getrow()作为分组条件
delphihelp 2010-01-09
  • 打赏
  • 举报
回复
没有发现有这个属性啊
pb8 2010-01-09
  • 打赏
  • 举报
回复
你设置的rangle的作用就是类似于打印设置中的指定打印页码范围

你建个数据窗口,设置一下刚我说的那个属性就知道效果了
delphihelp 2010-01-09
  • 打赏
  • 举报
回复
预览的时候 看到的是多页,如a4纸,打印就全部打出来了,比如我想要单独打印第二页。

实际上是一条freeform形式的数据,
delphihelp 2010-01-09
  • 打赏
  • 举报
回复
能详细些吗?
加载更多回复(3)

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧