联系
我们

工作日 9:00-18:00

13632615190

使用“视图表单”扩展普通表单字段

在《“视图”表单》中我们知道怎么增加一个“视图”表单来汇总多个表单数据后,实现多表单汇总查询、统计、引用。那么这一篇我们介绍怎么使用“视图”表单来扩展表单字段。那扩展表单字段有什么好处呢?比如下面场景:

1、根据员工出生日期计算员工年龄(如果是在SQLServer中可以直接使用《虚拟字段》来进行计算,但是MySQL不支持在虚拟字段中使用CURDATE等日期函数);

2、使用视图汇总统计比如子表字段或者其他字段后在主表,主表列表中显示;

也许还有其他很多很多的场景吧。怎么做呢?

1、增加一个视图表单,详情请看“视图”表单》,关键点:视图表单中的“__ID__”字段值必须和主表的“__ID__”字段值相等,比如我增加了这么一个“员工年龄计算”的视图表单,上面就一个“年龄”字段,如下图:

image.png

视图脚本如下,可以看到视图也是从“员工表单表__Employee__”读取数据,中就一个“__ID__”和一个计算年龄的“__Age__”字段:

CREATE VIEW VIEW_ViewEmployeeAge AS
SELECT 
    __ID__,
    DATEDIFF(YEAR, __Birthday__, GETDATE()) AS __Age__
FROM __Employee__

视图中的__ID__字段值必须和主表__ID__字段值相等,至于为什么后面会说到。


2、在主表中引用视图表单字段:在主表单需要引用视图表单字段的位置右键“选择单据字段”,具体操作请看《引用字段

image.png

引用后如下,是不是就可以了呢?不是,如果这时候您先“发布到服务器”然后去看数据库表的话,会发现员工表__Employee__里面增加了一个“员工年龄计算”表单的关联ID字段“__FK_ViewEmployeeAge_”并且这个字段的值都是null,这种显然不可能能够在查询、显示的时候能够关联到视图记录。

image.png

3、关键、关键、关键:增加一个虚拟字段,“虚拟字段名”属性就填上面这个“__FK_ViewEmployeeAge_“虚拟字段脚本”属性填“__ID__”,如下图:

image.png

解释一下为什么这个虚拟字段要这么填:

1、虚拟字段名填__FK_ViewEmployeeAge_的话,发布后,就会自动替代引用“员工年龄计算”表单上的“年龄”字段后自动生成的__FK_ViewEmployeeAge_;

2、虚拟字段脚本填__ID__的话,发布后,这个虚拟字段的值就会直接“复制”员工表__Employee__的__ID__值了,这样的话__FK_ViewEmployeeAge_就会和视图VIEW_ViewEmployeeAge中的__ID__值保持一致,在做类似于下面的LEFT JOIN查询的时候才能JOIN到视图记录:

SELECT e.__NO__, e.__Name__, v.__Age__ 
FROM __Employee__ e LEFT JOIN VIEW_ViewEmployeeAge v 
ON e.__FK_ViewEmployeeAge_ = v.__ID__;

image.png


后记:完成扩展视图后,今后在查询列表,表单详情,以及任何想使用员工表单的地方都可以选择到这个年龄字段,能选员工字段的地方就一定能选到年龄字段了

image.png