以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 为什么表1的‘制单号’没问题,表3的‘制单号码’提示找不到 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121047) |
-- 作者:yetle -- 发布时间:2018/6/28 10:14:00 -- 为什么表1的‘制单号’没问题,表3的‘制单号码’提示找不到 窗口AfterLoad,fill进三张表 If Forms("班组分析").Opened() Dim t As Table = Tables("班组分析_table1") t.Fill("SELECT c.Goodsxl as 系列名, c.Gyno as 物供号, c.ZDNO as 制单号, B.MakeGro as 班组, B.Ftyno AS 款号,b.QCType as 不合格原因, Sum(Isnull(b.num,0)) as 返工件数 F ROM Qc_Main A LEFT JOIN QC_ReturnMake B ON A.ID=B.UpID left join pq_main C ON B.Orderno =C.ORDERNO WHERE Isnull(b.num,0) >0 GROUP BY c.Goodsxl,c.Gyno,c.ZDNO,B.MakeGro,B.Ftyno,B.QCTYPE ORDER BY Sum(Isnull(b.num,0))desc " , "鼎邦系统",True) Dim t2 As Table = Tables("班组分析_table2") t2.Fill("SELECT gro as 班组,Goods as 类别,gyno as 物供号,Ftyno as 款号,Makeno as 制单号, MakeQty as 制单数, CutQty as 裁剪数, InQty as 入库数,Indate as 日期 F ROM CO_SB_Main where Makeno not like \'T%\' and Makeno not like \'H%\' and Makeno not like \'M%\' " , "鼎邦系统",True) Dim t3 As Table = Tables("班组分析_table3") t3.Fill(" SELECT B.Makeno AS 制单号码, A.Name AS 异常物料名称, A.MustNum AS 需求数量, A.OrderNum AS 采购数量, A.BackNUm AS 回料数量, A.OutNum AS 领料数量, A.BuBakNum AS 补料数量, A.JHPrice AS 单价, A.MustNum * A.JHPrice AS 需求金额, A.OrderNum * A.JHPrice AS 采购金额, A.BackNUm * A.JHPrice AS 回料金额, A.OutNum * A.JHPrice AS 领料金额, SUM(ISNULL(A.BuMon, 0)) AS 补料金额 F ROM CO_SB_Main AS B LEFT OUTER JOIN CO_SB_WList AS A ON A.SBID = B.SBID WHERE (A.BuMon > \'200\') or (A.OutNum * A.JHPrice - A.OrderNum * A.JHPrice > \'100\') GROUP BY A.Name, A.MustNum, A.JHPrice, A.OrderNum, A.BackNUm, A.OutNum, A.BuBakNum, B.Makeno " , "鼎邦系统",True) End If 在表2CurrentChanged Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim t As Table = Tables("班组分析_table1") \'定义一个变量t引用数据表 Dim tB As Table = Tables("班组分析_table3") With Tables("班组分析_table2") If .Current Is Nothing Then t.Filter = "False" tB.Filter = "False" Else t.Filter = "[制单号] = " & .Current("制单号") tB.Filter = "[制单号码] = " & .Current("制单号") End If End With Dim sm As Integer = t.Compute("Sum(返工件数)") \'计算总数量 Chart= Forms("班组分析").Controls("Chart1") \' 引用窗口中的图表 chart.SeriesList.Clear Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮 Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形) For Each r As Row In t.Rows Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length = 1 \'一个系列只能包括一个值 Series.Text = r("不合格原因") & "(" & r("返工件数") & ")" \'设置图系的标题 Series.Y(0) = r("返工件数") \'指定值 Series.DataLabelText = Math.Round(r("返工件数")*100/sm,2) & "%" \'计算百分比 Next Chart.LegendVisible = True \'显示图列 Chart.LegendCompass= CompassEnum.South \'图列显示在东方(右方) Dim ChartB As WinForm.Chart \'定义一个图表变量 Dim SeriesB As WinForm.ChartSeries \'定义一个图系变量 ChartB = e.Form.Controls("Chart2") \' 引用窗口中的图表 ChartB.VisualEffect = True \'加上这一行,让你的图表更漂亮 ChartB.ChartType = ChartTypeEnum.Bar \'图表类型该为Bar(条形) ChartB.DataSource = "班组分析_table3" \'设置绑定表 ChartB.SeriesList.Clear() \'清除图表原来的图系 SeriesB = ChartB.SeriesList.Add() \'增加第一个图系 SeriesB.Text = "需求数量" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "需求数量" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "采购数量" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "采购数量" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "回料数量" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "回料数量" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "领料数量" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "领料数量" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "需求金额" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "需求金额" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "采购金额" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "采购金额" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "回料金额" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "回料金额" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "领料金额" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "领料金额" \'Y轴绑定到数量列 SeriesB = ChartB.SeriesList.Add() \'增加第二个图系 SeriesB.Text = "补料金额" SeriesB.X.DataField = "异常物料名称" \'X轴绑定到产品列 SeriesB.Y.DataField = "补料金额" \'Y轴绑定到数量列 ChartB.LegendVisible = True \'显示图列 ChartB.LegendCompass= CompassEnum.South |
-- 作者:有点甜 -- 发布时间:2018/6/28 10:23:00 -- 先把表1和表3生成,再生成表2试试,有可能生成表2的时候触发了currentChanged事件。 |
-- 作者:yetle -- 发布时间:2018/6/28 10:30:00 -- 果然,没有再提示找不到制单号码了,但是chart2显示不正常,都挤到一块了,而且currentchanged换行后好像没有边化 [此贴子已经被作者于2018/6/28 10:30:35编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/6/28 10:35:00 -- chart绑定表的时候,无法设置filter的,不能只显示部分数据的。
如果要显示部分数据,必须编写代码赋值,看方法二 http://www.foxtable.com/webhelp/scr/0968.htm
|
-- 作者:yetle -- 发布时间:2018/6/28 10:40:00 -- chart1又显示正常呢 |
-- 作者:有点甜 -- 发布时间:2018/6/28 10:48:00 -- 如果要显示部分数据,必须编写代码赋值,看方法二 http://www.foxtable.com/webhelp/scr/0968.htm |
-- 作者:yetle -- 发布时间:2018/6/28 10:53:00 -- 代码方式可以用双图表方式吗? |
-- 作者:有点甜 -- 发布时间:2018/6/28 11:00:00 -- 以下是引用yetle在2018/6/28 10:53:00的发言:
代码方式可以用双图表方式吗?
可以,参考
http://www.foxtable.com/webhelp/scr/0970.htm
如果是双图表,改成 Series = Chart.SeriesList2.Add() |
-- 作者:yetle -- 发布时间:2018/6/28 15:29:00 -- 由于异常物料名称太长,不好显示,我想将图片里面红框的名称调换过来,该怎么写,或者有没有更好的方法 Dim ChartB As WinForm.Chart \'定义一个图表变量 Dim SeriesB As WinForm.ChartSeries \'定义一个图系变量 ChartB = e.Form.Controls("Chart2") \' 引用窗口中的图表 ChartB.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形) ChartB.SeriesList.Clear() \'清除图表原来的图系 For Each c As Col In tB.Cols If c.Name <> "异常物料名称" And c.Name <> "制单号" Then SeriesB = ChartB.SeriesList.Add() \'增加一个图系 SeriesB.Text = c.Name \'设置图系的标题 SeriesB.Length = tB.Rows.Count \'设置图系的长度 For rB As Integer = 0 To tB.Rows.Count - 1 SeriesB.X(rB) = rB SeriesB.Y(rB) = tB.Rows(rB)(c.Name) Next End If Next For rB As Integer = 0 To tB.Rows.Count - 1 ChartB.AxisX.SetValueLabel(rB, tB.Rows(rB)("异常物料名称")) \'指定字符表示 ChartB.AxisX.AnnoRotation = - 15 \'X轴标示逆时针旋转45度 Next ChartB.AxisX.AnnoWithLabels = True \'启用字符标示 ChartB.VisualEffect = True \'加上这一行,让你的图表更漂亮 ChartB.LegendVisible = True \'显示图列
|
-- 作者:有点甜 -- 发布时间:2018/6/28 16:10:00 -- 做个例子发上来测试。 |