呵呵,看你处理什么任务,整体foxtable更轻松。
例如要从订单表得到下面的统计数据:
FoxTable的代码是:
Dim g As New CrossTableBuilder("统计表1", DataTables("订单"))
g.HGroups.AddDef("产品")
g.VGroups.AddDef("日期", DateGroupEnum.Year, "{0}年_数量")
g.Totals.AddDef("数量", "数量")
g.HorizontalTotal = True
g.VerticalTotal = True
g.HorizontalProportion = True
g.Build()
MainTable = Tables("统计表1")
你用VBA写,看看要多长。
再例如,要用目录树一次数多多列(省|县市|区号|邮编)数据:
同样只需几行代码:
Dim tb As New DropTreeBuilder
tb.SourceTable = DataTables("行政区域") '指定目录树表
tb.TreeCols = "省|县市" '指定用于生成目录树的列
tb.SourceCols = "省|县市|区号|邮编" '指定数据来源列
tb.ReceiveCols = "省|县市|区号|邮编" '指定数据接收列
Tables("客户").Cols("省").DropTree = tb.Build()
你用VBA写个看看。
Foxtable封装了大量的工具,开发一个系统,至少可以为你节省80%左右的代码。
回到一楼的代码,你想简单,可以改为:
Dim dc As DataCol = e.DataCol
Dim dr As DataRow = e.DataRow
If dc.Name = "fwsj"
dr("nd") = iif(dr.IsNull("fwsj"),Nothing, Year(dr("fwsj")) & "年")
dr("yf") = iif(dr.IsNull("fwsj"),Nothing, Month(dr("fwsj")) & "月")
End If
不过我更喜欢原来的,多谢了if Then,但是可读性好很多。
[此贴子已经被作者于2012-12-24 17:06:08编辑过]