以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  and 缺少运算符问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91301)

--  作者:douglas738888
--  发布时间:2016/10/7 13:13:00
--  and 缺少运算符问题

请教老师,下面代码,无法生成图表,如果把    年 = " & Year & " 取消,可生成一个年度的月线型图表,但是不能满足要求,应该是生成显示多年度的线型。

 

以下代码生成时,提示 and 缺少运算符...


Dim b As New SQLGroupTableBuilder("统计表000006","投标评价")
b.C  
b.Groups.AddDef("投标日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("投标日期",DateGroupEnum.Month,"月")
b.Totals.AddDef("信息编号",AggregateEnum.Count,"中标频度")
b.Filter = "投标日期 >= #" & e.Form.Controls("DateTimePicker1").Value & "# And 投标日期 <= #" & e.Form.Controls("DateTimePicker2").Value & "# And 投标结果 Like \'%项目中标%\'"
b.VerticalTotal = True


Tables("中标测评_Table1").DataSource = b.BuildDataSource()

For Each cl As Col In Tables("中标测评_Table1").Cols  \'整表居中
         cl.TextAlign = TextAlignEnum.Center
Next


Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart2") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
For Each Year As String In DataTables("中标测评_Table1").GetValues("年")
    Series = Chart.SeriesList.Add() \'每年一个图系
    Series.Text = Year  \'指定图系名称为年份
    Series.Length = 12  \'指定图系的数据点数,1年12个月
    Chart.AxisX.Min = 1  \'指定X轴的最小值,也就是从1月开始
    Chart.AxisX.Max = 12 \'\'指定X轴的最大值,一年只有12个月
    For Month As Integer = 1 To 12 \'逐月设置坐标
        Chart.AxisX.AnnoFormatString = "0月"
        Series.X(Month) = Month      \'指定水平坐标为月份
        Dim r As DataRow = DataTables("中标测评_Table1").Find("年 = " & Year & " And 月 = " & Month & "")   \'找出对应年月的行
        If r IsNot Nothing \'如果找到对应年月的行
            Series.Y(Month) = r("中标频度") \'指定数量作为垂直坐标
Series.DataLabelText = "{#YVAL}"
        End If
    Next
Next

Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)

 

 

 


此主题相关图片如下:555.jpg
按此在新窗口浏览图片

--  作者:有点蓝
--  发布时间:2016/10/7 14:04:00
--  
把统计表生成到主表中,然后看看统计表的真实列名
--  作者:douglas738888
--  发布时间:2016/10/7 15:08:00
--  

蓝老师,生成的临时统计表(MAINTABLE),显示的列名和“中标测评_Table1”中显示的列名完全一致,列名:中标频度,就是要在图表Y轴显示的数量,

 

不知是哪里的问题?

[此贴子已经被作者于2016/10/7 15:10:09编辑过]

--  作者:有点蓝
--  发布时间:2016/10/7 15:13:00
--  
打开表结构看看,直接看表格看到是标题,不是列名
--  作者:douglas738888
--  发布时间:2016/10/7 15:28:00
--  

都是一致的。

 

 


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

--  作者:有点蓝
--  发布时间:2016/10/7 15:39:00
--  
代码不应该有问题,上例子看看
--  作者:douglas738888
--  发布时间:2016/10/7 17:29:00
--  

请老师看看,谢谢

 

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


--  作者:有点蓝
--  发布时间:2016/10/7 17:39:00
--  
统计生成合计值,年是空的,自然就有问题

......
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
For Each Year As String In DataTables("中标测评_Table1").GetValues("年","年 is not null")
    Series = Chart.SeriesList.Add() \'每年一个图系
    Series.Text = Year  \'指定图系名称为年份
    Series.Length = 12  \'指定图系的数据点数,1年12个月
    Chart.AxisX.Min = 1  \'指定X轴的最小值,也就是从1月开始
    Chart.AxisX.Max = 12 \'\'指定X轴的最大值,一年只有12个月
    For Month As Integer = 1 To 12 \'逐月设置坐标
        Chart.AxisX.AnnoFormatString = "0月"
        Series.X(Month) = Month      \'指定水平坐标为月份
        Dim r As DataRow = DataTables("中标测评_Table1").Find("年 = " & Year & " And 月 = " & Month & "")   \'找出对应年月的行
        If r IsNot Nothing \'如果找到对应年月的行
            Series.Y(Month) = r("中标频度") \'指定数量作为垂直坐标
            Series.DataLabelText = "{#YVAL}"
        End If
    Next
Next
\'Chart.BarClusterWidth = 90
Chart.LegendVisible = True \'显示图列