联系
我们

工作日 9:00-18:00

13632615190

虚拟字段的使用

虚拟字段是什么呢?

先来看几个例子。

1、假设客户名包括“中文名”和“英文名”,那么就可能存在这样的需求:

  • 导出时需要在同一个单元格中显示“张三三(Tom Zhang)”这样的格式,也许你觉得显示成2个单元格也是可以的,但是有些客户需求就一定要显示在一次;

  • 打印时也有同样的需求,如果是普通的打印我们可以通过“标签+E6脚本”把这两个字段拼接起来打印,这问题不大。单如果是打印成表格呢?问题就和前面这一条一样;

2、假设表单中有2个字段:“总金额”,“已付金额”,那么现在需要在查询列表中显示“未付金额”,以及可能需要按未付金额来进行查询;

3、比如在SQLServer中,我们需要根据员工出生日期计算员工年龄,并能够在查询列表中显示,并且永远都是正确的。


上面这两种情况其实都可以用E6的“虚拟字段”控件来实现。那么什么是虚拟字段呢?在数据库中(MySQL, SQLServer都支持)虚拟字段其实是一个不实际存储的字段,他的值来源于其他字段的计算值。


怎么使用虚拟字段呢?

在E6中虚拟字段控件和普通输入控件一样。在做成“工具箱 - 常规控件”中,找到并拖拽到想要的位置。image.png

设置属性:从下图虚拟字段的属性可以看到,虚拟字段和普通字段区别不大。

别名:和普通字段别名一样,用于在Web客户端时候自动生成字段标签;

所属单据:虚拟字段本身就是一个数据库字段(只不过不实际存储值),所以在E6表单中,引用其他单据字段的时候,也可以引用这个虚拟字段过来;

虚拟字段名:表示此虚拟字段在数据库表中的字段名,当你创建了虚拟字段后,你是可以在数据库中使用 “SELECT  虚拟字段名  FROM表名”这样的查询语句的,可以看出来虚拟字段和普通字段一样,区别就是他不实际存储值;

虚拟字段脚本:这是一段SQL脚本,比如我想将表中的“Name”和“NameEn”两个字段组成“Name(NameEN)”这样的格式,则这里可以输入“Name + '(' + NameEN + ')' ”这样的;在比如上面的我要显示“未付金额”,假设我的“总金额”和“已付金额”字段分别为“__PremiumNewBase__”和“__FeeIn__”,则这里就可以输入“__PremiumNewBase__-__FeeIn__”;

比如在SQLServer中(MySQL不支持日期这种计算),知道员工出生日期(字段名为 Birthday)则可以用下面的语句,使用虚拟字段计算员工年龄:

DATEDIFF(YEAR, Birthday, GETDATE()) - 
CASE 
    WHEN (MONTH(Birthday) > MONTH(GETDATE())) OR 
         (MONTH(Birthday) = MONTH(GETDATE()) AND DAY(Birthday) > DAY(GETDATE())) 
    THEN 1 
    ELSE 0 
END

虚拟字段类型:表示虚拟字段结果类型;

虚拟字段长度:这个其实目前意义不大;

image.png


虚拟字段的使用:

增加了虚拟字段后,你就可以在查询列表,打印模版,Excel模版,Word模版中使用这个虚拟字段了,在表单或者打印模版中也可以使用E6的取数脚本“GetValue("虚拟字段名")”读取虚拟字段的值。总之,虚拟字段在E6子就是一个只读的普通字段。


虚拟字段在我们实际的客户需求中,解决了很多非常棘手的问题。