
Hi,大家好!
最近,我把易登 EdonSoft Access 开发框架又更新了一轮。这次我最想先介绍的,是纯 VBA 工作流中心。
它把流程设计、任务分配、待办办理、退回重提和过程跟踪放进同一套 Access 工作流里。对做 Access 业务系统的人来说,重点不只是多了几个审批按钮,而是有了一个可以配置流程、查看任务、处理单据的中心;流程设计和日常办理都在 Access 原生窗体中完成。
为什么需要它?一张报销单录进系统只是开始:接下来谁审核,金额不同要不要走不同路线,资料被退回后申请人怎么修改并重新提交?如果这些判断散落在各个窗体按钮里,流程一变就得四处找代码。工作流中心要解决的,正是这类审批流程难集中、难维护的问题。

易登 EdonSoft Access 开发框架主界面示例框架主界面示例:导航、业务入口和图表集中在同一个桌面工作界面中。
我做工作流中心,首先考虑的是一张业务单据从发起到办结,使用者能不能顺着做下去,开发者能不能在一个地方看清流程规则和办理情况。
以框架里的报销示例来说,申请人提交以后,单据进入部门审核。部门审核通过后,可以根据金额条件直接结束,也可以继续交给总经理审核。审核人发现资料有问题,可以退回;申请人修改以后,再重新提交。
这条路线看着不长,自己写的时候却很容易散落在不同窗体里:提交按钮改一个状态,审核按钮再改一个状态,另外写查询判断谁能看、谁能办。流程稍微调整一下,就得回头查哪些按钮事件受影响。
现在,流程有了集中设计的地方。

工作流设计器中的报销示例、条件分支与退回路线报销示例的流程设计:节点之间既有正常审批路线,也有条件分支和退回修改路线。
在流程设计器里,可以设置节点、连线和条件分支,并按角色、指定用户或发起人安排办理人。业务要求“交给部门审核”,和“交给某个固定账号审核”,可以在节点分配时分别处理。
设计好以后,先保存共享草稿,确认规则,再发布为可发起的流程版本。草稿和已发布流程分开管理,修改流程时不必把正在办理的单据一起改掉;新发布的版本,也不会直接改变已经发起的审批实例。
接下来是日常办理。工作流中心提供“我的待办”“我的发起”“我的已办”等视图,也有待办事宜、流程监控和流程管理入口。申请人看自己发起的单据,审核人看分配给自己的任务,不需要先翻一遍全部记录。
工作流中心的报销单据、当前节点和办理记录
工作流中心示例:单据状态、当前节点、办理记录和操作入口放在同一处。图中为报销演示数据。
打开单据以后,可以查看当前状态、所在节点和办理记录,再执行当前任务允许的操作。审核通过后继续往下走;退回后由申请人修改、重新提交。这比只在表里放一个“已审核”字段,更能说明一张单据究竟办到了哪一步。
任务提醒也能帮助用户找到要处理的事情。不过,提醒看过了和审批办完了是两件事,最终还是以实际办理结果为准。
这套工作流中心是纯 VBA 写的,流程设计和审批办理采用 Access 原生窗体。对已经在写 Access 业务系统的开发者来说,理解和接入它,仍然是在熟悉的技术环境里工作。具体业务的表结构、单据内容和校验规则,继续按自己的项目来设计。
报销只是框架提供的演示流程,借它能看清发起、分配、审核、退回和重提怎么配合。要用于采购申请、费用审批等实际业务,还需要把相应的业务规则接好。
工作流中心涉及流程设计、版本管理和具体办理,细节比较多。我会再单独写一篇文章,并制作一段视频,专门演示从配置流程到实际审批的完整过程。
工作流中心属于专业版功能,使用前需要开通审批流程授权。
开发更快,先把基础 CRUD 省下来
工作流解决单据怎么往下走,代码生成器解决的则是:一个业务模块怎么更快搭起来。
比如要加一个客户资料模块,我会先确定业务表、主键和字段,再配置列表显示哪些列、编辑窗体放哪些字段、哪些内容必填,以及需要哪些按钮。随后生成主入口、列表和编辑窗体,把基础新增、查询、修改、删除操作先准备好。
专业版代码生成器的配置界面代码生成器配置界面:选择业务表后,再设置命名、字段和操作按钮。这张图展示的是配置入口。
生成器支持单表,也支持主子表。普通字段可以采用双列布局,长文本字段整行显示;需要时,还可以配合自动编号和菜单入口。保存以后刷新列表这一类常见处理,也不用在每个模块里从头安排。
真正可编辑的日期字段,还能自动绑定日期选择事件。以后加一个订单日期、预计完成日期,不必再逐个文本框重复挂接相同的选择逻辑。
这些地方节省的是重复开发时间。客户编号能不能重复、订单在什么状态下允许删除、保存前要核对哪些业务条件,仍然要由开发者判断和编写。基础 CRUD 有了以后,时间才更容易花在这些项目真正不同的地方。
我更看重这一点:生成器把常见窗体和操作搭起来,业务开发仍然可以沿着 Access、VBA 和框架接口继续做,不用把所有需求都塞进一套固定的表单配置里。
界面更现代,Access 和 Web 各做擅长的事不少人对 Access 的印象,还停留在默认窗体、灰色按钮和密密麻麻的字段。其实,默认外观不等于 Access 只能做成那个样子。
框架把导航、主题和业务窗体布局统一起来,再根据使用场景配合 Web 树、数据表格和图表。管理人员看统计,录入人员查明细,使用的展示方式可以不同,业务入口仍然保持一致。
Access 中嵌入的 Web 数据表格示例Web 数据表格示例:在 Access 窗体中使用网页表格进行数据展示、搜索和分页。
例如数据表格,数据由 Access 读取后交给网页显示,网页提供搜索、分页等交互,再把相应操作交回 VBA。图表则适合把原来需要逐行看报表的内容,换成更直观的统计展示。
这里的 Web 应用,是桌面 Access 中嵌入网页界面,和 VBA 配合工作,并不等于系统已经变成脱离 Access 的浏览器应用。相应组件也要满足 Access 版本及浏览器控件的运行条件。
我不会为了换一种外观,就把熟悉的业务逻辑全部重写。适合原生窗体的地方继续用原生窗体,适合网页展示的地方用 Web,两边配合,才能兼顾界面体验和后续维护。
Excel 导入在业务项目里出现得太频繁了。客户名单、物料档案、期初库存,每一个模块单独写一套导入代码,很快就会有多种字段映射方式、多种错误提示,维护起来也麻烦。
这次通用导入继续优化了读写流程。Excel 数据通过 Range.Value2 分块读入数组,再经过暂存、校验和批量追加,减少逐个单元格往返读取和逐条写入目标表的开销。目标既包括导入速度,也包括失败时能不能找到原因。

