以文本方式查看主题

-  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=169615)

--  作者:哈哈哥
--  发布时间:2021/6/23 9:48:00
--  word 报表给生成的报表中段落编号问题
求助。现已生成了如下的word 报表,段落之间有多余空行,下步需要对生成的报表段落进行操作,删除多余空行,并将特定段落之间的段落进行自动从1生成序号,空行段落不生成序号,保证有文字的段落序号连续。现生成的报表如下:
销售部:
张三


李四
小王

小张
服务部:

哈哈

小陈

等等

销售部和服务部之类为已经实现报表中只出现一次,
但是底下的段落有空行,且无法生成连续序号,想要的效果如下:
销售部
1、张三
2、李四
3、小王
4、小张
服务部:
1、哈哈
2、哈
3、小陈
4、等等


请问代码怎么写?谢谢!

--  作者:有点蓝
--  发布时间:2021/6/23 10:04:00
--  
查询数据的时候直接过滤掉空行不就行了,,然后在输出报表

tables("表A").filter = "姓名 is not null"

--  作者:哈哈哥
--  发布时间:2021/6/23 10:24:00
--  
不是数据表里有空行,而是生成报表时因先判断,不满足条件的生成了空行。
--  作者:有点蓝
--  发布时间:2021/6/23 10:37:00
--  
那就生成报表前把不满足条件的数据筛选掉呀
--  作者:哈哈哥
--  发布时间:2021/6/23 12:38:00
--  
请教一下,在选中行中先筛选出符合条件的行,再生成报表,最开头的代码怎么写。比如我先选中了10行,再筛选出[部门]这一列中等于“销售部”的行,然后再生成报表,代码该怎么写?数据表中[部门]这一列一共只有“销售部”、“服务部”、“联络部”等固定的四个部门,。最终需要行成的报表如下, 求助。现已生成了如下的word 报表,段落之间有多余空行,下步需要对生成的报表段落进行操作,删除多余空行,并将特定段落之间的段落进行自动从1生成序号,空行段落不生成序号,保证有文字的段落序号连续。现生成的报表如下: 销售部: 1、张三 2、李四 3、小王 4、小张 服务部: 1、哈哈 2、哈 3、小陈 4、等等
--  作者:哈哈哥
--  发布时间:2021/6/23 12:41:00
--  
刚才没说清楚,重发一下 请教一下,在选中行中先筛选出符合条件的行,再生成报表,最开头的代码怎么写。比如我先选中了10行,再筛选出[部门]这一列中等于“销售部”的行,然后再生成报表,代码该怎么写?数据表中[部门]这一列一共只有“销售部”、“服务部”、“联络部”等固定的四个部门,。最终需要行成的报表如下 : 
销售部:
 1、张三 
2、李四 
3、小王
 4、小张
 服务部: 
1、哈哈
 2、哈 
3、小陈 
4、等等

--  作者:哈哈哥
--  发布时间:2021/6/23 12:54:00
--  
总体思路就是在表里先选中的N行中,先筛选出[部门]这一列等于“销售部”的行,依次生成内容,再筛选出[部门]这一列等于“服务部”的行,依次生成内容,再筛选出[部门]这一列等于“联络部”的行,依次生成内容等,最终四个部分都在一个word 里面,最终的报表没有空行,每个部分都从1开始产生序列号,最终效果如下:    求助,这样的代码该怎么写
销售部:
 1、张三 
2、李四 
3、小王
 4、小张
 服务部: 
1、哈哈
 2、哈 
3、小陈 
4、等等

--  作者:有点蓝
--  发布时间:2021/6/23 13:38:00
--  
dim lst as New List(of string)
For Each r As Row In Tables("表A").GetCheckedRows
   lst.add(r("_Identify"))
Next
dim s as string
for each s1 as string in dataTables("表A").getvalues("部门","_Identify in (" &string.join(",",lst.toarray)  & ")")
s  = s & vbcrlf & s1
dim idx as integer = 1
for each dr as datatrow in dataTables("表A").select("部门=\'" & s1 & "\'")
s = s & vbcrlf & idx & "," & dr("姓名")
idx = idx + 1
next
next
msgbox(s)

--  作者:哈哈哥
--  发布时间:2021/6/23 23:18:00
--  

for each dr as datatrow in dataTables("表A").select("部门=\'" & s1 & "\'")   这行代码显示错误,不知怎么改。完整代码是不是底下加上生成报表的代码就可以

--  作者:哈哈哥
--  发布时间:2021/6/24 1:33:00
--  
还有就是,由于生成报表后无端多了很多空行,但是加入下段代码后,仅能删除部分空行,还是有些空行无法删除,不明白是什么原因。求助!
Dim app As New MSWord.Application
        try
            Dim doc = app.Documents.Open(fl)           
            For Each k As object In doc.Paragraphs
                k.Range.Select
                If Len(k.Range.text) = 1 Then k.Range.Delete
                Do
                    If app.Selection.Characters(1).Text = Chr(10) Then app.Selection.Characters(1).Delete
                Loop Until app.Selection.Characters(1).Text <> Chr(10)
            Next
            doc.save                    
        catch ex As exception
            msgbox(ex.message)
            app.quit
        End try
        wrt.show()
        ShowAppWindow("-报表.doc",2)   ’显示在最前端