17.3 模板数据的初始化
当我们设计好了一个信息系统,正式投入使用之前,还有一项准备工作要做:把系统需要的各种基础数据和期初数据整理好,一次性录入系统。这项工作称为“数据初始化”。
比如,一个制造企业,各种物料有2万多种,为了系统的业务流程正常进行,需要把这2万多种物料以及它们的期初库存事先输入系统。如果全部由人工一条一条地输入,工作量很大;但是因为业务本身不可能停顿,物料的当前库存会随时变化,所以需要在尽可能短的时间内完成这项工作。有没有高效率的解决办法呢?答案是肯定的。
我们在模板上创建的数据表实际上存储在应用数据库中。例如,我们在ESApp1应用中创建了一个订单模板,在其上创建了两个数据表,“订单_主表”和“订单_明细”,打开SQL Server 企业管理器,我们会看到,在ESApp1数据库中增加了两个表,如下图所示。我们填报的订单信息都会存储在这两个表中。
执行“数据初始化”,我们需要做的步骤是:
- 把需要导入系统的数据,事先整理到Excel文件中。
- 把整理到Excel文件中的数据,导入到SQL Server 数据库中已创建的模板数据表中。
- 对模板数据表中的ExcelServerRCID、ExcelServerRn等系统字段赋值,使得这些导入的数据能够让用户在我的工作台上看得到。
上述的第一个步骤,只能靠用户自己手工完成;第2)个步骤,熟悉SQL Server数据库的用户,可以自己做,也可以通过Excel服务器软件的界面做;第三个步骤,只能通过软件的界面完成。
整理需要导入的数据
将需要导入系统的模板数据整理到Excel中的方法很简单,有以下要求要满足:
- 模板的主表上必须定义主键。
- 针对模板上的每个表建立一个Excel文件,要导入的数据放在第一个Sheet中,每列的标题是字段名。
- 如果一个模板上有多个数据表,需要把主表数据和明细表数据分别整理在不同的Excel文件中,但是,明细表上,必须有一个(或几个)字段,相应地Excel文件中有一列(或几列),和主表上的主键字段对应,能够根据这(几)个字段的值定位到主表Excel文件中的某一行。
至于为什么有这三点要求,我们用下面的例子来说明一下。
假设我们要向订单模板导入数据,模板上有“订单_主表”和“订单_明细”两个数据表,把它们的数据分别整理到两个Excel文件中,如下面两个图所示:
现在问题来了,这里共有23条订单_明细的数据,它们是一张订单上的?还是9张订单上的?如果是9张订单上的,哪几条是第一张订单的?哪几条是第二张订单的?
当我们实际填报一份订单的时候,是不用关心上述问题的,因为正填报的订单就是一份,无论多少条明细,都是这一份订单的明细,但当成批导入数据的时候,就不是这么简单了,我们必须能够区分这“大批”的订单明细数据是怎样划分成一张张订单的。
怎样区分呢?因为“订单_主表”的主键是“订单编号”,也就是说,只要知道订单编号,就能唯一地确定一份订单,所以,我们对每一条明细数据也都标注其所在的订单号,如下图所示,我们在明细表上增加一个字段“订单编号”,相应地在需要导入的明细表Excel文件中也增加这一列,靠这列的值和主表中哪条记录的订单编号列相等,来识别每条明细应该归属于哪份订单。
导入数据,进行初始化
- 登录系统,进入设计栏目。
- 在“功能模块”中,找到要导入数据的模板,选择右键菜单【初始化数据】
- 弹出“初始化数据”窗口,选择主表:订单_主表,确定表单填报人,然后选择导入文件,在“导入数据预览”中可以看到要导入的主表数据。点击【下一步】。
4.勾选检查必填选项情况下,当有必填字段未填则会提示未填内容。不勾选时若也有必填未填则可成功导入数据。
5.如果该模板下设置了工作流,那么会弹出如下对话框(否则会跳过这一步),选择导入的数据如何流转,点击【下一步】。
6.如果该模板仅有主表,那么直接点【完成】即开始导入,前面我们分析过了,订单模板下即有主表,也有明细表,所以我们按照提示,点击【下一步】继续选择明细表的导入文件。
7.在如下窗口中,选择明细表,指定明细表中的字段和主键字段的关联关系,然后选择导入文件,在导入数据预览中可以看到要导入的明细数据。点击【下一步】。
8.最后点击[完成],开始导入,最后提示“初始化数据完成!”,点击【确定】。
导入完成后,进入我的工作台,会看到被导入的数据。
初始化之前需要整理数据,如果我们已有若干订单的excel文件又不想逐一整理数据,如何较方便的将excel文件中的订单数据转入系统呢?可以通过前面的7.5.3节中“批量导入Excel文件”功能实现。