《星城软件--顿表》操作说明书

1 组件介绍

        “组件”是《顿表》中最基本的结构与功能单位,通过《顿表》所搭建出来的任何管理系统都是由“组件”构成,就如同建造一座大厦所需要的建筑材料,钢筋、砖块、混凝土……不同的组件有不同的功能,而按功能可划分为:“表格操作组件”、“单据组件”、“关联表格组件”等等,见下图:

        

        不同功能的组件将在后面的内容中逐一细述,这里主要对组件的内部结构做简述:

        A、菜单:几乎每个组件都需要与一个菜单配合使用,一个菜单下可以包含组件的所有元素,如同VC语言中的句柄。《顿表》中有很多操作执行的对象,都是针对菜单的,而菜单下所包含的组件内容,就是被执行的实体。简而言之,菜单就是一个功能模块的载体。

        

        B、数据表:数据表是《顿表》中的核心部分,直接理解为数据库中的表就可以了,没有太大的区别。表同样是由字段组成,字段有不同的类型(字符、整型、备注……)

        值得注意的是,数据表可以脱离组件而存在,或者说数据表可以不和菜单绑定,作为一个内部数据源而隐藏在系统中。如果数据表没有和菜单绑定,那么就不能直观地去管理这些表了,这时要是想了解这些隐藏了的数据表的情况,可以在【开发平台】--【系统开发】--【表管理】中查看,如下图:

        

        C、列表(列表界面):其实就是一个“Tableview控件”加上“Button控件”封装而成的固定界面,让数据以一条条记录的形式呈现。下图就是一个列表界面,列表内容来源于数据表。

        

        D、卡片(卡片界面):由“TextBox控件”、“Button控件”、“Label控件”等控件封装而成的固定界面,把每条记录的数据完全呈现出来,或者可以理解为由操作员录入数据的界面。

        下图是一个常见的卡片界面:

        

        以上所提到的组成部分,除菜单是必须有的,其他部分在一些特殊的组件中可以不存在,如“链接组件”,只需要一个链接与菜单配合使用就行了;还有“数据库操作组件”把一批SQL语句封套在一个菜单(事务)下,以便被调用。这些都将会在后面的内容中讲述,此处作个大致的了解就可以了。

1.1 表格操作

        即数据表的建立、修改,这是整个系统的核心组件配置部分。本组件分为:基础设计、编辑设计、高级设计。

        注:在建表时,表的名称,字段的名称最好不要使用英文的下划线,例如:“学生_生日表”、“学生_编码”,这样的命名会跟后面变量的运用产生冲突!

1.1.1 基础设计

        建立一个基本的数据表,如增、删字段,定义字段类型、字段长度,还有基本操作控件的显示设置,总的来说【基础设计】是新表建立的一个初始化操作。

        

1.1.1.1 字段设计

        设置表字段,增、删字段(名称),定义字段类型,数据长度等等,即针对每个字段进行的基本设置。

1.1.1.1.1

1.1.1.2 整体设计

        用户表操作界面中各个控件的基本设置。

        

        如图:“增加”、“全部删除”、“导入”、“导出”、“查询”控件,操作中的“查看”、“修改”、“删除”控件,“列表控件”的显示都是通过【基础设计】--【整体设计】这里进行调整。

1.1.1.2.1

1.1.2 编辑设计

        【编辑设计】主要是界面美化或是个性化的处理,及输入字段的输入方式、显示方式的处理模块。

1.1.2.1 字段设计

        针对卡片界面中各个输入字段的特殊处理。

1.1.2.1.1

1.1.2.2 整体设计

        这部分的设置和“基础设计”类似,也是针对控件的处理。不过这里更着重于界面的美化与个性化设计,如列数的设定、脚本的设计都是为了美化列表控件和卡片界面。

1.1.2.2.1

1.1.3 高级设计

        【高级设计】是整个系统最灵活的设计部分,也是比较难掌握的部分。这里更多的使用到变量、计算公式,其中还有多个表之间的操作设置。

