以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  发展建议  (http://foxtable.net/bbs/list.asp?boardid=11)
----  版主看到后有什么感想?  (http://foxtable.net/bbs/dispbbs.asp?boardid=11&id=27185)

--  作者:狐狸爸爸
--  发布时间:2012/12/24 17:01:00
--  

呵呵,看你处理什么任务,整体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编辑过]