三十年,从dbaseⅢ到Foxtable,分享我的业余编程之路

 

一、单位情况简介

我公司(中铁西北科学研究院有限公司)原来是铁道部的一个科研单位,转制后公司有15个子、分公司,近400人,近几年每年新承揽项目几百个,平均每人每年完成营业额过百万,因款未到齐而必须在册的项目有1000多个。因项目分布于全国各地,每个生产单位都有专门的财务人员,因此,为了提高工作效率、反映项目概况、了解项目进度、掌握收支情况、加强双清工作,用狐表建立了项目管理系统,同时,为了方便考勤,特别是驻外机构的考勤,建立了考勤管理系统。

 

二、我的编程历史

我的专业是铁道工程地质,编程不是我的工作内容,只是业余爱好,因此,对编程语言或开发平台的要求比较高。

11991年搞课题时,我是课题成员,一位师弟用dbaseⅢ建立了AB铁路沿线滑坡数据库,由于课题涉及聚类分析和综合评判,我就同步自学了Basic1981年大学课程是Fortran77,但至今没有用过)、Foxbase和数量化理论。1994年,我独立承担课题,在师弟的代码基础上用Foxbase建立了CD铁路沿线滑坡数据库。

2、我用Foxbase为财务科建立了工资管理系统,主要是打印工资条(之后应上级要求采用了统一的商业版财务软件)。

3、应同事要求,我根据同事的Basic代码,利用Foxbase的数据管理功能代替BasicData语句,加之Foxbase固有的计算功能,开发了集滑坡稳定性计算、指标反算、推力计算、抗滑挡墙设计、抗滑桩设计、越顶检算于一体的滑坡支挡结构设计软件。

4、我还用朱崇君的CCED为财务科进行过奖金分配、税金计算,甚至在1997年用CCED进行过投标项目的各项成本分析、成本调整和报价调整。

以上这些都是DOS时代的做法,效率很低,特别是数据库管理,调试非常麻烦,占用了很多时间。

Windows普及后,虽然无意间发现了易表,也下载、安装了破解版,但因暂时没有项目,所以没有试用。

52005年,我承担课题时,用Excel表格和VBA编程,完成了瑞典圆弧法和简化毕肖普法的稳定性计算软件,考虑了自然斜坡、人工边坡、考虑桥台、考虑一个桥墩、考虑两个桥墩等工况的稳定性计算,但因使用方法和代码保密问题,仅限个人使用。

62009年起,作为监理单位,和勘察单位一起用Excel进行铁路工程地质勘察钻孔、试坑的进度管理和工作量统计。

72011年,随着OfficeAutoCADVisual Basic的普及和完善,我用Excel(用于存取数据)和VB(用于按钮界面和后台计算)相结合代替Foxbase,改进了前述的滑坡支挡结构设计软件,并增加了利用CAD绘图算量功能。

公司的OA平台一直在用总公司委外开发的即时通,虽然现在又推出新的广讯通及其OA平台,但原来花钱请人开发的财务用表(包括项目立项、支票、现金、保函等申请、审批)插件都在即时通上,而广讯通的服务器不在本地,且浏览器只认大家都不愿意用的IE,因此,多数员工并没有安装,更别谈使用了,花钱请人在广讯通上继续加入财务用表的想法也就一拖再拖,而我是第N方,始终没有相关知识和能力添加插件。所以,独立开发软件很有必要。

 

三、我的狐表作品

1、我的作品:2012年起,我用狐表为公司先后开发了项目管理系统、物业管理系统、考勤管理系统;为了自己和被我监理的勘察单位工作方便,开发了勘探管理系统;开发的证件管理系统暂未投入使用;拟开发文件管理系统;去年就在考勤管理系统中增加了考核管理功能,希望今年能被公司启用。其实,现在购买了永久开发版,就是很想根据公司的管理现状,实现即时通和OA功能,把所有的管理系统合并,包括增加体系管理系统、资产管理系统,以及前述的财务用表审批系统。

说句实在话,我是在网上匆匆了解了狐表的强大功能(基本没怎么试用)后,才开始承接公司的项目管理系统开发任务的,此前,作为部门办公室主任的我和所有的财务人员一样,一直用Excel管理项目,上报进度和计划成本。

2、个人收入:全是公司内部的事,不便透露。

