月度归档:2012年11月

VBA相关函数集锦

      公司业务需要,这段时间需要学习VBA,虽然说学过VB,语法方面可能熟悉很多,但是真正应用的时候还是难在相关函数的使用和灵活度上。所以找找相关VBA的资料,觉得这些挺有用的,特别在博客上分享一下。

定制模块行为:

(1) Option Explicit ‘强制对模块内所有变量进行声明
Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
    Option Compare Text ‘字符串不区分大小写
    Option Base 1 ‘指定数组的第一个下标为1
(2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息
(3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置
(4) On Error GoTo 0 ‘恢复正常的错误提示
(5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示
(6) Application.ScreenUpdating=False ‘关闭屏幕刷新
    Application.ScreenUpdating=True ‘打开屏幕刷新
(7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能
工作簿 继续阅读

递归查询森林结构所有子节点

近期工作上遇到了这样一个需求,一张表用来存储树形结构的父节点和叶子节点,大体是这样定义的。

Table定义如下:

id groupid nodeid other
1 A001 A0001 ~~
2 B001 B0001 ~~
3 A0001 A00001 ~~
4 C001 C0001 ~~
5 C001 C0002 ~~

需求很简单:这张表表示的是一个数结构,其中groupid代表的是父节点,而nodeid代表的是相应的子节点,我们想要的是整个树结构的全部叶子节点。当然涉及到多棵树,就组成了森林结构,也就是查找指定森林结构的所有叶子节点。

思路也很Easy:遍历每一颗树,利用写好的递归查询函数去查询每棵树的最终叶子结点,然后把它们保存到静态list中。

详细代码如下: 继续阅读

Open Source License比较

一直对各种开源协议比较迷茫,今天特意关注了一下。看到了一篇不错的文章,分享一下。

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。

这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。

BSD开源协议(original BSD licenseFreeBSD licenseOriginal BSD license

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 继续阅读