最近,刚完成一个基于ACCESS的数据分析系统的开发,现把一些重要的细节做一记录。 一、用户需求分析是整个工作的核心和关键。做好任何事情,计划都是关键,好的需求分析可以节省很多时间。我的经验是,系统不复杂的话,可以直接画用户界面的草图。把每个窗体上的表单和按钮都想清楚了,另外窗体间的链接,每个按钮实现那些功能,那些窗体进行组合等等都想清楚。这个方法可能对于复杂的系统不太够用,但对我们这种相对简单的系统绝对够用了。另外,这种方法可以方便向用户展示,看是否满足了用户的业务需求。 二、下面记录几个技术细节: (一)数据的导入:用户的数据是CSV格式,要进行分析必须通过窗体把数据导入进来,可以使用下面的sql语句:strSqlAdd = "INSERT INTO DEATHCASE SELECT * FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=" & ff1 & ";].[" & replace(ff2,".csv","") & "#csv];" 两个变量(路径和数据名)可以通过窗体进行设定。 (二)一个复杂sql条件的写法: 库中的基本结构如下表
举个例子: 很明显,这个条件有点复杂,刚开始写的sql语句: SELECT * 上面把姓名拆分成了n1 n2 n3 三个变量,分别对应姓名的第一、二、三个字。 这个sql运行后,速度有点慢(可能运算量有点大),后来就在VBA里对数据进行了分层操作,具体代码就不贴了。 (四)寿命表的实现: 寿命表用excel做非常方便,用程序来做就比较麻烦了。文献报道,寿命表也可以用sas编程实现,有点简单问题复杂化。用户的目标是在窗体里自动通过原始数据(个案数据)实现寿命表,用access的查询来做?比较麻烦,因为对于每一行,各个变量的运算规则不同。需要对不同的行用不同的sql,然后再合并。最后,我还是在access里窗体里实现了excel的效果,因为使用了spreadsheet控件,这个控件在office 2003里是默认安装的,使用方法也非常简单,可以直接插入到窗体里,然后再里面设置好公式,然后使用VBA给需要赋值的单元格提供数据就OK了。 |