《盟威软件快速开发平台》在线帮助中心

临时表解决方案

在业务功能实现中,如采购单、销售单等各种单据,都会遇到需要把多条记录做为一个整体看待,在点击“保存”按钮提交保存的的时候,才将其一次性批量更新。那么在编辑数据的过程中,就得有一个用于临时性存储的地方,对于单条记录,我们可以通过将值写入窗体控件值,但是对于多条记录,这个方式就不适用了,因为控件只有一个,而值却有多个。

在 Access 中解决这个问题最简单好用的方式,莫过于采用本地临时表来进行缓存,但是如果直接将临时表放在客户端主程序中,却又会造成客户端主程序的文件大小快速膨胀,为解决该问题,这里快速开发平台中采用临时数据库方案。

实现思路为:将临时表保存在临时数据库文件 TEMP DB.mdb 中,再将临时表链接至主程序 Main.mdb 中,这样由于主程序中并不真的存在于临时表(只是临时表的一个链接),便不会造成主程序文件大小快速膨胀,虽然也会逐渐增大,但这个过程就会非常缓慢了。

临时表的定义

临时表和其它 Access 表从本质上来讲是一样的,只不过在用途上它只是在每次编辑多条记录时,用于临时性存放数据。因此为了区别临时表和其它数据表,这里采用了特殊的命名规则,即:

以 “TMP_” 开头、以 “TEMP_” 开头、以 “_TMP” 结尾、以 “_TEMP” 结尾。

如 TMP_Orders、TEMP_Orders、Orders_TMP、Orders_TEMP 均视为有效,但建议在一个系统中统一使用同样的命名方式。

临时表的维护

快速开发平台提供了以下界面来进行临时表的设计修改维护,可通过导航菜单“开发者工具 -> 临时数据库管理”打开。

向 TEMP DB.mdb 中添加新的临时表:通过“数据模块自动生成器”自动生成的临时表,或通过手动创建的方式,在主程序 Main.mdb 中创建临时表。然后点击“临时数据库管理”界面中的“更新”按钮即可。此时会将主程序 Main.mdb 中的所有临时表导入到 TEMP DB.mdb 中,而主程序 Main.mdb 中的临时表变更为链接表。

修改或删除 TEMP DB.mdb 中现有临时表:点击“临时数据库管理”界面中的“初始化”按钮,重新释放生成临时数据库文件,然后打开 TEMP DB.mdb 文件对其中的临时表进行修改,修改完成后将其关闭,再使用“临时数据库管理”界面中的“更新”按钮提交文件更新。

关于临时表的一些自动完成的功能

通过临时表解决方案,快速开发平台会自动完成以下功能,这些功能不需要再去手动处理:

  1. 登录时会自动判断 TEMP DB.mdb 文件是否存在,如果不存在,会自动从 SysResBinaries 表中释放资源重新生成一个初始的空的 TEMP DB.mdb 文件。
  2. 登录时会自动判断 TEMP DB.mdb 文件的大小,如果超过 100M,会重新生成文件进行替换。
  3. 登录时会自动删除主程序 Main.mdb 中的所有临时表的链接表,再读取 TEMP DB.mdb 文件中的所有临时表重新创建链接表,因此临时表在主程序中的链接表不需要去手动创建,并且对于临时表被删除或改名之类造成链接表失效的,也会自动处理,无需手动维护。
  4. 由于临时表的链接表会在登录时自动更新,因此改变文件夹路径时仍然不影响使用,不需要手动去刷新。
  5. 因为 TEMP DB.mdb 文件已被保存在主程序的资源表 SysResBinaries 中,因此该文件被删除,也可以自动重新生成。
  6. 点击“临时数据库管理”界面中的“更新”按钮后,会自动清空 TEMP DB.mdb 中的所有数据,并自动进行压缩,然后将文件保存在资源表,因此清空数据,压缩文件的操作会自动完成,不需要手动处理。