数据库操作的设定


“数据库操作”,用于设定对数据库表的操作,以供 HMI监控画面取得、插入、更新或删除数据库的记录。

在本画面上可以编辑或确认数据库操作的设定。


内容

本画面的操作

追加数据库操作

本画面的操作



数据库操作ID

设定数据库操作的ID。

数据库操作的ID字符串的格式是,以小写字母开头,由小写字母和数字构成的字符串。

不能使用已经被使用的ID。

概要

数据库操作的描述。

数据库操作类型

设置数据库操作的类型。

数据库操作的类型有“取得”、“更新”、“追加”和“删除”四种,分别对应数据库SQL语言的“SELECT”、“UPDATE”、“ADD”和“DELETE”操作。

“取得”是取得数据库表中满足所定条件的记录。

“更新”是用提供的数据,更新数据库表中满足所定条件的记录。

“追加”是将提供的数据插入到数据库表中。

“删除”是删除数据库表中满足所定条件的记录。

数据库表名

指定数据库操作的目标数据库表名。

可以是数据库表中创建的数据库表。

查询操作的数据库

选择要由查询操作的数据库。

选择“内部数据库”以连接到CONPROSYS HMI System (CHS)中使用的数据库。

选择“外部数据库”以连接到不是CONPROSYS HMI System (CHS)的服务器上的其他数据库(PostgreSQL或MySQL)。

有关详细信息,请参见连接到外部数据库

锁定功能

锁定按钮: 点击此按钮,可以锁定数据库操作。锁定的数据库操作除系统管理员和锁定者外,不能被他人修改。

解锁按钮: 点击此按钮,可以解锁数据库操作。只能由锁定者本人或系统管理员解锁。



追加数据库操作

选择“数据库表名”后,可以创建并保存数据库操作。

根据选择的数据库操作类型的不同,设定的步骤也不同。

下面,分别说明各数据库操作种类的设定步骤。

取得

当选择“取得”操作后,会显示“输出数据”、“条件”,和“高级”三个设定区域。

在“输出数据”的“列名”栏设定要取得数据的列的名称,在“功能”列设定统计函数。

“主键列”是HMI数据链接中使用的主键,目的是方便访问查询的结果数据。

按下方的“追加”或“追加所有列”按钮,设定要获取数据的数据库表的列名。

如果要利用统计函数,取得多个值,对于不使用统计函数的列,请在“高级”设定中的,使用“归组”设定。

在“条件”中,设定筛选条件。详细请参阅条件设定

按“追加”按钮,追加一个新的条件表达式。

“高级”设定,设置是否允许重复的结果、排序和分组。

如果要排除重复数据,勾选“不能重复”

如果得到的记录不止一个,建议使用“重新排序”。(如果未设置,每次执行数据库操作的结果的顺序可能不同)

“输出数据”、“排序”、“分组”中,请不要设置重复的列名。


更新

当选择“更新”操作后,会显示“写入数据”、“条件”二个设定区域。

在“条件”中,设定筛选条件。详细请参阅条件设定

按“追加”按钮,追加一个新的条件表达式。

在“写入数据”中,设定要更新的数据的列。

在更新数据中设定HMI变量,可以使用变量的值更新数据库表的记录。

按“追加”或“追加所有列”按钮,可以增加设定新的列。

请不要在“写入数据”中设定相同的列名。


追加

当选择“追加”操作后,会显示“写入数据”设定区域。

在更新数据中设定HMI变量,可以使用变量的值追加数据库表的记录。

在“写入数据”中,设定要更新的数据的列。

按“追加”或“追加所有列”按钮,可以增加设定新的列。

如果数据库表的列,未在这里设定数据或HMI的变量,在插入记录时,将采用数据库表设定时设置的默认值。

请不要在“写入数据”中设定相同的列名。


删除

当选择“删除”操作后,会显示“条件”设定区域。

在“条件”中,设定筛选条件。详细请参阅条件设定

按“追加”按钮,追加一个新的条件表达式。



确认创建的数据库操作

按“生成的SQL命令”按钮,会生成SQL的执行语句,以供确认。当前版本的SQL语法是PostgreSQL的语法。

此外还进行简单的错误检查。


创建数据库操作的示例

例1):在所有的记录中,取得列a的值为最大时,列b和列c的数据(表的列为a,b,c三个)

在数据库操作类型中,单选按钮“取得”。

在“输出数据”的设定区域,按“追加列”按钮,追加列a,列b和列c,然后在列a的“功能”中选择“max”。

本例中,不必设定条件。

在“高级”设定中,为取得列b,列c,在“分组”设定中,追加列b和列c。

最后,按“生成的SQL命令”,确认显示的SQL语句没有问题后,按“保存”按钮,完成数据库操作的设定。

结果显示
例:select max(a) , b , c from dbo.example_table1 group by b, c;


例2):将_timestamp的值在1周前到今天12点为止的所有记录的列b的值更新为0

在数据库操作类型中,单选按钮“更新”。

本例的条件设定,如下图。

上面两行,表示“_timestamp在1周前到今天12点为止”。

在“写入数据”中,因为要将列b设为0,追加一列,选择列b,值设置为“固定值”的输入数据0。

最后,按“生成的SQL命令”,确认显示的SQL语句没有问题后,按“保存”按钮,完成数据库操作的设定。

结果显示
例:update dbo.example_table set _timestamp_ = default , b = '0' where _timestamp_ >= date_trunc('day', current_timestamp) - cast('1 week' AS INTERVAL) and _timestamp_ <= date_trunc('day', current_timestamp) + CAST('12 hours' AS INTERVAL);


当更新,如果不指定_timestamp_“写数据”,请注意,在左右其中追加SQL语句“_timestamp_ =默认”的地步。

关于列名“_id _”,“_ timestamp_”更多的信息,请参考有关创建表。)


例3):数据库表中追加数据,列a的值为“固定值”VALUE,列b的值为变量“dt:dID.cID:tName”。

在数据库操作类型中,单选按钮“追加”。

在“写入数据”设定去,按“追加列”按钮,追加列a,列b。

在列a中选择“固定值”的值,输入数据为VALUE;列b中选择“变量”,输入变量名dt:dID.cID:tName。

最后,按“生成的SQL命令”,确认显示的SQL语句没有问题后,按“保存”按钮,完成数据库操作的设定。

结果显示
例:insert into dbo.example_table ( a , b ) values ( "VALUE" , dt:dID.cID:tName );


追加时,如列的值未设定,将插入列的默认值。列的默认值在编辑表的结构中设定。


例4):在数据库表中,删除列a的值为“VALUE”,列b的值为为零或null的记录。

在数据库操作类型中,单选按钮“删除”。

本例的条件设定,如下图。

请注意右端的选择框中“OR”与“AND”的这顶。

最后,按“生成的SQL命令”,确认显示的SQL语句没有问题后,按“保存”按钮,完成数据库操作的设定。

结果显示
例:delete from dbo.example_table where a = 'VALUE' and b = '0' or a = 'VALUE' and b isNULL;