Audit System 日记:Method Chaining

Aus 项目结束之后,终于有时间重新折腾 Audit System。这次的思路是完全改变了,基于 Excel VBA OOP 进行开发。

2 月底的时候有写过一点基础框架的代码,不过那个时候是基于过程去写的,各种 function 各种 sub,思路很乱。这周五重新 review 的时候,突然在想,为什么不基于 OOP 进行开发?这样可以干净整洁。

首先,每个表必须有 ID 字段做主键。

然后,不管是 pull、update、delete、insert,都是通过 ID 去操作。这样就可以避免做很多复杂的条件判断。即便要做条件判断,也可以基于 Excel 自身去做,不需要涉及到数据库。

OK,思路有了,然后就是尝试去实现。

我要做的东西,就是从某个 Table 取数据,有两种取法:

  1. 取指定列的所有数据。
  2. 对于指定列,只取指定行(即指定 ID)的数据。

指定列很简单,直接取表头第一行就行:

指定区域就稍微有所不同了:

然后我希望通过一个比较 elegant 的形式,把这些东西串联起来:

建立一个 Table Class,它在被建立的时候,会自动读取表名,表名就是 Worksheet 的名字:

然后,进入到下一个 Class,GetColumns,获取列名,有两种 Method,一种是获取指定列的所有数据(All),一种是获取指定列在指定 ID 中的数据(Selected)。

最后输出 SQL,默认按 ID ASC 排序。

这里主要涉及到怎么去做 Method Chaining,研究了很久,才基本弄明白整个思路。

其实不通过 Method Chaining 也是可以做到的,要么分成很多个 sub,然后分别一步步执行,要么是写成一个复杂函数,往里面添各种参数。但显然对比起来,Method Chaining 明显是高大上很多的。

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.