1.1.3.1 字段设计

        对表字段(列或是卡片)的特殊处理,如设置缺省值,计算公式等等。

1.1.3.1.1

1.1.3.2 整体设计

        对列表界面、卡片界面的特殊设置,如子操作、卡片新增操作等等。

1.1.3.2.1

1.2 单据

        单据设计,比如一个采购入库单,一般是有表头、表尾和表体(货品明细),所以一个单据在系统中就包含了两个表,一个单据头尾表,另外一个是单据表体(明细部分)。

        下面以建立一个“采购入库单”为例,讲解一下单据的设计:

        1、建立两个表,一个是“采购入库单头尾表”、一个是“采购入库单明细表”(表体),建立这个两个表前,先新建两个菜单

        

        在各自的菜单下再建立这两个表(“采购入库单_头尾表”,“采购入库单_明细表”)

        

        

        注:建立这两个菜单的作用只是为了方便管理表的来源而已,其实以上两个表可以在任意菜单下新建的。新建了表后,也可以把对应的菜单删除,菜单和表互相之间是分离的,没有必然的联系。这里建立两个菜单,再建立两个表,只是其中一种构建形式而已。

        “采购入库单_头尾表”,如果要做单据审核流程的话,在建立这个头尾表的时候可以增加“流程控制字段”(见【流程设置】的说明),下图为头尾表的一般字段:

        

        “采购入库单_明细表”,见下图

        

        2、表建立好之后,下面就要建立单据。首先是要新建一个菜单,就叫“采购入库单”,再在此菜单下建立一个“采购入库单据”,见下图:

        

        如上图,点“单据”组件,然后“新建单据”,输入一个单据的名称,最后,“表头表”和“表体表”各自对应好前面新建的“采购入库单_头尾表”和“采购入库单_明细表”

        3、单据建立好,下面就是对单据表头尾、表体部分的设计(要结合前面【基础设计】、【编辑设计】、【高级设计】的内容)

        

        表头设计:字段区分表头、表尾的设计:进入“单据表头尾设计”—“编辑”,把“表尾”对应的字段勾上即可,见下图:

        

        表体设计:增加计算公式,如“数量X单价=金额”,金额的反算“金额/数量=单价”,合计部分的显示,选择表的对应等等,见下图:

        

        两个设计和前面说明的【基础设计】【编辑设计】【高级设计】都类似的,这里就不做冗诉了。

        4、单据效果,见下图:

        

        5、单据的审核流程设置:在“单据头尾设计”--“编辑”--“增加审核控制字段”,添加“已审”、“审核人”、“审核时间”三个字段,如下图

        

        添加了字段之后,单据操作界面中自动会增加上“审核”/“反审”按钮,如下图

        

        

1.3 关联表格

        关联两个表(单据)进行查询,并生成一个新的关联表。

        一次最多关联两个表

        

        “建立关联关系”:将两个表的关联字段标选出来并对应好

        

        “设置数据条件”:设置两个表的过滤条件,只留下符合条件的记录进行关联。设置方式见:【表格操作】--【基础设计】--【整体设计】--【设置数据条件】

        “选择关联类型”:控制关联表中获得的记录类型。(类似于inner join 、left join 、right join 的用法。)

        

        生成的关联表,有些字段是不需要的,可以隐藏起来

        

        关联表出来的效果

        

1.4 合并表格

        多个表(或单据)的合并成一个表,要选择每个表中相同的字段进行合并,如果是数量(整数、实数)类型的字段还可以选择正、负值。生成一个合并的表后,就可以对这个表进行统计分析。

        下图为新建合并表,可以同时把9个表(单据)合并为一个

        

        下图是选择不同的表(单据)中相同的字段进行合并统计(主表无需选择)

        

        表(单据)合并后有些字段我们是不需要的,可以将其隐藏

        

        合并后的效果如下图:(正数部分为入库单记录,负数部分为出库单记录)

        

