以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 动态删除列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81269)
|
-- 作者:kaituozhe
-- 发布时间:2016/2/23 12:45:00
-- 动态删除列
Dim Builder As New ADOXBuilder Builder.Open() \'打开ADOXBuilder With Builder.Tables("表A") For Each c As DataCol In DataTables("科目余额表").DataCols If c.name <> "会计科目" AndAlso c.name <> "会计年度" Then .DeleteColumn("& c &") End If Next End With Builder.Close()
以上代码那里错误,提示如下
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:窗口,窗口1,Button2,Click 详细错误信息: 在对应所需名称或序数的集合中,未找到项目。
|
-- 作者:kaituozhe
-- 发布时间:2016/2/23 12:49:00
--
找到原因了
|
-- 作者:kaituozhe
-- 发布时间:2016/2/23 13:19:00
--
Select Case e.DataCol.name Case "会计年度" If e.newvalue IsNot Nothing Then For Each mn As DataCol In e.DataTable.DataCols If mn.name <> "会计年度" Then Dim filter As String ="会计年度 = \'" & e.DataRow("会计年度") & "\'" e.DataRow(mn.name) =DataTables("账项调整借方").Compute("sum(mn.name)",filter)+DataTables("重分类调整借方").Compute("sum(mn.name)",filter) End If Next \'ElseIf e.newvalue = Nothing Then \'For Each mn As String In mns \'e.DataRow(mn) = Nothing \'Next End If End Select
红色代码错误在那里 提示如下
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:表,已审借方发生,DataColChanged 详细错误信息: 调用的目标发生了异常。 聚合参数中的语法错误: 需要具有可能的“Child”限定符的单个列参数。
|
-- 作者:大红袍
-- 发布时间:2016/2/23 13:39:00
--
很基础的问题啊
e.DataRow(mn.name) =DataTables("账项调整借方").Compute("sum(" & mn.name & ")",filter)+DataTables("重分类调整借方").Compute("sum(" & mn.name & ")",filter)
[此贴子已经被作者于2016/2/23 13:39:35编辑过]
|
-- 作者:kaituozhe
-- 发布时间:2016/2/23 14:21:00
--
我试过了,4楼的错误提示如下:
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:表,已审借方发生,DataColChanged 详细错误信息: 调用的目标发生了异常。 无效的聚合函数 Sum()和类型 String 的用法。
|
-- 作者:大红袍
-- 发布时间:2016/2/23 14:42:00
--
说明你对应的列不是 数值类型,而是字符类型,把列的类型改一下。
|
-- 作者:kaituozhe
-- 发布时间:2016/2/23 14:54:00
--
全是数值型的
|
-- 作者:大红袍
-- 发布时间:2016/2/23 15:01:00
--
不,可,能。上传实例。
|
-- 作者:kaituozhe
-- 发布时间:2016/3/2 20:37:00
--
Dim bbmcs() As String = {"余额横表已审","余额横表未审","发生横表已审借方","发生横表已审贷方","发生横表未审借方","发生横表未审贷方","账项调整借方","账项调整贷方","重分类调整借方","重分类调整贷方"} For Each bbmc As String In bbmcs Dim Builder As New ADOXBuilder Builder.Open() \'打开ADOXBuilder Dim Products As List(Of String) Products = DataTables("会计科目").GetValues("科目名称", "科目名称 is not null","_Sortkey") For Each c As DataCol In DataTables(bbmc).DataCols msgbox(c.name) If c.name <> "会计年度" AndAlso c.name <> "审核" Then \'msgbox(6) If Products.Contains(c.name) = False Then msgbox(7) msgbox(c.name) msgbox(Products.Contains(c.name) = False) msgbox(c.name) Builder.Tables(bbmc).DeleteColumn(" & c.name & ") msgbox(8) End If End If Next Builder.Close() \'关闭ADOXBuilder Next
橙色行的代码错在那里了,提示如下:
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:窗口,建立项目,余额表横表删除多余列,Click 详细错误信息: 在对应所需名称或序数的集合中,未找到项目。
|
-- 作者:kaituozhe
-- 发布时间:2016/3/2 20:39:00
--
Builder.Tables(bbmc).DeleteColumn(c.name) 与 Builder.Tables(bbmc).DeleteColumn("c.name")也都不行
|