3、公司效率:就用本月考勤说吧,原来拖拖拉拉,到20日还说没完成考勤,要求我修改限制日期,但是,上月人事处通知,11月的考勤必须在122日前完成,否则,工资要到明年一月才能发。结果,大家都如期填完考勤了,今天已经拿到工资条了,说明工资已经打到卡上了。

再举个效率的例子:每月上报总公司的项目台账,如果各部门自己用Excel表格做,再汇总后合并、上报,那么,15个部门投入15人天也做不完,但如果把数据填在项目管理系统中,不需汇总,只需利用已建好的Excel报表模板,一分钟就全部搞定。

4、公司效益:项目管理系统的数据来自项目经理填报和部门会计从财务账套导入,因此,账目清楚了,成本就容易控制了,欠款(包括投标担保和履约担保)就容易催收了,效益自然而然就能保证了。

 

四、我的理想软件

我的编程经历、对软件的使用经验、功能探索、收费情况、升级期限、答疑方式了解后发现:

1、虽然广泛应用的Excel简单易用,但其权限管理、菜单设计、代码保护等始终是一道无法逾约的鸿沟。

2、大家非常喜欢的B/S架构虽有优势,但因B/S架构的软件依赖于形形色色的浏览器仍然会有这样那样的问题。比如我说过的有时只认IE,还有不能禁用弹出窗口、必须把网站的IP地址添加到IE的信任中、必须用兼容模式、必须耐心升级编程语言和插件、要经常修复浏览器、有的还是离不开客户端、下载客户端软件时必须记住IP地址和端口,等等,但这些对最终用户的要求确实是偏高的。

3B/S架构的软件可能是免费的,开发成本也可能不高,但往往按用户数收费的后期成本是难以承受的。

4B/S架构的软件虽然不贵,开发成本也可能不高,但后期升级期限、答疑方式、服务器租用、会导致成本增加,数据安全也成问题。

5B/S架构的软件对我来说最致命的是代码不是我熟悉的、最通俗易懂、简单明了的VB

6、其他软件非常庞大,不知道从何下手,根本没有试用。

所以,我最终还是回到了狐表,特别是赶在最后的优惠期限内升级到了永久开发版。

 

五、我的开发心得

1、狐表的帮助文件很长、很详细,但也缺少一些自己想要的东西,所以,不能全靠帮助,也没必要把它看完,甚至看几遍,而是了解基本知识后就可以开始实战,不懂再看帮助,否则,会记住了这个忘了那个。

2、狐表的范例也很多,但不是一开始就能用到的,还是在需要的时候再看吧。

3、听狐爸的话,最好是在系统菜单的基础上修改菜单,毕竟现在大家用的Office都是2007以后的版本了,菜单是习惯的。而且,这种菜单基本不用下拉,用户一目了然。

4、还是听狐爸的话,尽量用表,不用窗口,我的项目管理系统就只有一个登录窗口、一个项目管理表(列数实在是太多了)的录入窗口。大家都用过Excel表,习惯了。

5、尽量通过增加按钮减少用户操作。比如考勤管理系统,每月要初始化表,我就增加了一个考勤增行按钮,只要一点,就克隆所有人员的上月考勤项目,同时与人员管理表配合,检查该人员是否调整到别的部门了,若是,给个提示,考勤项目为空。然后让项目经理(生产单位)或部门领导(机关)点复核行按钮复核相关人员是否在该项目或该部门考勤。复核和审批时,引用项目管理表,看看该项目是否允许考勤。复核后,才会在填写出差管理表时出现项目经理(或部门领导)所管成员的名单供选择。

6、有空的时候多看帮助,加深了解,发掘功能,提高能力,优化代码,提高效率。

7、经常到论坛逛逛,狐友们会有好的东西分享。或者狐友的问题也是你的问题,会提高你的水平。比如,添加删除背景色和批注功能。

8、把自己发现的软件问题,包括不完美之处贴出来,建议狐爸改进。

9、要以用户为中心,想办法尽量减少用户的操作,包括尽量引用相关表来减少列数,这也就提高了自己的开发水平。例如,我的考勤管理系统中,只有考勤管理表有考勤的项目名称,请假管理表和出差管理表都不用填项目名称。