1.5 报表设计

        对单表进行分组、分类的统计处理,有3种报表类型:“分组报表”、“交叉报表”、“图形报表”

        分组报表:

        “设置报表项目”:选择对应的字段进行分组,一共可以分为3组,然后再选择需要进行统计的字段(即做累加的字段 sum(字段)),见下图:

        

        “数据条件”:设置过滤条件,把不符合条件的记录过滤掉,设置方式见:【表格操作】--【基础设计】--【整体设计】--【设置数据条件】(类似操作)

        “公式设置”:对查询出来的字段进行计算

        “设置查询定制”:这是查询记录的功能,设置方式见:【表格操作】--【基础设计】--【整体设计】--【查询设计】(类似操作)

        交叉报表:把需要交叉查询的字段放在表头列进行查看,其他分组字段类似于“分组报表”的设置。如服装行业ERP的尺码字段一般以列的形式显示,就可以使用这样的报表。

        图形报表:以图形界面的方式呈现报表,有“柱状图”、“饼状图”、“折线图”、“面积图”4种图形,见下图:

        

        

        

        

1.6 外部数据

        可以联接外部数据库,从外部数据库中得到对应的表,再对表进行编辑设计,相当于一个接口的接入。

        

1.7 单据打印

        这是针对单据打印设置的组件,只要在【单据打印】组件中选择对应单据后,就会在对应单据操作界面中自动添加一个“打印”的按钮。(前提当然是先要做好【单据】的设置)

        

        

        而具体要打印哪些字段,或者对字段的布局调整则在“单据头尾设计”和“单据表体设计”中设置。

        具体设计方法和【表格操作】中【基础设计】【编辑设计】【高级设计】是一样的,请参照前面的说明,此处不做重述。

1.8 选择表

        建立一个可供选择录入的表组件。

        应用场景:在录入单据的时候,或者建立资料的时候,一般需要从另外一个表中读取某个字段值,这时就可以使用“选择表”。

        设置方法:具体的设置方法在【表格操作】--【高级设计】--【字段设计】--【选择表】中有详述,这里的设置是和前面的说明互相对应的。

1.9 审批流程

        审批流程设置的基础设置组件。

        如果要使用到审批流程,必须要先在这里设置好两个部分:“流程种类”(即“工作流程的名称”或者叫“工作流程的项目”),“流程定义”(定义每个“流程项目”中包含的步骤)

        设置方法:见【表格操作】--【高级设计】--【整体设计】--【流程设置】,这个地方的设置是互相对应的。

1.10 权限组

        《顿表》固有的权限设置模块,可以由使用者增加权限组,或重新定义各个权限组所拥有的权限。

        

        

1.11 链接

        插入一个网站的链接,在单据、表格保存后执行界面的跳转,或在卡片中执行打开对应网站界面的操作,如下图:

        

        

1.12 超级文本

        编辑文档供菜单调用,一般可以做操作说明,版本说明

        

1.13 HTML

1.14 代码

1.14.1 表格

<button>
<cap>标题</cap>
<control-field>(x17<>1 or x17 is null)</control-field>
<wind>2</wind>(2是菜单序号)
<ask>提问是否执行</ask>
<op>2</op>(2是菜单序号)
<sql>DO:PUTTBKEY;1005;XX</sql>
<sql>INSERT INTO D_1005_1161(XTABLEID,x11) SELECT ([PUTTBKEY;1005;XX]),x6 FROM D_1002_1161 WHERE xtableid=([BILLKEY])(支持变量:([WINDKEY]))</sql>
支持页面变量,再如:<sql>INSERT INTO D_1003_1406(x8) VALUES('([页面变量_x1])')</sql>(及页面日期变量)
在列表页眉中设置如:<input type='input' id='x1' name='x1' />
<result>操作完成</result>
</button>

