以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  为什么表1的‘制单号’没问题,表3的‘制单号码’提示找不到  (http://www.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换行后好像没有边化

图片点击可在新窗口打开查看此主题相关图片如下:未命名.png
图片点击可在新窗口打开查看
[此贴子已经被作者于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 \'显示图列
ChartB.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
图片点击可在新窗口打开查看此主题相关图片如下:未命名12.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/6/28 16:10:00
--  
做个例子发上来测试。