以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  未审科目余额跨表自动计算  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81047)

--  作者:kaituozhe
--  发布时间:2016/2/17 12:27:00
--  未审科目余额跨表自动计算

Select Case e.DataCol.name
    Case "会计年度"
        Dim mns() As String ={"库存现金","银行存款","其他货币资金","短期投资"}
        For Each mn As String In mns
            e.DataRow(mn) = DataTables("未审科目余额").Compute("sum(mn)","会计年度 = \'" & e.DataRow("会计年度") & "\'")
        Next
End Select

上述代码用于计算未审科目余额表的数据,但是执行上述代码提示

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.12.22.1
错误所在事件:表,已审科目余额,DataColChanged
详细错误信息:
调用的目标发生了异常。
未找到列 [mn]。
该怎么修改


--  作者:大红袍
--  发布时间:2016/2/17 14:29:00
--  

Select Case e.DataCol.name
    Case "会计年度"
        Dim mns() As String ={"库存现金","银行存款","其他货币资金","短期投资"}
        For Each mn As String In mns
            e.DataRow(mn) = DataTables("未审科目余额").Compute("sum(" & mn & ")","会计年度 = \'" & e.DataRow("会计年度") & "\'")
        Next
End Select


--  作者:kaituozhe
--  发布时间:2016/2/17 14:54:00
--  

Dim mns() As String ={"库存现金","银行存款","其他货币资金","短期投资"}
Select Case e.DataCol.name
    Case "库存现金","银行存款"
        DataTables("已审科目余额").DataCols("会计年度").RaiseDataColChanged("会计年度 = \'" & e.DataRow("会计年度") & "\'")
End Select

由于红字部分的条件非常长,100多项,有无可能用nms数据代替

 

 


--  作者:kaituozhe
--  发布时间:2016/2/17 14:56:00
--  

科目余额表的列很多,在2楼的代码中怎么能自动把科目余额表中所有列的列名组成一个数组然后再使用2楼代码

Dim mns() As String ={"库存现金","银行存款","其他货币资金","短期投资"}把这个代码换成自动提取列名。


--  作者:kaituozhe
--  发布时间:2016/2/17 15:04:00
--  

Dim str As String
For Each c As Col In Tables("已审科目余额").Cols
   str = str & """ & c.name
Next

 

怎么把str转换为={"库存现金","银行存款","其他货币资金","短期投资"}这种格式的


--  作者:kaituozhe
--  发布时间:2016/2/17 15:17:00
--  

Dim str As String
Dim str1 As String
For Each c As Col In Tables("已审科目余额").Cols
    str = str  & c.name & ","
    str1 = str.Replace(",", """,""")
Next

通过以上方式转换后 后面多出一个 ,和“  怎么后面的两个符号


--  作者:大红袍
--  发布时间:2016/2/17 17:38:00
--  

Dim mns() As String ={"库存现金","银行存款","其他货币资金","短期投资"}
If array.indexof(mns, e.DataCol.name) > -1 Then
    For Each mn As String In mns
        e.DataRow(mn) = DataTables("未审科目余额").Compute("sum(" & mn & ")","会计年度 = \'" & e.DataRow("会计年度") & "\'")
    Next
End If


--  作者:大红袍
--  发布时间:2016/2/17 17:40:00
--  
Dim str As String
For Each c As Col In Tables("已审科目余额").Cols
    str = str  & c.name & ","
Next
Dim ary() As String = str.split(",")