<add-msg>增加提示</add-msg>
<mod-stop>不能修改的条件,是一个WHERE语句</mod-stop>
<mod-msg>修改提示</mod-msg>
<del-msg>删除提示</del-msg>
<del-sql>删除前执行的SQL</del-sql>
<del-stop>不能删除的条件,是一个WHERE语句</del-stop>
<del-stop-msg>不能删除的提示</del-stop-msg>
<del2-stop>不能删除的条件,是一个WHERE语句,从列表上禁止</del2-stop>

<save-sql-add>保存后执行SQL</save-sql-add>
<save-sql-mod>修改后执行SQL</save-sql-mod>
<del-after-sql>删除后执行SQL</del-after-sql>
注意:以上三个操作支持本条数据字段变量,格式[字段].支持条件[本条],[XTABLEID];同时支持全局变量.

<title-from-main>取主表内容为标题</title-from-main>
<start-sql>打开菜单时即执行SQL</start-sql>

<real-sql>表格中真实显示的数据</real-sql>

<multi-select-row>多选字段/返回值分隔符 (格式如:X12/,)</multi-select-row>
注意:多选值点击操作后即写入到数据库中了,写入SESSION变量为:GRIDMULTICHOSE-菜单编码。凡变量保存于表S_S_PARA2中,可使用([SESSION_])调用

<order-by>语句,如:X2,XTABLEID,ID</order-by>
sql语句支持:
DO:PUTTBKEY;1002;XX 取值([PUTTBKEY;1002;XX])

<excel-getin-dosql>EXCEL导入后执行的SQL语句</excel-getin-dosql>

注意:在卡片专业设计中,保存了当前卡片数据的ID值,变量是:TBID-表值-菜单值

<save-sql-where>保存条件(是一个SQL WHERE语句,[x1]表示输入的值)</save-sql-where>
<save-sql-wheremsg>条件不成立时的提示</save-sql-wheremsg>

1.14.2 单据

<button>
<cap>标题</cap>
<control-field>(x17<>1 or x17 is null)</control-field>
<wind>2</wind>(2是菜单序号)
<ask>提问是否执行</ask>
<op>2</op>(2是菜单序号)
<sql>DO:PUTTBKEY;1005;XX</sql>
<sql>INSERT INTO D_1005_1161(XTABLEID,x11) SELECT ([PUTTBKEY;1005;XX]),x6 FROM D_1002_1161 WHERE xtableid=([BILLKEY])(支持变量:([WINDKEY]))</sql>
支持页面变量,再如:<sql>INSERT INTO D_1003_1406(x8) VALUES('([页面变量_x1])')</sql>(及页面日期变量)
在列表页眉中设置如:<input type='input' id='x1' name='x1' />
<sql>update D_1002_1161 set x17=1 where xtableid=([BILLKEY]) (支持变量:([BILLKEY])、([WINDKEY]))</sql>
<result>操作完成</result>
</button>
<edit-do>1</edit-do>编辑状态有效
<noedit-do>1</noedit-do>非编辑状态有效

<grid-sum-to-X201>X278</grid-sum-to-X201>(注意:X要大写)

<start-sql>打开菜单时即执行SQL</start-sql>

sql语句支持:
DO:PUTTBKEY;1002;XX 取值([PUTTBKEY;1002;XX])

<save-sql-where>保存条件(是一个SQL WHERE语句,[x1]表示输入的值)</save-sql-where>
<save-sql-wheremsg>条件不成立时的提示</save-sql-wheremsg>

1.15 操作组合

1.16 页面组合

2 变量介绍

        使用《顿表》构建管理系统时,同样可以使用变量(全局变量)。这些变量是系统重新构造过的,书写格式都为: ([变量名])

2.1 操作员

        登录系统的操作员名称变量

        书写格式为: ([操作员])

        效果:张三(人名)

2.2 操作员代码

        登录系统的操作员代码(编码)变量

        书写格式为: ([操作员代码])

        效果:01(编码)

