以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论] 这个简单的计算代码如何写?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=905)

--  作者:wcs
--  发布时间:2008/10/17 11:23:00
--  [讨论] 这个简单的计算代码如何写?
A表有“科目”列,如下:

固定资产清理
固定资产清理
劳务成本\\辅助生产\\汽车队
劳务成本\\辅助生产\\汽车队\\办公费
劳务成本\\辅助生产\\汽车队\\办公费

我希望“一级科目”列为:
如果“科目”列中包含“\\”,则返回第一个“\\”左边的汉字;
如果“科目”列中不包含“\\”,则返回“科目”列的对应记录;

帮助中这类似的例子少了啊!


--  作者:ybil
--  发布时间:2008/10/17 11:47:00
--  
if  e.DataRow("科目") is Nothing  Then 
    e.DataRow("一级科目") = Nothing
Else
    e.DataRow("一级科目") =(e.DataRow("科目") & "\\").split("分隔符")(0)
End If


论坛有BUG,把代码中"分隔符"换为右斜杠显示不正常,记得要替换.
[此贴子已经被作者于2008-10-17 11:54:40编辑过]

--  作者:ylm
--  发布时间:2008/10/17 11:54:00
--  
将下面代码复制到命令窗口,修改V(0)  为不同数字,如V(1),测试一下,你就明白如何做了。

Dim s as String= "劳务成本\\辅助生产\\汽车队\\办公费"
Dim V as String()
 v =s.split("\\")  
Output.Show(v(0) )

--  作者:wcs
--  发布时间:2008/10/17 12:00:00
--  
这个我看得懂啊,

现在我是要计算像这样的一整列:

固定资产清理
固定资产清理
劳务成本\\辅助生产\\汽车队
劳务成本\\辅助生产\\汽车队\\办公费
劳务成本\\辅助生产\\汽车队\\办公费
.......

我希望得到
固定资产清理
固定资产清理
劳务成本
劳务成本
劳务成本
......


说实话,我主要是对象搞混淆了,不明白“字符”和“一列字符”在写代码时有何不同!如何计算“一列字符”啊?

我没有任何VB编程基础的,确实不易理解不同的对象。

--  作者:ylm
--  发布时间:2008/10/17 12:45:00
--  
将e.DataRow("一级科目") =(e.DataRow("科目") & "\\").split(" \\ ")(0)写入计算代码,在菜单中重算一级科目列,不行吗?
[此贴子已经被作者于2008-10-17 12:45:51编辑过]

--  作者:ylm
--  发布时间:2008/10/17 13:52:00
--  

如果你想让公式自动计算,在DataColChanged事件中:

If e.DataCol.Name ="科目" Then
e.DataTable.DataCols("一级科目").Recalc(e.DataRow)
End If


--  作者:wcs
--  发布时间:2008/10/17 14:59:00
--  

我试了半天,正解如下:

 

Dim aa as String = e.datarow("科目名称") \'将科目名称赋值给aa
Dim bb as String()                       ’建立一字符数组
bb = aa.split("\\")            ‘将bb定义为一个以\\分隔的数组
e.datarow("一级科目名称")=bb.(0) \'将一级科目名称的值设置为数组bb的第一个值

Next


其实关键是要灵活运用,初学者是经验太不足了。 

 
明白了一样东西:数据行、数据列作为对象,可以赋值给一个变量,再运用各种计算代码得出需要的东西,最后再赋值给另一变量。狐表自己会一行一行地计算的。

[此贴子已经被作者于2008-10-17 15:01:55编辑过]