以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计当前表的数据而不是统计datatables怎样修改代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173732)

--  作者:yaojun
--  发布时间:2021/12/13 21:49:00
--  统计当前表的数据而不是统计datatables怎样修改代码

在一个表里面先进行了筛选,需要对筛选出来的数据进行统计,而不是统计所有数据表的数据,求老师门指教如何修改成统计table里面的数据,谢谢!

 

Dim b As New CrossTableBuilder("成品发货明细表",DataTables("成品管理"))
b.HGroups.AddDef("产品名称")
b.HGroups.AddDef("订单号")
b.HGroups.AddDef("客户")

b.HGroups.AddDef("累计发货")
b.HGroups.AddDef("发货日期",DateGroupEnum.none)
b.VGroups.AddDef("发货日期",DateGroupEnum.Year,"{0}年")
b.VGroups.AddDef("发货日期","{0}月")
b.VGroups.AddDef("发货日期",DateGroupEnum.day,"{0}日")

b.Totals.AddDef("累计发货")
b.OrderByTotal = True
b.VerticalTotal= True
b.HorizontalTotal = True

Dim t As Table = e.form.controls("Table1").Table
t.datasource = b.BuildDataSource
t.StopRedraw
t.DataTable.GlobalHandler.AfterEdit = True
t.AllowEdit = True
t.AutoSizeCols(3)
t.DefaultRowHeight = 31


t.DataTable.DataCols.Add("_sortkey", Gettype(Decimal))
For Each r As Row In t.Rows
    r("_sortkey") = r.Index
Next
t.rows(t.rows.count - 1).Move(0)
t.Sort = "_sortkey"
t.DataTable.AcceptChanges
t.ResumeRedraw


--  作者:有点蓝
--  发布时间:2021/12/13 21:59:00
--  

b.OrderByTotal = True
b.VerticalTotal= True
b.HorizontalTotal = True

Dim t As Table = e.form.controls("Table1").Table

b.filter = Tables("成品管理").filter
t.datasource = b.BuildDataSource


--  作者:yaojun
--  发布时间:2021/12/15 11:57:00
--  

蓝老师您好:

每次重复点击按钮后,图表下面的标题都比较混乱,如何点击之前先清理掉再生成呀,这样看起来才清爽,谢谢。

 


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

代码:

Tables("装配周计划").Sort = "完成数量 DESC"
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("装配周计划") \'定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)
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)("完成数量") \'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)("产品编号")) \'指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True \'启用字符标示
Series.DataLabelText = "{#YVAL}"

\'Series.DataLabelText = "{#YVAL:0%}"(百分比)

Dim bchart  = Chart.BaseControl
chart.HeaderText = "生产统计图表"
bchart.Header.Style.Font = new Font( "宋体", 20, FontStyle.Italic)
bchart.Header.Style.ForeColor = color.blue


--  作者:有点蓝
--  发布时间:2021/12/15 13:34:00
--  
http://www.foxtable.com/webhelp/topics/2319.htm

Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.AxisX.ClearValueLabel
[此贴子已经被作者于2021/12/15 15:22:41编辑过]

--  作者:yaojun
--  发布时间:2021/12/15 15:00:00
--  
数据发生改变后,多次操作还是会发生乱码的现象
--  作者:有点蓝
--  发布时间:2021/12/15 15:23:00
--  
搞错了,是Chart.AxisX.ClearValueLabel
--  作者:yaojun
--  发布时间:2021/12/15 16:04:00
--  

谢谢老师,可以了,不过今天操作如下代码(一个按钮)的时候,怎么老是窗口里面的表变成白屏呀,什么都没有了

\'\'\'
Dim g As New CrossTableBuilder("统计表5", DataTables("装配周计划"))
g.HGroups.AddDef("产品编号")
g.VGroups.AddDef("生产线", "生产线_{0}")
g.Totals.AddDef("完成数量", "完成数量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.Build()


MainTable.Focus()

Forms("周计划").Open

 For Each cl As Col In Tables("统计表5").Cols  \'整表居中
            cl.TextAlign = TextAlignEnum.Center
  Next


--  作者:有点蓝
--  发布时间:2021/12/15 16:36:00
--  
看不出有什么问题。上传实例测试