10、能力在你的脑中。有狐友发帖,可以增加一张修改管理表,记录谁修改了哪张表的哪一行,并保存了这一行的所有内容,而不是被修改单元格的内容,目的是可以恢复到某个日期。但因恢复到某个指定日期是不现实的,因此,没必要记录整行。于是我修改了代码,只要求记录修改了的单元格。其实这也不行,特别是重置列时,会产生大量的修改记录,还有,对于项目管理系统来说,每个月从财务账套导入本月截止支出、到款、借款余额、本年税金、本年薪酬等等,会产生大量的记录,因此,对于添一行、添多行、重置列、快速清零、支出到款等等按钮,不要保存修改记录,这就要引入一个公共变量button,初始值为0,如果按了上述按钮,则按钮代码的第一行为button=1,最后一行为button=0,在DataColChanged代码中加入相应的判断即可,以大大减少修改管理表的记录数,提高运行速度。

 

总之,虽然狐表还有一些不足,但从功能、价格、服务整体来说,加之有活跃的论坛、忠诚的狐友、热忱的版主(我就不一一点名了),还是值得推介的。

但是,我要批评狐爸:自从有了你的狐表,我变得不务正业了,几乎天天要上论坛看看,狗狗更是天天随电脑带着,害惨我了。

 

下面我介绍一下我看法的考勤管理系统。

 

六、考勤管理系统贴图

 

以下是开发者的界面,其他用户需要隐藏部分按钮和表列。希望对开发考勤管理系统的狐友有点帮助。

 

1、日常工作菜单

 

 

特色按钮是考勤增行和自动考勤。

 

2、统计表报菜单

 

 

报表管理组中打印请假条、考勤表、差旅费表、加班费表的按钮。

 

3、配置栏上的其它菜单

 

 

 

字号选项用于调整当前表和整个菜单的字体大小。事件代码如下:

 

Dim fnt As Font = CurrentTable.Font

Dim Size As Integer

'尝试将组合框的内容转换为整数,成功则将字体大小设为此整数

If Integer.TryParse(e.ComboBox.Text, Size) Then

CurrentTable.Font = New Font(fnt.Name, Size, Fnt.Style)

CurrentTable.AutoSizeCols()

CurrentTable.AutoSizeRows()

CurrentTable.AutoSizeHeaderRow()

BaseMainform.Controls("C1Ribbon1").Font = New Font("宋体",size)

End If

 

4、不可缺少的字典管理表

 

 

“考勤月份”标记对应“部门名称”是否已经完成本月考勤;

“考勤名称”的两种情况用于“自动考勤”后在“考勤管理”表上必须手工填写对应的“考勤符号”,而“其它”用于新入职前的几天没上班、死亡后的几天没上班等。

“差费等级”用于“人员管理”表中确定“差费标准”;

每个“假别”都有对应的符号,用于点击“自动考勤”后完成“考勤管理”表。

“节假日”、“双休日”、“工作日”涉及到加班费的计算,也有对应的符号。

“地区系数”和“对应地区和海拔”用于填写“出差管理”表时提示,前者用于计算差费。

 

注:这个字典其实做得很不好,更好的方式请参考帮助:

http://www.foxtable.com/help/topics/1528.htm

 

 

5、考勤管理表

 

 

只有项目经理在此表复核后才能填写加班管理表和出差管理表。

复核之后不能更改项目名称,解决办法就是取消复核。

黄底色可修改,1-31日是自动考勤的,只有审批后才能修改,之前修改无效,点自动考勤就会被替换。

扣工资只有审核人根据考勤结果填写。

 

6、请假管理表

 

 

“已休天数”仍为黄色,这是缺点,应该通过流水账自动计算。

 

7、出差管理表

 

在部门名称列选择姓名,自动填写姓名和差费标准(来自人员管理表)。

 

8、加班管理表

 

 

在部门名称列选择姓名,自动填写姓名和加班费基数(来自人员管理表),每天一条记录。

 

9、项目管理表

 

 

选用项目管理系统的项目管理表的部分列,不能修改。用于考勤管理表选择允许考勤的项目。

 

10、权限管理表

 

 

表格形式的权限管理,更加直观、方便。

 

11、菜单管理表

 

 

为了不改变菜单按钮的位置,采用可用与不可用,而不是可见与不可见。

 

12、加班差费表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


切换表格时生成,便于财务人员导出Excel文件,并从Excel向财务账套导入加班费和差费,也可以向银行提供差费,以便发放。