以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何用代码找到集合的内容?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188133)

--  作者:hrw68529
--  发布时间:2023/9/4 11:14:00
--  [求助]如何用代码找到集合的内容?
以下代码中,想生成word套打,生成“主项”列集合后,想按主项列内容,进行列表,不知道怎么用代码写,只好用字符串内容代替,这样的话,如果“主项”内容变化后,得从写代码,如何直接引用集合中的字符串来进行判断,谢谢。
代码如下:划线的地方是不知道怎么解决的地方。

Dim tm As String  = ProjectPath & "Attachments\\年度重点工作落实情况汇报.doc"

Dim rs As Row = Tables("年度重点工作").Current

Dim fl As String = ProjectPath & "年度重点工作\\落实情况报告" & rs("年度") & "年度重点工作落实情况报告" &"(" & Format(Now(), "yyyy.M.d.hh.mm") &")" &" .doc"

Dim wrt As New WordReport(Tables("年度重点工作"),tm,fl) \'定义一个WordReport

wrt.Replace("[计数]",DataTables("年度重点工作").Compute("count(项目序号)")) \'用代码计算出总的销售数量并替换模板中的合计标记

Dim str1 As String = ""

Dim str2 As String = ""

Dim str3 As String = ""

Dim ls As List(Of String()) = DataTables("年度重点工作").GetValues("主项|重点工作内容|责任领导|责任单位|配合单位|完成时限|进展情况", Tables("年度重点工作").Filter,"序号")

For i As Integer = 0 To ls.Count - 1

    Dim s() As String = ls(i)

    Dim flag As String =  vbcrlf & ""

    If s(0) = "一、信阳市委常委会2023年重点工作"  Then

        str1 &= s(1) & flag & "责任领导" & s(2) & flag & "责任单位" & s(3) & flag & "配合单位" & s(4) & flag & "完成时限" & s(5) & flag  &"进展情况"& s(6) & flag

ElseIf s(0) = "二、市政府工作报告中《2023年重点工作任务分解方案》重点工作" Then

        str2 &= s(1) & flag & "责任领导" & s(2) & flag & "责任单位" & s(3) & flag & "配合单位" & s(4) & flag & "完成时限" & s(5) & flag  &"进展情况"& s(6) & flag

ElseIf s(0) = "三、局重点工作" Then

        str3 &= s(1) & flag & "责任领导" & s(2) & flag & "责任单位" & s(3) & flag & "配合单位" & s(4) & flag & "完成时限" & s(5) & flag  &"进展情况"& s(6) & flag

    End If

Next

wrt.Replace("[列表1]", str1)

wrt.Replace("[列表2]", str2)

wrt.Replace("[列表3]", str3)

wrt.Build() \'生成报表

wrt.Show() \'显示报表

 



--  作者:有点蓝
--  发布时间:2023/9/4 11:28:00
--  
增加一个【主项编号】列,使用数字编号,比如1、2、3....
然后判断改为

Dim ls As List(Of String()) = DataTables("年度重点工作").GetValues("主项编号|主项|重点工作内容|责任领导|责任单位|配合单位|完成时限|进展情况", Tables("年度重点工作").Filter,"序号")

For i As Integer = 0 To ls.Count - 1

    Dim s() As String = ls(i)

    Dim flag As String =  vbcrlf & ""

    If s(0) = "1"  Then


--  作者:hrw68529
--  发布时间:2023/9/4 11:34:00
--  
好的,谢谢