Foxtable(狐表)用户栏目专家坐堂 → [求助]报表打印中公式问题


  共有5458人关注过本帖树形打印复制链接

主题:[求助]报表打印中公式问题

帅哥哟,离线,有人找我吗?
大雪山
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
[求助]报表打印中公式问题  发帖心情 Post By:2016/10/29 1:00:00 [显示全部帖子]

 

写的代码出错,想给报表中第二列序号自动加1 2 3.....,请老师修改指点一下.

 

                'rt.Cells(rt.Rows.Count-1,2).Text = dr1("sj")
               
                With Tables("ksap") '报表名
                    For ii As Integer = 0 To  .Rows.Count - 1
                        .Rows(ii)("sj") =  ii + 1

                    Next
                End With

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:crks.table


 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/10/29 20:15:00 [显示全部帖子]

老师能帮我再修改下就实现目标了.

 

 

 


图片点击可在新窗口打开查看此主题相关图片如下:现在显示.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:目标实现.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/29 20:17:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/10/30 10:54:00 [显示全部帖子]

怎么将现在的序号全部1,改成序号12345678?

 


 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/10/31 21:52:00 [显示全部帖子]

  有色部分是分栏打印部分,整合成左单右双,分两栏的模式,如图

 

 

 rt.Rows(rt.Rows.Count).Height = 7

    rt.Rows(rt.Rows.Count-1).Style.GridLines.Top = New prt.Linedef(0.2,clr)

    rt.Rows(rt.Rows.Count-1).Style.TextColor = clr

    rt.Rows(rt.Rows.Count-1).Style.Font = New Font("黑体", 10, FontStyle.Regular)

    rt.Cells(rt.Rows.Count-1,0).SpanCols = 2 '向右合并2列

    rt.Cells(rt.Rows.Count-1,0).Text = "考试日期"

    rt.Cells(rt.Rows.Count-1,2).Text = "考试时间"

    rt.Cells(rt.Rows.Count-1,3).Text = "试卷"

    rt.Cells(rt.Rows.Count-1,4).SpanCols = 3 '向右合并2列

    rt.Cells(rt.Rows.Count-1,4).Text = "课      程"

    rt.Cells(rt.Rows.Count-1,7).Text = "考试方式"

    rt.Cells(rt.Rows.Count-1,8).SpanCols = 2 '向右合并2列

    rt.Cells(rt.Rows.Count-1,8).Text = "考场号"

    rt.Cells(rt.Rows.Count-1,10).SpanCols = 2 '向右合并2列

    rt.Cells(rt.Rows.Count-1,10).Text = "座位号"

    rt.Cells(rt.Rows.Count-1,12).SpanCols = 4 '向右合并2列

    rt.Cells(rt.Rows.Count-1,12).Text = "考   室"

    rt.Cells(rt.Rows.Count-1,0).Style.GridLines.left = New prt.Linedef(0.5,clr)

    rt.Cells(rt.Rows.Count-1,12).Style.GridLines.Right = New prt.Linedef(0.5,clr)

    drs = DataTables("bbs").Select("buser = '" & dr("suser") & "'","btype,bresult")

    cnt = drs.Count

    mxh = Math.Max(35,cnt)

   

    Dim xuhao As Integer = 1

        Dim pdr As DataRow

    dt.DataRows.Clear

   

        If i Mod 2 = 1 Then

            pdr = dt.AddNew

            pdr("sid") = i

            pdr("sname") = dr("sname")

            pdr("suser") = dr("suser")

        Else

            pdr("sid1") = i

            pdr("sname1") = dr("sname")

            pdr("suser1") = dr("suser")

        End If

       

    Next

       

    For i As Integer = 0 To mxh - 1

        rt.Rows(rt.Rows.Count).Height = 5

        rt.Rows(rt.Rows.Count-1).Style.Font = New Font("宋体", 10, FontStyle.Regular)

        rt.Cells(rt.Rows.Count-1,0).SpanCols = 2 '向右合并2列

        rt.Cells(rt.Rows.Count-1,4).SpanCols = 3 '向右合并2列

        rt.Cells(rt.Rows.Count-1,8).SpanCols = 2 '向右合并2列

        rt.Cells(rt.Rows.Count-1,10).SpanCols = 2 '向右合并2列

        rt.Cells(rt.Rows.Count-1,12).SpanCols = 4 '向右合并2列

        rt.Cells(rt.Rows.Count-1,0).Style.GridLines.left = New prt.Linedef(0.5,clr)

        rt.Cells(rt.Rows.Count-1,12).Style.GridLines.Right = New prt.Linedef(0.5,clr)

        If i < cnt

            rt.Cells(rt.Rows.Count-1,3).Text = drs(i)("bresult")

            'rt.Cells(rt.Rows.Count-1,8).Text = drs(i)("考场号")

            'rt.Cells(rt.Rows.Count-1,10).Text = drs(i)("座位号")

            Dim dr1 As DataRow = DataTables("ksap").find("sub_id = '" & drs(i)("sub_id") & "'")

            If dr1 IsNot Nothing

                'rt.Cells(rt.Rows.Count-1,0).Text = format(dr1("btype"),"yyyy-MM-dd").Replace("0001-01-01","")

                rt.Cells(rt.Rows.Count-1,0).Text = xuhao

                xuhao = xuhao+1

               

                rt.Cells(rt.Rows.Count-1,2).Text = dr1("szmc")

                'rt.Cells(rt.Rows.Count-1,3).Text = dr1("sub_id")

                rt.Cells(rt.Rows.Count-1,4).Text = dr1("sj")

                rt.Cells(rt.Rows.Count-1,7).Text = dr1("kslx")

                rt.Cells(rt.Rows.Count-1,12).Text =dr1("ks")

            End If

        End If

    Next


