以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 统计按钮公式出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57789)

--  作者:wumingrong1
--  发布时间:2014/10/2 21:42:00
--  [求助] 统计按钮公式出错
我有一个统计功能按钮,命令如下:

Dim g1 As New GroupTableBuilder("光缆纤芯利用率表", DataTables("光缆纤芯应用台帐表"))

g1.Groups.AddDef("光缆类别")
g1.Groups.AddDef("光缆对数")
g1.Totals.AddDef("纤芯编号", AggregateEnum.Count, "总纤芯数量")

g1.Filter = " 光缆名称 Is not null"
g1.Build()
DataTables("光缆纤芯利用率表").DataCols.Add("使用纤芯数量", Gettype(Integer))
DataTables("光缆纤芯利用率表").DataCols.Add("光缆数量", Gettype(Integer))
DataTables("光缆纤芯利用率表").DataCols.Add("纤芯利用率", Gettype(Double))
For Each r1 As Row In Tables("光缆纤芯利用率表").rows
    r1("使用纤芯数量") = DataTables("光缆纤芯应用台帐表").Compute("count(_Identify)", " 光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' and  业务名称 is not null")
    
    r1("光缆数量") = DataTables("光缆纤芯应用台帐表").GetValues("光缆名称", "光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' ").Count
    r1("纤芯利用率") = r1("使用纤芯数量") / r1("总纤芯数量")
Next
DataTables("光缆纤芯利用率表").DataCols("纤芯利用率").SetFormat("00.00%")
\'MainTable = Tables("机房光缆纤芯利用率表")

Tables("光缆纤芯利用率表").SetColVisibleWidth("光缆类别|150|光缆对数|160|总纤芯数量|120|光缆数量|80|总纤芯数量|80|使用纤芯数量|80|纤芯利用率|80")



当我点击该按钮后,提示出错;请帮我看看问题出在哪里?

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

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

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


--  作者:有点甜
--  发布时间:2014/10/4 9:47:00
--  

 提示不是已经很明显了么?不存在对应的列。

 

 具体问题,做个例子发上来。


--  作者:wumingrong1
--  发布时间:2014/10/8 9:19:00
--  
在第一个图中的 “光缆纤芯利用率表”中有"使用纤芯数量"这一列,同时也已经统计出数量啦。在  ‘统计’ 按钮中也有增加“使用纤芯数量”这个命令啊

DataTables("光缆纤芯利用率表").DataCols.Add("使用纤芯数量", Gettype(Integer))

--  作者:有点甜
--  发布时间:2014/10/8 9:30:00
--  

 你直接查看表结构,有可能是标题和列名不一致。

 

 或者你做个例子发上来


--  作者:wumingrong1
--  发布时间:2014/10/8 10:19:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目7.foxdb


--  作者:有点甜
--  发布时间:2014/10/8 10:22:00
--  

Dim g1 As New GroupTableBuilder("光缆纤芯利用率表", DataTables("光缆纤芯应用台帐表"))

g1.Groups.AddDef("光缆类别")
g1.Groups.AddDef("光缆对数")
g1.Totals.AddDef("纤芯编号", AggregateEnum.Count, "总纤芯数量")
\'g1.Groups.AddDef("使用纤芯数量")
\'g1.Groups.AddDef("光缆数量")
\'g1.Groups.AddDef("纤芯利用率")

g1.Filter = " 光缆名称 Is not null"
g1.Build()
DataTables("光缆纤芯利用率表").DataCols.Add("使用纤芯数量", Gettype(Integer))
DataTables("光缆纤芯利用率表").DataCols.Add("光缆数量", Gettype(Integer))
DataTables("光缆纤芯利用率表").DataCols.Add("纤芯利用率", Gettype(Double))
For Each r1 As Row In Tables("光缆纤芯利用率表").rows
    r1("使用纤芯数量") = DataTables("光缆纤芯应用台帐表").Compute("count(_Identify)", " 光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' and  业务名称 is not null")
   
    r1("光缆数量") = DataTables("光缆纤芯应用台帐表").GetValues("光缆名称", "光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' ").Count
    r1("纤芯利用率") = r1("使用纤芯数量") / r1("总纤芯数量")
Next
DataTables("光缆纤芯利用率表").DataCols("纤芯利用率").SetFormat("00.00%")
\'MainTable = Tables("机房光缆纤芯利用率表")

Tables("光缆纤芯利用率表").SetColVisibleWidth("光缆类别|150|光缆对数|160|总纤芯数量|120|光缆数量|80|使用纤芯数量|80|纤芯利用率|80")


--  作者:wumingrong1
--  发布时间:2014/10/8 10:40:00
--  
你这个命令和我按钮里写的好像一样啊、这次提示没有“光缆数量”列
[此贴子已经被作者于2014-10-8 10:40:44编辑过]

--  作者:有点甜
--  发布时间:2014/10/8 10:43:00
--  
 我测试你的例子没有报错啊
--  作者:wumingrong1
--  发布时间:2014/10/8 10:46:00
--  
你点完统计、切换到其他表后、回来再点一次统计看看。是不是红色部分有什么问题?


   r1("使用纤芯数量") = DataTables("光缆纤芯应用台帐表").Compute("count(_Identify)", " 光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' and  业务名称 is not null")
    
    r1("光缆数量") = DataTables("光缆纤芯应用台帐表").GetValues("光缆名称", "光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' ").Count

--  作者:有点甜
--  发布时间:2014/10/8 11:09:00
--  

 代码

 

Dim g1 As New GroupTableBuilder("光缆纤芯利用率表", DataTables("光缆纤芯应用台帐表"))

g1.Groups.AddDef("光缆类别")
g1.Groups.AddDef("光缆对数")
g1.Totals.AddDef("纤芯编号", AggregateEnum.Count, "总纤芯数量")

g1.Filter = " 光缆名称 Is not null"
e.form.Controls("Table1").Table.DataSource = g1.BuildDataSource
Dim dt As DataTable = e.form.Controls("Table1").Table.DataTable
dt.DataCols.Add("使用纤芯数量", Gettype(Integer))
dt.DataCols.Add("光缆数量", Gettype(Integer))
dt.DataCols.Add("纤芯利用率", Gettype(Double))
For Each r1 As DataRow In dt.datarows
    r1("使用纤芯数量") = DataTables("光缆纤芯应用台帐表").Compute("count(_Identify)", " 光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' and  业务名称 is not null")
   
    r1("光缆数量") = DataTables("光缆纤芯应用台帐表").GetValues("光缆名称", "光缆类别 = \'" & r1("光缆类别") & "\' and 光缆对数 = \'" & r1("光缆对数") & "\' ").Count
    r1("纤芯利用率") = r1("使用纤芯数量") / r1("总纤芯数量")
Next
dt.DataCols("纤芯利用率").SetFormat("00.00%")
\'MainTable = Tables("机房光缆纤芯利用率表")

e.form.Controls("Table1").Table.SetColVisibleWidth("光缆类别|150|光缆对数|160|总纤芯数量|120|光缆数量|80|使用纤芯数量|80|纤芯利用率|80")