可视化元件手册

  1. 首页
  2. 全部文档
  3. 可视化元件手册
  4. 数据库/记录处理元件(16个)
  5. Update更新

Update更新

名称:

Update | 更新

图标:

功能:

  • 数据库的库表记录进行更新(主键确定唯一记录)
  • 可参考“数据及数据库管理”一章中的内容

使用方式:

更新数据库记录

输入

  • <Record>:数据库表记录类型的输入,单数,必须项;输入数据库表记录,数据库表记录元件是一个与其他类型不同的数据类型(“Database Record”类型),当传入常量值到记录中对应的元数据变量(视为库表字段)中时,库表记录元件就成为一条有值的数据库记录的可视化对象,输入要更新的记录对象
    · 在运行时,由此输入元件传入的数据库表元件对象的“Table Name”属性值,就是记录应更新的数据库中的库表的名称,一个库中的库表名是唯一的
    · 数据库的数据库表中的字段类型与名称与无代码开发设计传入的“Database Record”数据库表元件中各子元件类型及名称是关联对应的,请参考“Database Record 数据库表记录”中的说明
    · 更新时只能一次输一个记录,<Record>输入元件是单数,不能修改为复数,如果需要批量处理多条记录的更新,将传值及更新作为一个逻辑修改为复数即可,比如下图示例中,传入表格中的多个行对象(比如用户勾选的多行信息),则多个记录都会更新“shuliang”字段值为50
    · 数据库记录更新时,传入的库表元件中必须含有库表的主键字段变量,且必须有值输入以找到需要更新的特定的某个记录,否则停止执行更新处理;如果传入主键值但没有此主键值的记录,则运行时提示没有记录(默认报错信息框显示在用户界面中);可以在设计时右键单击更新按钮在弹出的菜单中选Add Element—<Not Found>,用此输出连至一个提示信息字符常量再传给弹窗元件,用来显示找不到记录的提示信息给用户,或者直接添加一个记录插入元件,找不到此主键值记录时,将信息作为新记录插入数据库中(前提是其他字段值可为空值,否则也会在用户端执行时报错)
    · 更新时传入的非主键字段变量,就是要更新其内容的字段,传入其中的值为更新后字段对应的新值,如果不传新值,则是传入空值,会删除记录中之前的字段值;如果只更新某些字段值而其他字段值不变,只需新建一个库表元件,放入主键和要更新及需要改为空值的字段变量并传对应值即可,如下图所示

  • <Data Source>:字符类型值的输入,单数,非必须项;用来指定记录更新对象在哪个数据库,用一个字符常量传入数据库名称,常量值是项目配置文件设定的某个数据库名称,无此输入元件则默认为对项目主数据库进行处理
  • <Table Name>:字符类型值的输入,单数,非必须项;用来指定更新哪个数据库表,用一个字符常量传入数据库表的名称,此时会忽略<Record>输入的数据库表元件对象“Table Name”属性值对应的库表名称
  • <Auto Commit>:布尔类型值的输入,单数,非必须项;控制操作数据库处理是否为立即执行更新的模式;注意这与TERSUS开发时数据库处理默认操作模式不同;如果输入为Yes,则在更新记录执行时会立即进行数据库中值的变更处理:
    · TERSUS默认的数据库执行模式是,在同一个Service服务器端处理(包括Secured Service)中,如果全部逻辑完成无异常,数据库才会执行相关操作,如果中间中断,或部分处理后报错/中断,则全部数据退回执行前状态,也就是默认成功完成全部逻辑处理才会更新数据库值

输出:

  • <Updated>:数据库表类型的输出,单数,非必须项;是<Record>传入并更新旧记录完成后的对象,如果更新成功则有输出,输出与<Record>输入相同的记录
  • <Not Found>:数据库表类型的输出,单数,非必须项;执行处理但未成功完成更新处理时输出<Record>输入的记录对象,原因是数据库表中没有主键对应的记录,如果没有记录但也没有添加此输出元件,则会在运行时报错;如果添加此输出且不做更多往下传值处理,则在无记录时,自动停止运行,因为没有此状况下设计向下的逻辑
    · 一个可行的处理方案是,将<Not Found>输出连到一个Insert插入记录元件,这样当没有记录时添加新记录
  • <Done>:空值输出,单数,非必须项;可以手动添加输出元件并用“”命名,用于确认完成处理(有可能完成处理成功更新记录,也有可能发现没有主键对应记录)包含以上 <Deleted>和<Not Found>两种情形

示例:

案例:更新记录

任意一个项目的目录“Common/Templates/Database/Update/Database Test3”中: