以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  话说word报表想加一些非生成的文字,只要第一篇有,只出现一次。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97157)

--  作者:guimingze
--  发布时间:2017/3/7 10:11:00
--  话说word报表想加一些非生成的文字,只要第一篇有,只出现一次。
比如设置数据后  word报表生成的是一条条的数据,但是   比如我希望加 一句话或者一篇话,好好学习天天向上,但是每篇、每条都是好好学习天天向上,我只想让好好学习天天向上在第一篇出现一次,且只出现一次,如何实现?
图片点击可在新窗口打开查看此主题相关图片如下:q4m9g{@97d)qor(@n7j@yg.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2017/3/7 10:27:00
--  
做两个模版,第一行按照这个模版生成,第二个按照其他模版生成。

反正用代码生成的话,模版随便选:



--  作者:guimingze
--  发布时间:2017/3/7 10:35:00
--  回复:(狐狸爸爸)做两个模版,第一行按照这个模版生...
有简单点的没啊,狐狸爸爸,   不会啊,能不能给个鼠标形式的操作啊?
--  作者:guimingze
--  发布时间:2017/3/7 10:55:00
--  回复:(狐狸爸爸)做两个模版,第一行按照这个模版生...
我尝试了,但是俩模板就不能在一个word显示啦。
--  作者:狐狸爸爸
--  发布时间:2017/3/7 14:20:00
--  
那就不要分开两个模板了,用一个模板,你可以我给你帮助的哪个连接,其中示例四可以满足。

示例四

Replace对模板的修改是全局的。
我们也可以用ReplaceOne修改模板,和Repalce不同,RepalceOne仅对下一条记录生效,需要和BuildOne配合使用,例如:

Dim tm As String  = ProjectPath & "Attachments\\订单.doc" \'指定模板文件
Dim 
fl As String = ProjectPath & "Reports\\订单.doc" \'指定目标文件
Dim 
wrt As New WordReport(Tables("订单"),tm,fl\'定义一个WordReport
Dim 
sum As Integer
For Each 
r As Row In Tables("订单").rows \'逐行生成报表
    
sum = sum + r("数量"\'逐行累计
    
wrt.ReplaceOne("[合计]",sum)
    
wrt.BuildOne(r)
Next

wrt
.Show() \'显示报表

这样生成报表的时候,每一条记录的合计,都是截止到此行为止的合计。


--  作者:狐狸爸爸
--  发布时间:2017/3/7 14:24:00
--  
套用你这里,大概就是:

Dim tm As String  = ProjectPath & "Attachments\\订单.doc" \'指定模板文件
Dim fl As String = ProjectPath & "Reports\\订单.doc" \'指定目标文件
Dim wrt As New WordReport(Tables("订单"),tm,fl) \'定义一个WordReport
Dim sum As Integer
Dim cnt As Integer
For Each r As Row In Tables("订单").rows \'逐行生成报表
    If cnt  > 0 Then
        wrt.ReplaceOne("文字内容","")
    End If
    cnt = cnt + 1
    wrt.BuildOne(r)
Next
wrt.Show() \'显示报表

--  作者:guimingze
--  发布时间:2017/3/9 21:26:00
--  回复:(狐狸爸爸)套用你这里,大概就是:Dim tm As ...
老师这个代码我对么?  应该放在报表事件里么?  放在beforebuild 里么?  我要生成的是word能放报表事件里么?
Dim tm As String  = ProjectPath & "常委会汇报.doc" \'指定模板文件
Dim fl As String = ProjectPath & "常委会汇报.doc" \'指定目标文件
Dim wrt As New WordReport(Tables("酝酿上会"),tm,fl) \'定义一个WordReport
Dim sum As Integer
Dim cnt As Integer
For Each r As Row In Tables("酝酿上会").rows \'逐行生成报表
    If cnt  > 0 Then
        wrt.ReplaceOne("42222222222222222222222222222222222222223333333333333333333333333333","")
    End If
    cnt = cnt + 1
    wrt.BuildOne(r)
Next
wrt.Show() \'显示报表

--  作者:有点色
--  发布时间:2017/3/10 2:18:00
--  
回复7楼,不需要写到报表事件里面去,单独做一个按钮,生成你的报表