Foxtable(狐表)用户栏目专家坐堂 → and 缺少运算符问题


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

主题:and 缺少运算符问题

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
and 缺少运算符问题  发帖心情 Post By:2016/10/7 13:13:00 [只看该作者]

请教老师,下面代码,无法生成图表,如果把    年 = " & 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
按此在新窗口浏览图片

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107770 积分:548195 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 14:04:00 [只看该作者]

把统计表生成到主表中,然后看看统计表的真实列名

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/10/7 15:08:00 [只看该作者]

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

 

不知是哪里的问题?

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

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107770 积分:548195 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 15:13:00 [只看该作者]

打开表结构看看,直接看表格看到是标题,不是列名

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/10/7 15:28:00 [只看该作者]

都是一致的。

 

 


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

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107770 积分:548195 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 15:39:00 [只看该作者]

代码不应该有问题,上例子看看

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/10/7 17:29:00 [只看该作者]

请老师看看,谢谢

 

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


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107770 积分:548195 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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 '显示图列

 回到顶部