2.3 年份

        截取当前年份的变量

        书写格式:([年份])

        效果:2016

2.4 月份

        截取当前月份的变量

        书写格式:([月份])

        效果:06

2.5 日期

        截取当前日期的变量

        书写格式:([日期])

        效果:24

2.6 今天

        截取当前系统的日期

        书写格式:([今天])

        效果:2016-06-24

2.7 当前精确时间

        截取当前时间(时:分:秒)

        书写格式:([当前精确时间])

        效果:08:59:42

2.8 当前时间

        截取当前时间(时:分)

        书写格式:([当前时间])

        效果: 09:01

2.9 日期时间

        截取当前数据库的日期和时间(年-月-日 时:分)

        书写格式:([日期时间])

        效果:2016-06-27 09:03

2.10 换行

        一个换行符,若在一个长文档中可以使用换行变量进行换行

        书写格式:([换行])

        例子:这是一个使用([换行])测试

        效果:

        这是一个使用

        测试

2.11 年份计数_标志_位数

        一个数量累计的变量,每跨一年变量自动归零,重新累计。

        书写格式:([年份计数_标志_位数])

        例子:([年份计数_rk_3]) 前面“年份计数_”是固定格式,表示这个变量按年自动归零;“rk”这是此变量的真实名称,建议使用英文或数字,这个名称不要有重复;“3”是位数,即3位,如果累计数量大于3位会自动增加位数。

        效果:今年内每次调用这个变量就会自动累计,如001、002、003、004……一直累计下去,第二年重新开始累计

2.12 月份计数_标志_位数

        一个数量累计的变量,每跨一个月变量自动归零,重新累计。

        书写格式:([月份计数_标志_位数])

        例子:([月份计数_rk_3]) 前面“月份计数_”是固定格式,表示这个变量按月自动归零;“rk”这是此变量的真实名称,建议使用英文或数字,这个名称不要有重复;“3”是位数,即3位,如果累计数量大于3位会自动增加位数。

        效果:当月内每次调用这个变量就会自动累计,如001、002、003、004……一直累计下去,第二个月重新开始累计

        与年计数类似

2.13 日期计数_标志_位数

        一个数量累计的变量,每跨一日变量自动归零,重新累计。

        书写格式:([日期计数_标志_位数])

        例子:([日期计数_rk_3]) 前面“日期计数_”是固定格式,表示这个变量按日自动归零;“rk”这是此变量的真实名称,建议使用英文或数字,这个名称不要有重复;“3”是位数,即3位,如果累计数量大于3位会自动增加位数。

        效果:当日内每次调用这个变量就会自动累计,如001、002、003、004……一直累计下去,第二天归零,重新开始

        与年、月计数类似

2.14 计数_标志_位数

        一个数量累计的变量,从变量开始使用起,会一直累计下去。

        书写格式:([计数_标志_位数])

        例子:([计数_A_3]) 前面“计数_”是固定格式,表示这是一个永远累加的变量;“A”这是此变量的真实名称,建议使用英文或数字,这个名称不要有重复;“3”是位数,即3位,如果累计数量大于3位会自动增加位数。

        效果:变量使用开始起会自动累计为:001、002、003、004、005、006……

2.15 主表值_表名_字段名

2.16 字段值_表名_字段名

        这是一个枚举变量,把对应表中的字段所有记录值枚举出来。

        书写格式:([字段值_表名_字段名])

        例子:([字段值_货品信息表_名称]) “字段值_”是固定格式,“表名”就是需要引用的表的中文名称(如“货品信息表”),“字段名”是前面表名中含有的任意一个字段名称(如“名称”)

        

        效果:这个表只有三条记录,货品名称被全部枚举出来:生抽,牛肉,海带

