以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  填充不为空值的列名并打印  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=191965)

--  作者:deliangzhaoe
--  发布时间:2024/5/19 12:08:00
--  填充不为空值的列名并打印
从表A中选择有值的列,将列名填充到表B的C列(表B的其他列均空白)列名前加一个复选框,列名后加两个空格分隔或一个分隔符分隔。如下图:
表A:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240519115432.png
图片点击可在新窗口打开查看
表B:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240519120216.png
图片点击可在新窗口打开查看
打印表B的效果。
现在代码如下;
\'页面设置
Dim doc As New PrintDoc \'定义一个报表
Doc.PageSetting.LeftMargin = 15
Doc.PageSetting.BottomMargin = 15
Doc.PageSetting.TopMargin = 15
Doc.PageSetting.rightMargin = 15
Dim rx8 As prt.RenderText
\'设置二级标题
rx8 = New prt.RenderText
rx8.Style.Font = New Font("宋体", 16)
rx8.Style.Spacing.Bottom = 3
Dim dr As String = Forms("mainform").controls("劳保发放企业名称").value
rx8.text = dr & vbcrlf & "劳动防护用品发放记录" \'表标题显示企业名称
rx8.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'标题水平居中
doc.Body.Children.Add(rx8)

Dim rt As New prt.RenderTable \'定义一个新表格
rt.Rows.Count = 24 \'设置总行数
rt.Height = 240 \'设置表格的高度
rt.Cols(0).Width = 13 \'设置列的宽度
rt.Cols(1).Width = 62
rt.Cols(2).Width = 10
rt.Cols(3).Width = 15
Dim ColNames As String() = New String(){"发放日期","劳动防护用品名称","数量","领取人签字"}
rt.Style.Font = New Font("仿宋", 13)
For c As Integer = 0 To ColNames.Length - 1 \'逐列设置和填入内容
    rt.Cells(0,c).Text = ColNames(c) \'列名作为标题
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'标题内容水平居中
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.center \'数据水平靠右
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.black) \'灰色网格线
rt.CellStyle.Spacing.All = 0.5 \'单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All \'利用行组,将第一行设为表头.
doc.Body.Children.Add(rt) \'将表格加入到报表
doc.Preview()

如何向表B的第二列填充表A不为空列的列名,不会写代码,请老师帮忙,谢谢!

--  作者:有点蓝
--  发布时间:2024/5/19 20:33:00
--  
dim s as string
for each c as col in tables("某表").cols
if c.name like "一般防护用品_*" then
if tables("某表").comoute("count(" & c.name & ")", c.name & " is not null") > 0 then
s = s & ";" & c.name
end if
end if
next
msgbox(s)