以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  生成以用户列的每一个用户生成一个折线图?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187148)

--  作者:sunion0769
--  发布时间:2023/6/26 11:22:00
--  生成以用户列的每一个用户生成一个折线图?
如图,如何生成以用户列的每一个用户生成一个折线图
遇到的问题是:代码是将全部用户生成在一张图上了

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


\'制作报表
Dim doc As New PrintDoc \'定义一个报表
Dim tbl As Table = Tables("表A")
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 Chart As WinForm.Chart \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("表A") \'定义一个变量t引用数据表
    Chart = Forms("窗口1").Controls("Chart1") \' 引用窗口中的图表
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = t.Rows.Count \'设置图系的长度
    For i As Integer = 0 To t.Rows.Count - 1 \'指定每个数据点的位置
        Series.X(i) = i \'指定水平坐标
        Series.Y(i) = t.Rows(i)("项目1") \'指定垂直坐标
        Chart.AxisX.SetValueLabel(i, t.Rows(i)("用户")) \'指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    doc.Body.Children.Add(rm) \'将图片对象加入报表
    
Next
Doc.Preview() \'预览报表
[此贴子已经被作者于2023/6/26 11:22:42编辑过]

--  作者:有点蓝
--  发布时间:2023/6/26 11:34:00
--  
一个用户一个图片?还是一张图里一个用户一条折线?
[此贴子已经被作者于2023/6/26 11:34:25编辑过]

--  作者:sunion0769
--  发布时间:2023/6/26 11:47:00
--  
老师,是一个用户一个图片
按照上面的表格,那就是应该有三张图片,
PD01一张;PD02一张;PD03一张;

--  作者:有点蓝
--  发布时间:2023/6/26 12:02:00
--  
Dim doc As New PrintDoc \'定义一个报表
Dim tbl As Table = Tables("表A")
For Each s As String In tbl.DataTable.GetValues("用户")
    \'---------------------插入图表
    Dim drs As List(Of DataRow) = tbl.DataTable.Select("用户=\'" & s & "\'", "日期")
    Dim Chart As New ChartBuilder
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = drs.Count \'设置图系的长度
    For i As Integer = 0 To drs.Count - 1 \'指定每个数据点的位置
        Series.X(i) = i \'指定水平坐标
        Series.Y(i) = drs(i)("项目1") \'指定垂直坐标
        Chart.AxisX.SetValueLabel(i, format(drs("日期"), "MM-dd")) \'指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    doc.Body.Children.Add(rm) \'将图片对象加入报表
    
Next
Doc.Preview() \'预览报表