图片点击可在新窗口打开查看此主题相关图片如下:hl8tw1n)q0~vadq(xy@fl7.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/31 21:52:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/11/1 9:45:00 [显示全部帖子]

序号分单双号,课程分二栏的成绩单按钮如何修改?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:crks (1).table

 


图片点击可在新窗口打开查看此主题相关图片如下:snap3.bmp
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:snap4.bmp
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/11/1 12:07:00 [显示全部帖子]

老师已经实现要求,如果将9楼文件,课程替换成班级名单,再能解决就非常满意了。我想了几天就是不知如何换成专业班级名单。

 

[此贴子已经被作者于2016/11/1 12:08:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/11/4 8:54:00 [显示全部帖子]

打印公式怎么修改?   问题 1. 页脚和日期同时共存, 2.A4 竖变横

 

 

Dim t As Table = CurrentTable
With Tables("student").PrintInfo
    '.PageHeader = "继续教育||"  '左
    .PageHeader = "|继续教育|"  '中
    .PageHeader = "||继续教育"  '右
    '.PageFooter = "第[PageNo]页,共[PageCount]页"  '页脚
    .PageFooter = "||[Today]|"
    '.PaperKind = 9 '纸张类型设为自定义  'A4
    .LeftMargin = 15  '左边距
    .RightMargin = 5  '右边距
    .TopMargin = 10  '上边距
    .BottomMargin = 10  '上边距
End With

T.Print(True,False)
msgbox(t.PrintInfo.SubTitle)


 回到顶部
帅哥哟,离线,有人找我吗?
大雪山
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:297 积分:2996 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2016/11/4 12:54:00 [显示全部帖子]

红字部分的页脚怎么加到这段代码中?

 

 

Dim doc As New PrintDoc '定义一个新报表
Dim rt As New prt.RenderTable '定义一个新表格
Dim tb As Table = Tables("student")
doc.PageSetting.Landscape = True '横向打印
Dim ColNames As New List(Of String)
For Each cl As Col In tb.Cols '排除隐藏列
    If cl.Visible Then
        ColNames.Add(cl.Name)
    End If
Next

Dim t As Table = CurrentTable
With Tables("student").PrintInfo


    .PageFooter =  "第[PageNo]页,共[PageCount]页"   &  " ||[Today]"  '页脚
  
End With

 


Dim top As Integer = getConfigValue("上边距",10)
Dim lft As Integer = getConfigValue("左边距",16)
Dim btm As Integer = getConfigValue("下边距",10)
Dim fl As Integer = getConfigValue("分栏距",6)
Dim zrs As Integer = 1
Dim dqh As Integer = Tables("student").Position
If getConfigValue("全部打印",True) = True
    zrs = DataTables("student").DataRows.Count
End If
Dim clr As Color = Color.White
If getConfigValue("填表模式",True) = False
    clr = Color.Black
End If
Dim s As String
Dim mxh,cnt As Integer
Dim dr As DataRow
Dim h As Integer = Top
'-------------------------------------------------------以下代码定义报表
'Dim doc As New PrintDoc() '定义一个报表
'Dim rt As New prt.RenderTable() '定义一个表格对象
Dim rx As New prt.RenderText '定义一个文本对象
Dim ra As New prt.RenderArea '定义一个容器
doc.PageSetting.Width = 210 '纸张宽度为210毫米
doc.PageSetting.Height = 297 '纸张高度为120毫米
doc.AutoRotate = False '禁止自动旋转打印内容
doc.PageSetting.Landscape = True '横向打印
Doc.PageSetting.TopMargin = top '设置上边距
Doc.PageSetting.LeftMargin = lft '设置左边距
Doc.PageSetting.BottomMargin = btm '设置下边距

Dim drs As List(Of DataRow)
For rn As Integer = 0 To zrs - 1
    If getConfigValue("全部打印",True) = True
        dqh = rn
    End If
   
    rt = New prt.RenderTable() '定义一个表格对象
    rx = New prt.RenderText '定义一个文本对象
    ra = New prt.RenderArea '定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
    ra.Width = "177mm"
    rt.Style.GridLines.All = New prt.LineDef(clr) '将网格线类型设为默认类型Color.White
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    rt.Style.Spacing.Top = 5 '表格和前面对象的垂直间隔为5毫米
    rt.Style.Spacing.Bottom = 5 '表和和后续对象的垂直间隔为5毫米
    rt.Style.Spacing.All = 2 '所有表格内边距为2mm


Next

 

 


rt.Width = "Auto" '表格宽度为自动,也就是等于各列设置宽度之和
rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
rt.Cells(0,0).text = "继续教育"
rt.Cells(0,0).SpanCols = 6 '合并第一行全部单元格,用于显示主标题
rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0,0).Style.Font = New Font("华文新魏",20.25,1,3,1,False) '设置主标题字体
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线?
rt.Rows(0).Style.Borders.Bottom = New prt.Linedef
For c As Integer = 0 To ColNames.Count - 1 '逐列设置和填入内容
    rt.Cells(1,c).Text = ColNames(c) '列名作为标题
    rt.Cells(1,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
    rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth '列宽等于实际列宽
    If tb.Cols(ColNames(c)).IsNumeric OrElse tb.Cols(ColNames(c)).IsDate Then '如果是数值或日期列
        rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right '数据水平靠右
    End If
    For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
        rt.Cells(r + 2, c).Text = tb.Rows(r)(ColNames(c))
    Next
Next
rt.cells(0,0).SpanCols = rt.Cols.Count
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt.CellStyle.Spacing.All = 2.0 '单元格内距设为1.0毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中

rt.Rows(1).Style.Font = New Font("宋体", 12, FontStyle.Bold) '修改参数 12 ,调整字体大小

rt.RowGroups(0,2).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头.
doc.Body.Children.Add(rt) '将表格加入到报表
doc.Preview()
doc.Print


 回到顶部