2.17 表值_表名_值字段名_条件字段名_值

        获取对应表中某条记录的某一个字段值。

        书写格式:([表值_表名_值字段名_条件字段名_值])

        例子:([表值_服装货品表_品名_款号_KH-001]) “表值_”是固定格式,“表名”就是需要引用的表的中文名称(如“服装货品表”),“值字段名”是前面表名中含有的任意一个字段名称(如“品名”),“条件字段名”为作为指定某记录的条件字段(这里使用了“款号”字段),“值”即符合“款号”条件的值,即款号等于多少的值。

        效果:

        如SQL语句:select 品名 from 服装货品表 where 款号='KH-001'

2.18 表值_表名序号_图片字段_条件

2.19 操作_操作名

2.20 表名_表名称

        使用中文的表名,即建表时的名称,一般使用SQL语句时可以使用这个变量

        书写格式:([表名_表名称])

        例子:([表名_货品信息表]) “表名_”部分是固定不变的,后面的名称就是需要引用的表的中文名称

        效果:D_7452_1003_1022 ,这个是在数据库中的原表名(真实表名),变量只是用中文名称代替了这个表名而已

        

        注:请结合下面【字段名称】变量来理解

2.21 字段名_表名称_字段名称

        使用中文的表字段名称,即建表时的字段名称,一般使用SQL语句时可以引用这个变量

        书写格式:([字段名_表名称_字段名称])

        例子:([字段名_货品信息表_产地]) “字段名_”部分是固定不变的,后面的“表名称”就是需要引用的表的中文名称(如“货品信息表”),“字段名称”是前面表名中含有的任意一个字段名称(如“产地”)

        相当于:1先告诉系统这是一个什么变量?(是“字段名”的变量);2是哪个表的字段名?(是“货品信息表”中的字段);3是这个表中具体哪个字段?(是“产地”字段的名称)

        

        效果:X14 (从上图可以看出,“货品信息表”中“产地”字段的原来名称是 X14)

        注:请结合上面【表名称】变量来理解

2.22 查询语句值_语句

2.23 顿表值_变量

2.24 操作按纽_操作名_按纽标题

2.25 操作页面_操作名

2.26 记录值_表名_字段名_条件

2.27 空值_取值_值

2.28 数据库操作_操作名

2.29 表键值_值名

2.30 报名页_表名_键_是否

2.31 是否_判断值_否值_是值

        按条件取值的变量。if (条件) then (值1) else (值2)

        书写格式:([是否_判断值_否值_是值])

        例子:([是否_[开始]_中间部分_开始部分]) “是否_”部分是固定不变的,“[开始]”是条件,即这个字段必须是布尔值,“中间部分”是[开始]=假的取值,“开始部分”是[开始]=真的取值

        效果类似于:

        if [开始] then 开始部分

        else 中间部分

2.32 菜单_菜单值

2.33 变量_

2.34 微信号

        针对绑定微信端的变量,获取对应的微信号信息

        书写格式:([微信号])

        例子:一般用在表字段的缺省值中,如下图

        

2.35 微信号姓名

        针对绑定微信端的变量,获取对应的微信名称

        书写格式:([微信号姓名])

        例子:一般用在表字段的缺省值中

2.36 微信号性别

        针对绑定微信端的变量,获取对应的微信的性别信息

        书写格式:([微信号性别])

        例子:一般用在表字段的缺省值中

2.37 微信号头像

        针对绑定微信端的变量,获取对应的微信的头像信息

        书写格式:([微信号头像])

        例子:一般用在需要引用微信头像的HTML页面设计中

3 脚本介绍

3.1 表格

