以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  图表问题。已解决  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=61236)

--  作者:utcxray
--  发布时间:2014/12/9 14:23:00
--  图表问题。已解决
如图:
1、窗体中按钮的相应代码,我只做了本年的,还不对。请将对应按钮代码帮我写出。

图片点击可在新窗口打开查看此主题相关图片如下:无标题1.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:t.foxdb


[此贴子已经被作者于2014-12-9 18:11:21编辑过]

--  作者:utcxray
--  发布时间:2014/12/9 14:59:00
--  
自己顶
--  作者:有点甜
--  发布时间:2014/12/9 15:14:00
--  

本年,其余的自己参考着做

 

http://www.foxtable.com/help/topics/2720.htm

 

 

Dim y As Integer = Date.Today.Year
Dim dt1 As New Date(y, 1, 1)
Dim dt2 As New Date(y, 12, 31)
Dim Filter As String
Filter = "datee >= #" & dt1 & "# And datee <= #" & dt2 & "#"

Dim sql As String = "Select DATEE,number,number*price as [money] FROM {表A} where " & filter
Dim g As New groupTableBuilder("统计表11",sql)
g.Groups.AddDef("datee", "月")
g.Totals.AddDef("[money]", "", "money_值")
Tables("c_Table1").DataSource = g.BuildDataSource()

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("c_Table1")
Chart= e.Form.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) = t.Rows(i)("月") \'指定水平坐标
    Series.Y(i) = t.Rows(i)("money") \'指定垂直坐标
Next
Chart.SeriesList(0).LineColor= Color.Red
Series.MarkColor = Color.GREEN


--  作者:utcxray
--  发布时间:2014/12/9 15:19:00
--  
图片点击可在新窗口打开查看谢谢
--  作者:utcxray
--  发布时间:2014/12/9 15:42:00
--  
再问下:
1、对表中的空值
Dim sql As String = "Select DATEE,ISNULL(number,0) AS NUMBER,isnull(number*price,0) as [money] FROM {表A} where " & filter  这样写出错,表中无任何数字,如何改
2、这是帮助中的例子,实际执行时说无此函数
例如加载最近两个月内的订单:
SELECT * FROM {订单} WHERE DateDiff(m, 订购日期, GetDate()) < 2

例如加载今年的订单:

Select * From {订单} Where Year(订购日期) = Year(GetDate())

我想能用函数好像更简洁些


--  作者:有点甜
--  发布时间:2014/12/9 16:09:00
--  

 你为什么要这样子做啊, 直接用3楼的方法。

 

 你这样的写法,是Sqlserver数据库的,Access数据库没有Isnull这样的函数


--  作者:utcxray
--  发布时间:2014/12/9 16:43:00
--  
谢谢
--  作者:utcxray
--  发布时间:2014/12/9 18:09:00
--  
终于搞出来了。

本年:
Dim g As New GroupTableBuilder("统计表12", DataTables("采购明细"))

Dim y As Integer = Date.Today.Year
Dim dt1 As New Date(y, 1, 1)
Dim dt2 As New Date(y, 12, 31) 
Dim Filter As String
Filter = "采购日期 >= #" & dt1 & "# And 采购日期 <= #" & dt2 & "#" 


g.Groups.AddDef("采购日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("采购日期", "月")
g.Totals.AddDef("数量", "", "数量_值")
g.Totals.AddDef("金额", "", "金额_值")
g.SamePeriodGrowth = True
g.CircleGrowth = True
g.filter=filter
Tables("进货分析_Table1").DataSource = g.BuildDataSource()

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("进货分析_Table1")
Chart= e.Form.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) = t.Rows(i)("月") \'指定水平坐标
    Series.Y(i) = t.Rows(i)("金额") \'指定垂直坐标
Next
Chart.SeriesList(0).LineColor= Color.Red
Series.MarkColor = Color.GREEN

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