通用 Excel 数据导入的文件选择、字段映射和导入入口通用导入入口:数据源、字段映射、错误明细和导入历史集中在一个工具里,图中为选择文件前的状态。
选好文件和目标表以后,可以设置字段映射,导入前检查类型、长度和必填内容。错误明细用于定位问题,批次历史用于回看导入情况;总体进度和当前阶段进度分开显示,用户能知道程序正在读取、校验还是写入。
默认情况下,校验没有通过就不追加。即使选择跳过坏行,最终写入如果触发数据库约束,仍然需要按批次回滚,不能把“显示导入成功”放在数据完整性前面。
它可以用于 Access 本地表、后台链接表和 SQL Server ODBC 用户表。实际速度会受文件大小、字段数量、校验规则和后端环境影响,不能拿一个固定倍数代表所有项目;但把通用导入集中维护,新增模块时就少了一套要反复编写和测试的工具。
日期输入看起来是小功能,遇到统计月份、排产周次、查询时间范围时,普通的单日期日历就不够用了。
框架里的日期选择器采用原生 VBA 和 Access 窗体,不需要额外的日历 ActiveX 控件。除了日期、日期时间,还包括年份、年月、周、独立时分秒、日期区间和日期时间区间选择。

原生 VBA 日期时间选择器,包含日历和时分选择日期时间选择示例:同一面板中选日期、小时和分钟。
录订单时选一个日期,做月度统计时选年月,查一段时间的记录时选起止范围。控件选择方式跟着业务走,用户就少一点手工输入,开发者也少一点重复的格式转换和日期校验。
带示例起止日期和秒级时间的日期时间区间选择器日期时间区间示例:选择起止日期,并分别设置时间,适合按时间范围查询记录。
和代码生成器配合以后,常见日期字段可以直接挂上选择入口;更具体的年月、周和范围选择,再按业务需求调用对应接口。
这次更新里,工作流中心负责单据审批,代码生成器帮忙搭好常用模块,通用导入和日期选择器处理经常遇到的细节;界面上则保留 Access 原生窗体,并在适合展示的地方使用 Web 表格和图表。这些能力放在同一套框架里,开发新模块时可以沿用已有的入口和做法,不用每个项目都从头搭公共部分。
我做这套框架,并不是要把业务规则塞进固定模板。生成器先处理重复的窗体和 CRUD,工作流中心提供流程配置与办理入口,具体表结构、校验和业务判断仍由开发者按项目决定。对已经熟悉 Access 和 VBA、主要开发企业内部管理系统的人来说,这种方式能省掉一部分重复搭建,同时保留按业务继续扩展的空间。
本次 11.11 活动,专业版优惠价 3888 元,赠送半年一对一开发指导。
买框架以后,怎么把自己的业务表接进去、怎样组织窗体和模块,往往比“按钮在哪里”更影响项目能不能继续做下去。我把一对一开发指导放进这次活动,也是希望工具和实际开发过程能接起来。
框架介绍和功能说明可以在官网查看,具体授权与指导安排请购买前确认。

技术培训
定制开发
技术支持