<button>
<cap>标题</cap>
<control-field>(x17<>1 or x17 is null)</control-field>
<wind>2</wind>(2是菜单序号)
<ask>提问是否执行</ask>
<op>2</op>(2是菜单序号)
<sql>DO:PUTTBKEY;1005;XX</sql>
<sql>INSERT INTO D_1005_1161(XTABLEID,x11) SELECT ([PUTTBKEY;1005;XX]),x6 FROM D_1002_1161 WHERE xtableid=([BILLKEY])(支持变量:([WINDKEY]))</sql>
支持页面变量,再如:<sql>INSERT INTO D_1003_1406(x8) VALUES('([页面变量_x1])')</sql>(及页面日期变量)
在列表页眉中设置如:<input type='input' id='x1' name='x1' />
<result>操作完成</result>
</button>

<add-msg>增加提示</add-msg>
<mod-stop>不能修改的条件,是一个WHERE语句</mod-stop>
<mod-msg>修改提示</mod-msg>
<del-msg>删除提示</del-msg>
<del-sql>删除前执行的SQL</del-sql>
<del-stop>不能删除的条件,是一个WHERE语句</del-stop>
<del-stop-msg>不能删除的提示</del-stop-msg>
<del2-stop>不能删除的条件,是一个WHERE语句,从列表上禁止</del2-stop>

<save-sql-add>保存后执行SQL</save-sql-add>
<save-sql-mod>修改后执行SQL</save-sql-mod>
<del-after-sql>删除后执行SQL</del-after-sql>
注意:以上三个操作支持本条数据字段变量,格式[字段].支持条件[本条],[XTABLEID];同时支持全局变量.

<title-from-main>取主表内容为标题</title-from-main>
<start-sql>打开菜单时即执行SQL</start-sql>

<real-sql>表格中真实显示的数据</real-sql>

<multi-select-row>多选字段/返回值分隔符 (格式如:X12/,)</multi-select-row>
注意:多选值点击操作后即写入到数据库中了,写入SESSION变量为:GRIDMULTICHOSE-菜单编码。凡变量保存于表S_S_PARA2中,可使用([SESSION_])调用

<order-by>语句,如:X2,XTABLEID,ID</order-by>
sql语句支持:
DO:PUTTBKEY;1002;XX 取值([PUTTBKEY;1002;XX])

<excel-getin-dosql>EXCEL导入后执行的SQL语句</excel-getin-dosql>

注意:在卡片专业设计中,保存了当前卡片数据的ID值,变量是:TBID-表值-菜单值

<save-sql-where>保存条件(是一个SQL WHERE语句,[x1]表示输入的值)</save-sql-where>
<save-sql-wheremsg>条件不成立时的提示</save-sql-wheremsg>

3.2 单据

<button>
<cap>标题</cap>
<control-field>(x17<>1 or x17 is null)</control-field>
<wind>2</wind>(2是菜单序号)
<ask>提问是否执行</ask>
<op>2</op>(2是菜单序号)
<sql>DO:PUTTBKEY;1005;XX</sql>
<sql>INSERT INTO D_1005_1161(XTABLEID,x11) SELECT ([PUTTBKEY;1005;XX]),x6 FROM D_1002_1161 WHERE xtableid=([BILLKEY])(支持变量:([WINDKEY]))</sql>
支持页面变量,再如:<sql>INSERT INTO D_1003_1406(x8) VALUES('([页面变量_x1])')</sql>(及页面日期变量)
在列表页眉中设置如:<input type='input' id='x1' name='x1' />
<sql>update D_1002_1161 set x17=1 where xtableid=([BILLKEY]) (支持变量:([BILLKEY])、([WINDKEY]))</sql>
<result>操作完成</result>
</button>
<edit-do>1</edit-do>编辑状态有效
<noedit-do>1</noedit-do>非编辑状态有效

<grid-sum-to-X201>X278</grid-sum-to-X201>(注意:X要大写)

<start-sql>打开菜单时即执行SQL</start-sql>

sql语句支持:
DO:PUTTBKEY;1002;XX 取值([PUTTBKEY;1002;XX])

<save-sql-where>保存条件(是一个SQL WHERE语句,[x1]表示输入的值)</save-sql-where>
<save-sql-wheremsg>条件不成立时的提示</save-sql-wheremsg>