以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]双图表数据生成求助  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=158430)

--  作者:sunion
--  发布时间:2020/11/19 23:14:00
--  [求助]双图表数据生成求助
\'制作报表
Dim doc As New PrintDoc \'定义一个报表
Dim tbl As Table = Tables("main_table3")

For ii As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(ii)
    Dim ra As New prt.RenderArea \'定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  \'禁止容器因为分页而被垂直分割
    ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
      
     \'------------------\'成绩表格
    
    Dim rt As New prt.RenderTable() \'定义一个表格对象
    Dim tp As Table = Tables("考试科目")
    For i As Integer = 0 To tp.Rows.Count -1
        rt.Rows.Count = 3 \'设置总行数
        rt.Cols.Count = tp.Rows.Count +1 \'设置总列数
        rt.Height = 40 \'设置表格的高度为80毫米
        rt.Cells(0,0).Text= "科目"
        rt.Cells(0,i+1).Text= tp.Rows(i)("学科")
        rt.Cells(0,i+2).Text= "总分"
        rt.Cells(1,0).Text = "分数"
        rt.Cells(1,i+1).Text = IIF(rw(tp.Rows(i)("学科")) = 0,"",rw(tp.Rows(i)("学科")))
        rt.Cells(1,i+2).Text = rw("总分")
        rt.Cells(2,0).Text = "班平均"
        rt.Cells(2,i+1).Text =Format(Tables("main_table3").Compute("AVG(" & tp.Rows(i)("学科") & ")","[考试名称] = \'" & e.form.controls("考试名称9").Text & "\'"),"0.0")
        rt.Cells(2,i+2).Text =Format(Tables("main_table3").Compute("AVG(总分)","[考试名称] = \'" & e.form.controls("考试名称9").Text & "\'"),"0.0")
          
        rt.Rows(0).Style.Font = New Font("微软雅黑", 11, FontStyle.Regular)  \'设置主标题字体
        rt.Rows(1).Style.Font = New Font("微软雅黑", 9, FontStyle.Regular) \'设置主标题字体  

        \'设置表格样式
        rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米
        rt.Style.GridLines.All = New prt.Linedef \'设置网格线
        rt.Style.GridLines.All = New Prt.LineDef(0.1, Color.black) \'设置网格线颜色大小
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'内容垂直居中
        rt.Style.TextAlignHorz = prt.AlignVertEnum.Center \'内容水平居中
        rt.Style.Spacing.Top = 5
        
    Next
    doc.Body.Children.Add(rt) \'加入到报表中
    
    \'--------------------加入图表
    Dim Chart  As WinForm.Chart  \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
    Chart.VisualEffect = False
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = "学生成绩"
    Series.Length = tbl.Cols.Count - 3  \'设置图系的长度
    For c As Integer = 3 To tbl.Cols.count -6
        Series.X(c - 1) = c - 1
        Series.Y(c - 1) = tbl.Rows(ii)(c)
        Chart.AxisX.SetValueLabel(c - 1, tbl.Cols(c).caption) \'指定字符表示
    Next

\'----------------在原图表上添加一个表

   Series = Chart.SeriesList.Add() \'增加一个图系
   Series.Text = "最大值"
   
此处新增一个图表,y轴绑定为各学科的平均数(上面rt.Cells(2,i+1).Text处的值 ),此处的数据x轴、y轴如何设置???求助求助图片点击可在新窗口打开查看

    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)

    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image
    doc.Body.Children.Add(rm)
    
Next
Doc.Preview() \'预览报表
[此贴子已经被作者于2020/11/19 23:17:18编辑过]

--  作者:有点蓝
--  发布时间:2020/11/20 8:15:00
--  
请上传实例测试
--  作者:sunion
--  发布时间:2020/11/20 10:06:00
--  
好的,马上上传
[此贴子已经被作者于2020/11/20 10:08:18编辑过]

--  作者:sunion
--  发布时间:2020/11/20 10:08:00
--  回复:(有点蓝)请上传实例测试
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


狐爸,这是测试项目,麻烦抽空帮我看看,

--  作者:有点蓝
--  发布时间:2020/11/20 10:55:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


--  作者:sunion
--  发布时间:2020/11/20 11:02:00
--  
原来Round2可以这样用,真牛,越来越神奇了
--  作者:有点蓝
--  发布时间:2020/11/20 11:06:00
--  
哦,没改回来,没有这种用法。“0.00”改为2