OrDroid APP 相关
OrDroid CloudKanBan 对象插件使用说明
OrDroid V13 APP 安装与使用说明
01- V13 移动浏览器升级及更新说明
02- V13 移动事务对象插件使用说明
03- V13 查询元对象插件使用说明
04- V13 协同工作流插件使用说明
04- V13 消息对象插件使用说明
05- V13 ESOP 插件使用说明
06- V13 DOC 插件使用说明
07- V13 Andon 插件使用说明
09- V13 自定义 Apk 插件使用说明
10- V13 OrDroid Html 网页插件使用说明
OrDroid V13&V15 版本差异说明
OrDroid V15 APP 安装与使用说明
01- V15 主程序安装与使用说明
02- V15 其它插件安装与更新说明(除主程序外)
03- V15 移动事务对象插件使用说明
04- V15 打印插件安装与使用
Poinse一体式打印机参数说明文档
TSC打印机参数说明文档
佳博打印机参数说明文档
富立叶一体式打印机参数说明文档
斑马打印机参数说明文档
汉印打印机参数说明文档
瑞利信一体式打印机参数说明文档
蓝畅一体式打印机参数说明文档
译维打印机参数说明文档
05- V15 消息对象插件说明
OrDroid-Msg 消息推送架构搭建手册
消息推送机制说明
消息通知函数说明
06- V15 DOC插件使用说明
07- V15 ESOP插件使用说明
08- V15 自定义插件开发指南
09- V15 自定义打印插件开发指南
10- V15 OrDroidSSO使用说明
11- UHF-SLR5100系列RFID设备使用指南
11- V15 OrDroid Html网页插件使用说明
OrDroid 开发配置与测试用例
OrDroid 查询对象挂载 Mrz 使用说明
OrDroid 通过斑马打印机ZPL指令实现移动打印
OrDroid 限制同一个用户在不同设备同时登录
-
+
首页
03- V15 移动事务对象插件使用说明
# 一、概述 OrDroid V15.2 移动事务对象插件与 V13.0 版本使用方法基本一致,本文着重介绍不同与新增的特性。 # 二、图片参数(单张图片) 2.1 创建“图片参数” 用户在移动事务对象参数中勾选”是否是一个图片”,即可在Android端的移动事务对象插件中生成一个图片参数。 ![](/media//202011/2020-11-25_153931.png) 2.2 图片参数功能按钮 ![](/media//202208/2022-08-06_135935.png) 功能按钮: (1).拍照 用户点击拍照按钮将会调用系统相机app,因此,需要使用APP相机权限。当用户拍照完成后返回此界面时,将会显示刚刚拍摄的照片. (2). 选择本地图片 用户点击选择本地图片按钮将会调用系统相册app,因此,需要使用APP存储权限。当用户拍照完成后返回此界面时,将会显示刚刚选择的照片. (3). 图片上传 图片上传目前只支持基于Ftp协议上传,主要步骤如下,当用户点击图片上传按钮后,程序将会调用存储过程OrDroid_FtpFileNew,此存储过程将会返回Ftp上传参数数据集,如Ftp地址、Ftp账号、Ftp密码、Ftp主目录、Ftp子目录、上传文件名称、Ftp表FtpFile的主键等关键字段(所以用户在上传前必须检查Ftp地址、Ftp账号、Ftp密码、Ftp路径是否正确,否则将无法上传文件);获取到Ftp关键参数后,插件将会开始上传图片至服务器;图片上传完成后,程序将会调用存储过程OrDroid_FtpFileSave,将上传图片的FtpFile表主键更新至FtpFile表。以上步骤完成后,用户可先自行检查Ftp目录下是否存在此图片,然后在检查FtpFile表是否存在此图片信息字段,也可将此图片参数传入到存储过程检查. <span style="font-family:楷体;Color:red">注意:APP 的上传参数,必须要加上子目录</span> (4). 绑定级联方法 本参数可参考字符串参数模式绑定级联方法,此方法会在上传成功后被触发,如图。 ![](/media//202212/2022-12-03_142251.png) 2.3 图片下载 (1). 在存储过程中给图片参数赋值,图片参数值为FtpFile表主键,如下。 ```sql SELECT 'FTP1000001WM' AS Param5 ``` (2). 图片参数值回刷到界面图片参数后,程序将会自动调用存储过程OrDroid_FtpFileGet获取Ftp下载关键字段,如Ftp地址、Ftp账号、Ftp密码、Ftp主目录、Ftp子目录、下载文件名称等关键字段(所以用户在上传前必须检查Ftp地址、Ftp账号、Ftp密码、Ftp路径、下载文件名称是否正确,否则将无法下载文件),然后程序根据获取到的Ftp路径、文件名将图片下载到移动端,最后将此图片显示到指定的图片参数上. # 三、M类型参数(多张图片) 3.1 参数定义 M类型参数表示图片网格参数,可通过使用此参数实现图片批量上传、下载。 3.1.1 在系统参数管理下的参数名”[Query Data Type]”中,增加M类型参数 ![](/media//202011/2020-11-25_154721.png) 3.1.2 在移动事务对象参数中定义数据类型”M” ![](/media//202011/2020-11-25_154818.png) 3.2 图片下载 3.2.1 在"移动事务对象方法"中定义一个"方法",并且在"执行完成后回刷网格参数名"文本框中定义回刷参数字段。 ![](/media//202011/2020-11-25_154944.png) 3.2.2 在存储过程定义数据集下载字段,如图。 ![](/media//202011/2020-11-25_154927.png) 3.2.3 下载最终效果图 ![](/media//202307/2023-07-17_150821.png) 3.3 功能按钮 拍照、选择本地图片、上传图片功能请参照本说明第二章《图片参数(单张图片)》部分2.2小节的功能按钮说明。 # 四、S类型参数 4.1 S类型参数定义 S类型参数是扫描类型参数,作用主要为扫描一维码、二维码,当移动设备不存在红外扫描模块时,设置此参数可调用设备摄像头扫描,注意,使用此功能需要启用app摄像头权限。 ![](/media//202011/2020-11-25_155719.png) 4.2 S类型参数使用 4.2.1 点击扫码图标,此时界面将跳转至”扫描条码”界面 ![](/media//202208/2022-08-09_154943.png) 4.2.2 将条码/二维码放置于界面中的黄色扫描框内即可扫描条码,扫码完成后则自动返回原插件界面 ![](/media//202011/2020-11-25_155929.png) ![](/media//202011/2020-11-25_155942.png) # 五、SOP文件预览 5.1 SOP文件支持类型 移动事务对象Android插件支持SOP文件预览,目前支持包括PDF、JPG、PNG等类型文件的预览。 5.2 定义存储过程 定义SOP参数(如果为多个SOP文件,则定义表变量来存储) ![](/media//202011/2020-11-25_161821.png) 5.3 OpenFile字段参数定义 5.3.1 OpenFile参数可定义为一个Http链接地址 5.3.2 OpenFile参数可定义为一个Ftp文件主键 5.3.3 OpenFile参数可定义为SOP文件名,此时移动客户端将从OrBitConfig设置中的文档服务器地址下载此SOP文件. ![](/media//202011/2020-11-25_162136.png) 5.3.4 往@Temp表写入SOP字段(如果有多个SOP文件则写入多行) ![](/media//202011/2020-11-25_162334.png) 5.3.5 输出@Temp表字段 ![](/media//202011/2020-11-25_162414.png) # 六、自定义网格列宽、自适应网格列宽、自定义消息行宽度、多网格回刷 6.1 自定义网格列宽,只需存储过程自定义网格列宽字段 **ColumnWidth** ![](/media//202011/2020-11-25_162651.png) 6.2 自适应网格列宽设置,在OrDroid插件勾选"是否自动列宽"即可 ![](/media//202111/2021-11-29_161211.png) 6.3 自定义消息行宽度,在OrDroid插件中的"消息框宽度(dt)"填写一个大于屏幕宽度的数值即可 ![](/media//202111/2021-11-29_161425.png) 6.4 多网格回刷,只需在移动事务对象方法下的回刷网格参数名中使用逗号拼接网格参数 ![](/media//202011/2020-11-25_162757.png) 6.4.1 最终效果图 ![](/media//202011/2020-11-25_162846.png) # 七、网格参数行跳转控制 7.1 **RowSelectId** 字段 在存储过程返回数据集中定义 **RowSelectId** 字段,当 **RowSelectId** 值为0时,数据行状态为未选中状态,当 **RowSelectId** 值为1时,数据行状态为选中状态。 ![](/media//202011/2020-11-25_163031.png) # 八、V 类型参数(视频网格) 8.1 参数定义 V类型参数表示视频网格参数,可通过使用此参数实现视频批量上传、下载. 8.1.1 在系统参数管理下的参数名"[Query Data Type]"中,增加"V"类型参数 ![](/media//202207/2022-07-07_110531.png) 8.1.2 在移动事务对象参数中定义数据类型"V" ![](/media//202207/2022-07-07_110911.png) 8.2 视频下载 8.2.1 在"移动事务对象方法"中定义一个"方法",并且在"执行完成后回刷网格参数名"文本框中定义回刷参数字段。 ![](/media//202207/2022-07-07_111606.png) 8.2.3 在存储过程定义数据集下载字段。 ![](/media//202011/2020-11-25_154927.png) 8.2.4 下载效果图 ![](/media//202307/2023-07-17_151807.png) 8.3 功能按钮 (1).拍摄视频 用户点击拍摄视频按钮按钮将会调用系统相机app,因此,需要使用APP相机权限。当用户拍摄视频完成后返回此界面时,将会显示刚刚拍摄的视频截图。 (2).选择本地视频 用户点击选择本地视频按钮将会调用系统相册app,因此,需要使用APP存储权限。当用户拍摄视频完成后返回此界面时,将会显示刚刚选择的视频截图。 (3).上传视频功能请参照本说明第二章《图片参数(单张图片)》部分2.2小节的功能按钮说明。 # 九、A 类型参数(录音参数) 9.1 参数定义 A类型参数表示录音参数,可通过使用此参数实现录音批量上传、下载. 9.1.1 在系统参数管理下的参数名"[Query Data Type]"中,增加"A"类型参数 ![](/media//202208/2022-08-09_171530.png) 9.1.2 在移动事务对象参数中定义数据类型"A" ![](/media//202208/2022-08-10_135638.png) 9.2 录音下载 9.2.1 在"移动事务对象方法"中定义一个"方法",并且在"执行完成后回刷网格参数名"文本框中定义回刷参数字段。 ![](/media//202208/2022-08-09_171654.png) 9.2.3 在存储过程定义数据集下载字段。 ![](/media//202011/2020-11-25_154927.png) 9.2.4 下载效果图 ![](/media//202307/2023-07-17_153952.png) 9.3 功能按钮 (1).录音 使用此功能需要使用APP录音权限。用户点击录音功能后,会出现录音弹窗,点击Play按钮即可开始录音;录音完成后,点击Stop按钮停止录音,App将会自动保存此录音文件。 (3).上传录音功能请参照本说明第二章《图片参数(单张图片)》部分2.2小节的功能按钮说明。 # 十、跨页签跳转、跨页签传值 10.1 跨页签传值 `PDATest7.Param1` 备注: 跨页签传值格式:"页签名.参数名" 10.2 跨页签跳转 `SET @I_ExceptionFieldName='PDATest7.Param1'` 备注: 跨页签跳转格式:"页签名.参数名" # 十一、网格参数的可编辑模式 11.1 在存储过程中定义可编辑模式字段"**ColumnProperty**" ```sql SELECT mo.MobileObjectName, mo.MobileObjectDesc, mo.IsActivity, mop.MobileObjectParameterName, mop.DataType, mo.FieldWidth, mop.CreateDate, '(ColumnName:MobileObjectName,Type:C,ValueList:null,RowMethod:null,IsMustInput:0,IsReadOnly:1) (ColumnName:MobileObjectDesc,Type:C,ValueList:null,RowMethod:PDA_TestColumnResult,IsMustInput:1,IsReadOnly:0) (ColumnName:MobileObjectParameterName,Type:C,ValueList:null,RowMethod:PDA_TestColumnResult,IsMustInput:0,IsReadOnly:0) (ColumnName:DataType,Type:V,ValueList:MetadataQueryDataType_ViewList,RowMethod:PDA_TestColumnResult,IsMustInput:1,IsReadOnly:0) (ColumnName:FieldWidth,Type:I,ValueList:null,RowMethod:PDA_TestColumnResult,IsMustInput:0,IsReadOnly:0) (ColumnName:IsActivity,Type:B,ValueList:null,RowMethod:PDA_TestColumnResult,IsMustInput:0,IsReadOnly:0) (ColumnName:CreateDate,Type:D,ValueList:null,RowMethod:PDA_TestColumnResult,IsMustInput:0,IsReadOnly:0)' 'ColumnProperty' FROM dbo.MobileObjectParameter mop INNER JOIN dbo.MobileObject mo ON mo.MobileObjectId = mop.MobileObjectId WHERE mo.MobileObjectId='MBO1000000XM' ``` 11.2 "**ColumnProperty**"属性定义 (1). ColumnName:列名(必填属性)。 (2). Type:列类型(必填属性,B:Boolean类型, C:字符类型, D:DateTime类型, I:Integer类型, F:Decimal类型, I:Integer类型, V:ValueList值列表类型) (3). ValueList:值列表存储过程定义,如果为空,请填null(必填属性) (4). RowMethod:行方法,可被单元格绑定的存储过程,可通过值列表选择事件、日期选择事件、CheckBox事件、回车事件触发此存储过程,此存储过程触发后会将单元格所在行数据拼接成JSON字符串赋值到以网格参数名为存储过程参数值中,如果为空,请填null,具体可参考如下代码: ```sql ALTER PROCEDURE [dbo].[PDA_TestColumnResult] @I_Sender nvarchar(200)='', --客户端执行按钮 @I_ReturnMessage nvarchar(max)='' output, --返回的信息,支持多语言 @I_ExceptionFieldName nvarchar(100)='' output, --向客户端报告引起冲突的字段 @I_LanguageId char(1)='1', --客户端传入的语言ID @I_PlugInCommand NVARCHAR(50)='', --插件命令 @I_OrBitUserId char(12)='', --用户ID @I_OrBitUserName nvarchar(100)='', --用户名 @I_ResourceId char(12)='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName nvarchar(100)='', --资源名 @I_PKid char(12) ='', --主键 @I_ParentPKId char(12)='', --父级主键 @I_Parameter nvarchar(MAX)='', --插件参数 --以上变量为系统服务固定接口参数,必须在每一个DoEvent过程中实现. @Param1 NVARCHAR(MAX)='' --网格参数名,回传选中行参数JSON字符串 --[{"MobileObjectParameterName":"Param1","FieldWidth":"250.0","MobileObjectName":"PDATest1","MobileObjectDesc":"PDA测试1","DataType":"S","IsActivity":1,"CreateDate":"2020/5/14 15:59:37"}] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED DECLARE @Temp1 TABLE( Id INT PRIMARY KEY IDENTITY, MobileObjectName NVARCHAR(50), MobileObjectDesc NVARCHAR(100), IsActivity BIT, MobileObjectParameterName NVARCHAR(100), DataType CHAR(1), FieldWidth INT, CreateDate DATETIME, ColorControlId NVARCHAR(100) ) DECLARE @Temp2 TABLE ( Id INT PRIMARY KEY IDENTITY, NAME NVARCHAR(2000), StringValue NVARCHAR(MAX) ) INSERT INTO @Temp2 ( NAME, StringValue ) SELECT NAME, StringValue FROM dbo.ParseJSON(@Param1) WHERE parent_ID=1 INSERT INTO @Temp1 ( MobileObjectName, MobileObjectDesc, IsActivity, MobileObjectParameterName, DataType, FieldWidth, CreateDate, ColorControlId ) VALUES ( (SELECT StringValue FROM @Temp2 WHERE Id=3), -- MobileObjectName - nvarchar(50) --'gffhhghgh', (SELECT StringValue FROM @Temp2 WHERE Id=4), -- MobileObjectDesc - nvarchar(100) (SELECT StringValue FROM @Temp2 WHERE Id=6), -- IsActivity - bit (SELECT StringValue FROM @Temp2 WHERE Id=1) , -- MobileObjectParameterName - nvarchar(100) (SELECT StringValue FROM @Temp2 WHERE Id=5), -- DataType - char(1) CAST((SELECT StringValue FROM @Temp2 WHERE Id=2) AS FLOAT), -- FieldWidth - int (SELECT StringValue FROM @Temp2 WHERE Id=7), -- CreateDate - datetime N'MobileObjectDesc:X4YAZ' -- ColorControlId - nvarchar(100) 设置单元格颜色 ) SELECT * FROM @Temp1 --此查询不可超过一行数据 SET @I_ReturnMessage='ServerMessage:就是想弹个消息' return 0 END ``` (5). IsMustInput:当前指定列是否必填(必填属性, 0.否/1.是)。 (6). IsReadOnly:当前指定列是否只读(必填属性, 0.否/1.是)。 # 十二、浮点型参数的小数位设置 12.1 修改MobileObjectParameter表,增加DecimalPlace字段,类型为int整型。 ![](/media//202111/2021-11-30_170556.png) 12.2 修改存储过程MobileObjectParameterMainView,增加查询DecimalPlace字段 ![](/media//202111/2021-11-30_171004.png) 12.3 修改存储过程MobileObjectParameterSaveData,增加传入参数@DecimalPlace ![](/media//202111/2021-11-30_171247.png) ![](/media//202111/2021-11-30_171310.png) 12.4 修改存储过程GetOrDroidMobileObjectInfo,增加查询DecimalPlace字段 ![](/media//202111/2021-11-30_171510.png) 12.5 在移动事务对象元字段中新增元字段DecimalPlace,可通过此字段控制浮点型参数小数位长度(最高可设置8位长度,不设置按8位长度处理) ![](/media//202111/2021-11-30_170258.png) # 十三、弹窗提示 13.1 方法按钮执行之前弹窗,可在"移动事务对象方法"中,勾选"执行前需要提示吗?",并且可按需求定制弹窗信息或者执行一个弹窗存储过程,如下图所示。 ![](/media//202207/2022-07-20_141140.png) 13.2 方法按钮执行完成之后的弹窗,可在存储过程中定义"@I_ReturnMessage"参数,示例如下: ```sql SET @I_ReturnMessage='ServerMessage:W:测试W弹窗' ``` # 十四、文字转语言功能 开发人员可通过定义@I_ReturnMessage参数实现文字转语音功能,只需在@I_ReturnMessage值中增加前缀"ServerMessage:Say:",如下。 ```sql SET @I_ReturnMessage='ServerMessage:Say:12345, 上山打老虎' ``` 备注: 如语音功能使用异常的用户,可在PKM中,找到”产品”分组,并打开”软件版本管理”元对象插件,点击”012 OrDroid APP 软件 V15.2(推荐使用)”,在”文件列表”页签下找到”讯飞语记.apk”下载安装,如图。 ![](/media//202212/2022-12-16_110406.png) # 十五、使用RGB颜色值自定义网格颜色 15.1 增加"CorlorRGB"字段,示例如下: ```sql SELECT Shift, Yield_ProdA 'Param9', Yield_ProdC 'Param13', Yield_ProdD, YieldD_ProdD, --'[Yield_ProdD:{fc(234|133|200|1)}{bgc(123|223|111)}][RowColor:{fc(22|55|100)}{bgc(100|44|255)}]' 'CorlorRGB' FROM dbo._MyQuery ``` 15.2 字段值定义: Yield_ProdD : 列名。 fc : fontColor,表示字体颜色,使用RGB值定义(注意,颜色值需使用"|"号间隔)。最后一位表示是否加粗字体,如需要加粗,最后一位值为1,如234|133|200|1;如无须加粗,可省略最后一位,或者值为0,如234|133|200|0,或者234|133|200。 bgc : backgroundCorlor,表示网格背景颜色,使用RGB值定义(注意,颜色值需使用"|"号间隔)。 RowColor : 表示网格行颜色控制。 # 十六、移动事务对象插件收藏功能 移动事务对象插件可通过收藏功能,将常用插件置顶显示,操作如下。 16.1 收藏,当插件状态为"未收藏"状态时,可点击星号图标触发收藏功能。 ![](/media//202209/2022-09-17_134219.png) 最终效果图,如下。 ![](/media//202209/2022-09-17_134406.png) ![](/media//202209/2022-09-17_134640.png) 16.2 取消收藏,当插件状态为"已收藏"状态时,可点击星号图标取消收藏此插件。 ![](/media//202209/2022-09-17_134925.png) 最终效果图,如下。 ![](/media//202209/2022-09-17_135105.png) ![](/media//202209/2022-09-17_135336.png) # 十七、设置参数密码模式、设置网格/值列表是否默认选中首行 17.1 参数密码模式:此属性可以让参数以非明文方式显示内容。 值列表是否默认选中首行:值列表参数获取数据集后,可通过此属性控制是否选中值列表首行。勾选状态为默认选中,非勾选状态为不选中。 17.2 增加MobileObjectParameter表字段,表字段类型如图。 ![](/media//202303/2023-03-10_161215.png) 17.3 修改存储过程MobileObjectParameterMainView,代码如下。 ```sql ALTER PROCEDURE [dbo].[MobileObjectParameterMainView] @I_PKId char(12) ='' --主键 --以上变量为系统服务固定接口参数,必须在每一个MainView过程中实现. AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行MainView,注意:以下过程必须根据业务的需求进行调整 --如果您不了解MainView过程如何编写,请参考我们提供的示例_SampleProjectMainView SELECT MobileObjectParameter.MobileObjectId, MobileObjectParameter.ParameterSequence, MobileObjectParameter.MobileObjectParameterName, MobileObjectParameter.DataType, MobileObjectParameter.ControlLine, MobileObjectParameter.IsValueListUsage, MobileObjectParameter.IsGrid, MobileObjectParameter.ValueList, MobileObjectParameter.AccessCode, MobileObjectParameter.IsPicture, MobileObjectParameter.IsSplitLine, MobileObjectParameter.DecimalPlace, MobileObjectParameter.LinkToValueListParameter, MobileObjectParameter.IsMustInput, MobileObjectParameter.IsReadOnly, MobileObjectParameter.IsHidden, MobileObjectParameter.HiddenCondition, MobileObjectParameter.IsShowTime, MobileObjectParameter.IsSaveValueToLocal, MobileObjectParameter.IsPassword, MobileObjectParameter.IsDefaultFirst, IIF(ISNULL(SysText.Text1,'')='',MobileObjectParameter.MobileObjectParameterName,SysText.Text1) AS Text1, SysText.Text2, SysText.Text3, SysText.Text4, SysText.Text5, SysText.Text6, SysText.Text7, SysText.Text8 FROM dbo.MobileObjectParameter LEFT JOIN dbo.SysText ON dbo.MobileObjectParameter.MobileObjectParameterName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' WHERE MobileObjectParameter.MobileObjectParameterId=@I_PKId return 0 END ``` 17.4 修改存储过程MobileObjectParameterSaveData,代码如下。 ```sql ALTER PROCEDURE [dbo].[MobileObjectParameterSaveData] @I_ReturnMessage nvarchar(max)='' output, --返回的信息,支持多语言 @I_IsNewRow bit = 0 output, --向客户端报告是否是新行 @I_ExceptionFieldName nvarchar(100)='' output, --向客户端报告引起冲突的字段 @I_LanguageId char(1)='1', --客户端传入的语言ID @I_PlugInCommand varchar(5)='', --插件命令 @I_OrBitUserId char(12)='', --用户ID @I_OrBitUserName nvarchar(100)='', --用户名 @I_ResourceId char(12)='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName nvarchar(100)='', --资源名 @I_PKId char(12) = '', --主键 @I_SourcePKId char(12)='', --执行拷贝时传入的源主键 @I_ParentPKId char(12)='', --父级主键 @I_Parameter nvarchar(100)='', --插件参数 --以上变量为服务固定接口参数,必须在每一个Save过程中实现。 --以下参与必须与该元对象数据在MetadataField表中提供的字段一一对应。 --警告: 以下变量请一定要赋以默认值,否则前台程序会报错 --提示:元数据在MetadataField表中提供的所有字段必须全部包含在Save过程中 -- 否则会导致因在更新时为参数不找到出前台程序报错。> --提示:以下是用户变量定义段,如有用户变量定义段,请将上面@I_Parameter nvarchar(100)=''后面加上,号! @MobileObjectId char(12)='', @MobileObjectParameterName nvarchar(100)='', @DataType char(1)='', @ParameterSequence char(2)='', @IsValueListUsage bit=0, @ControlLine int=0, @ValueList nvarchar(100)='', @LinkToValueListParameter nvarchar(100)='', @IsReadOnly bit=0, @IsHidden bit=0, @HiddenCondition nvarchar(100)='', @IsSplitLine bit=0, @IsPicture bit=0, @IsGrid bit=0, @IsSaveValueToLocal bit=0, @IsMustInput bit=0, @IsShowTime bit=0, @AccessCode nvarchar(20)='', @DecimalPlace INT=0, @Text1 nvarchar(100)='', @Text2 nvarchar(100)='', @Text3 nvarchar(100)='', @Text4 nvarchar(100)='', @Text5 nvarchar(100)='', @Text6 nvarchar(100)='', @Text7 nvarchar(100)='', @Text8 nvarchar(100)='', @IsPassword bit=0, @IsDefaultFirst bit=0 --用户变量结束 AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行SaveData,注意:以下过程必须根据业务的需求进行调整 --如果您不了解SaveData过程如何编写,请参考我们提供的示例_SampleProjectSaveData declare @ModifyObject nvarchar(50) declare @ModifyType nvarchar(20) declare @return_value int declare @S_ReturnMessage nvarchar(100) declare @FieldsValueOld nvarchar(max) declare @FieldsValueNew nvarchar(max) declare @FieldsChanged nvarchar(max) set @I_ReturnMessage='' set @I_IsNewRow = 0 set @I_ExceptionFieldName='' set @ModifyObject='MobileObjectParameter' --这里必须要是当前操作的表名 set @ModifyType ='' --没有申请到主键就退出 if ltrim(@I_PKId)='' begin set @I_ReturnMessage='No PKId applied' return -1 end if not exists(SELECT MobileObjectParameterId FROM MobileObjectParameter WHERE MobileObjectParameterId=@I_PKId) begin Insert into MobileObjectParameter( MobileObjectParameterId, MobileObjectId, MobileObjectParameterName, DataType, ParameterSequence, IsValueListUsage, ControlLine, ValueList, LinkToValueListParameter, IsReadOnly, IsHidden, HiddenCondition, IsSplitLine, IsGrid, IsPicture, IsSaveValueToLocal, IsMustInput, AccessCode, IsShowTime, DecimalPlace, IsPassword, IsDefaultFirst )Values( @I_PKId, @I_ParentPKId, @MobileObjectParameterName, @DataType, @ParameterSequence, @IsValueListUsage, @ControlLine, @ValueList, @LinkToValueListParameter, @IsReadOnly, @IsHidden, @HiddenCondition, @IsSplitLine, @IsGrid, @IsPicture, @IsSaveValueToLocal, @IsMustInput, @AccessCode, @IsShowTime, @DecimalPlace, @IsPassword, @IsDefaultFirst) set @I_IsNewRow=1 set @ModifyType='Insert' --获取刚刚插入的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsChanged output end else begin --获更新前的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueOld output Update MobileObjectParameter set MobileObjectId=@I_ParentPKId, MobileObjectParameterName=@MobileObjectParameterName, DataType=@DataType, ParameterSequence=@ParameterSequence, IsValueListUsage=@IsValueListUsage, ControlLine=@ControlLine, ValueList=@ValueList, LinkToValueListParameter=@LinkToValueListParameter, IsReadOnly=@IsReadOnly, IsHidden=@IsHidden, HiddenCondition=@HiddenCondition, IsSplitLine=@IsSplitLine, IsGrid=@IsGrid, IsPicture=@IsPicture, IsSaveValueToLocal=@IsSaveValueToLocal, IsMustInput=@IsMustInput, AccessCode=@AccessCode, IsShowTime=@IsShowTime, DecimalPlace=@DecimalPlace, IsPassword=@IsPassword, IsDefaultFirst=@IsDefaultFirst WHERE MobileObjectParameterId=@I_PKId set @ModifyType='Update' --获更新后的记录,并进行比较 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueNew output EXEC SysGetTableFieldsCompare @FieldsValueOld,@FieldsValueNew,@FieldsChanged OUTPUT end --将Text1-Text8插入到SysText表中 EXEC [dbo].[SysTextSaveModuleValue] @TextModule = @MobileObjectParameterName, @Text1 = @Text1, @Text2 = @Text2, @Text3 = @Text3, @Text4 = @Text4, @Text5 = @Text5, @Text6 = @Text6, @Text7 = @Text7, @Text8 = @Text8 --最后将所做的修改入修改历史中 if @FieldsChanged<>'' EXEC [dbo].[SysWriteInModifyHistory] @ObjectName = @ModifyObject, @TablePKId = @I_PKId , @ModifyType = @ModifyType, @UserName = @I_OrBitUserName, @ModifyHistory = @FieldsChanged return 0 END ``` 17.5 修改存储过程GetOrDroidMobileObjectInfo,代码如下。 ```sql ALTER PROCEDURE [dbo].[GetOrDroidMobileObjectInfo] @I_PluginCommand nvarchar(2000)='', @GetWhat int=0 --0,获取 AS BEGIN if @GetWhat=0 --取得OrDroid插件对应的【移动事务对象】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObject.MobileObjectDesc, dbo.MobileObject.IsActivity, dbo.MobileObject.ColumnCount, dbo.MobileObject.FieldWidth, dbo.MobileObject.FieldSpace, dbo.MobileObject.MsgCount, dbo.MobileObject.AccessCode, dbo.MobileObject.AutoRefreshSec, isnull(SysText.Text1,'') as MetadataName_Text1, isnull(SysText.Text2,'') as MetadataName_Text2, isnull(SysText.Text3,'') as MetadataName_Text3, isnull(SysText.Text4,'') as MetadataName_Text4, isnull(SysText.Text5,'') as MetadataName_Text5, isnull(SysText.Text6,'') as MetadataName_Text6, isnull(SysText.Text7,'') as MetadataName_Text7, isnull(SysText.Text8,'') as MetadataName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObject.MobileObjectName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence return 0 end if @GetWhat =1 --取得OrDroid插件对应的【移动事务对象方法】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MobileObjectMethodId, dbo.MobileObjectMethod.MobileObjectMethodName, dbo.MobileObjectMethod.MethodSequence, dbo.MobileObjectMethod.SQLDoTxn, dbo.MobileObjectMethod.TxnParameter, dbo.MobileObjectMethod.IsHidden, dbo.MobileObjectMethod.IsPlaySound, isnull(dbo.MobileObjectMethod.IsGetGPS,0) as IsGetGPS , dbo.MobileObjectMethod.RefreshGridParameter, dbo.MobileObjectMethod.IsBeforeRunningConfirm, dbo.MobileObjectMethod.IsAutoRunWhenTabActive, ISNULL(dbo.MobileObjectMethod.IsActivityDevice,0) AS IsActivityDevice, dbo.MobileObjectMethod.ActivityParameter, ISNULL(dbo.MobileObjectMethod.IsVibrate,0) AS IsVibrate, dbo.MobileObjectMethod.PromptMessage, dbo.MobileObjectMethod.AccessCode, isnull(SysText.Text1,'') as MobileObjectMethodName_Text1, isnull(SysText.Text2,'') as MobileObjectMethodName_Text2, isnull(SysText.Text3,'') as MobileObjectMethodName_Text3, isnull(SysText.Text4,'') as MobileObjectMethodName_Text4, isnull(SysText.Text5,'') as MobileObjectMethodName_Text5, isnull(SysText.Text6,'') as MobileObjectMethodName_Text6, isnull(SysText.Text7,'') as MobileObjectMethodName_Text7, isnull(SysText.Text8,'') as MobileObjectMethodName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectMethod ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectMethod.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectMethod.MobileObjectMethodName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MethodSequence return 0 end if @GetWhat =2 --取得OrDroid插件对应的【移动事务对象参数】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.MobileObjectParameterId, dbo.MobileObjectParameter.MobileObjectParameterName, dbo.MobileObjectParameter.DataType, dbo.MobileObjectParameter.ParameterSequence, dbo.MobileObjectParameter.IsValueListUsage, dbo.MobileObjectParameter.ControlLine, dbo.MobileObjectParameter.ValueList, dbo.MobileObjectParameter.LinkToValueListParameter, dbo.MobileObjectParameter.IsReadOnly, dbo.MobileObjectParameter.IsHidden, dbo.MobileObjectParameter.HiddenCondition, dbo.MobileObjectParameter.IsPicture, dbo.MobileObjectParameter.IsSplitLine, dbo.MobileObjectParameter.IsGrid, dbo.MobileObjectParameter.IsShowTime, dbo.MobileObjectParameter.IsSaveValueToLocal, dbo.MobileObjectParameter.IsMustInput, dbo.MobileObjectParameter.AccessCode, dbo.MobileObjectParameter.DecimalPlace, isnull(dbo.MobileObjectParameter.IsPassword,0) as IsPassword, isnull(dbo.MobileObjectParameter.IsDefaultFirst,0) as IsDefaultFirst, isnull(SysText.Text1,'') as MobileObjectParameterName_Text1, isnull(SysText.Text2,'') as MobileObjectParameterName_Text2, isnull(SysText.Text3,'') as MobileObjectParameterName_Text3, isnull(SysText.Text4,'') as MobileObjectParameterName_Text4, isnull(SysText.Text5,'') as MobileObjectParameterName_Text5, isnull(SysText.Text6,'') as MobileObjectParameterName_Text6, isnull(SysText.Text7,'') as MobileObjectParameterName_Text7, isnull(SysText.Text8,'') as MobileObjectParameterName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectParameter ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectParameter.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectParameter.MobileObjectParameterName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.ParameterSequence return 0 end END ``` 17.6 修改元对象MobileObjectParameter的参数规则组,在规则组中增加如下字段。 ![](/media//202303/2023-03-10_162027.png) 17.7 用户可通过如下复选框设置参数密码模式、值列表是否默认选中首行。 ![](/media//202303/2023-03-10_162300.png) # 十八、循环自动运行方法 用户可设置一个在规定时间内自动运行的方法,实现诸如自动刷新网格、值列表等参数,或者其他业务逻辑。 18.1 增加MobileObject表字段,如图。 ![](/media//202303/2023-03-15_155230.png) 18.2 修改存储过程MobileObjectMainView。 ```sql ALTER PROCEDURE [dbo].[MobileObjectMainView] @I_PKId char(12) ='' --主键 --以上变量为系统服务固定接口参数,必须在每一个MainView过程中实现. AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行MainView,注意:以下过程必须根据业务的需求进行调整 --如果您不了解MainView过程如何编写,请参考我们提供的示例_SampleProjectMainView SELECT MobileObject.MobileObjectName, MobileObject.MobileObjectDesc, MobileObject.IsActivity, MobileObject.ColumnCount, MobileObject.FieldWidth, MobileObject.FieldSpace, MobileObject.AccessCode, MobileObject.MsgCount, MobileObject.AutoRefreshSec, IIF(ISNULL(SysText.Text1,'')='',MobileObject.MobileObjectName,SysText.Text1) AS Text1, SysText.Text2, SysText.Text3, SysText.Text4, SysText.Text5, SysText.Text6, SysText.Text7, SysText.Text8 FROM dbo.MobileObject INNER JOIN dbo.SysText ON dbo.MobileObject.MobileObjectName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' WHERE MobileObject.MobileObjectId=@I_PKId; RETURN 0; END ``` 18.3 修改存储过程MobileObjectSaveData。 ALTER PROCEDURE [dbo].[MobileObjectSaveData] @I_ReturnMessage NVARCHAR(MAX)='' OUTPUT, --返回的信息,支持多语言 @I_IsNewRow BIT = 0 OUTPUT, --向客户端报告是否是新行 @I_ExceptionFieldName NVARCHAR(100)='' OUTPUT, --向客户端报告引起冲突的字段 @I_LanguageId CHAR(1)='1', --客户端传入的语言ID @I_PlugInCommand VARCHAR(5)='', --插件命令 @I_OrBitUserId CHAR(12)='', --用户ID @I_OrBitUserName NVARCHAR(100)='', --用户名 @I_ResourceId CHAR(12)='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName NVARCHAR(100)='', --资源名 @I_PKId CHAR(12) = '', --主键 @I_SourcePKId CHAR(12)='', --执行拷贝时传入的源主键 @I_ParentPKId CHAR(12)='', --父级主键 @I_Parameter NVARCHAR(100)='', --插件参数 --以上变量为服务固定接口参数,必须在每一个Save过程中实现。 --以下参与必须与该元对象数据在MetadataField表中提供的字段一一对应。 --警告: 以下变量请一定要赋以默认值,否则前台程序会报错 --提示:元数据在MetadataField表中提供的所有字段必须全部包含在Save过程中 -- 否则会导致因在更新时为参数不找到出前台程序报错。> --提示:以下是用户变量定义段,如有用户变量定义段,请将上面@I_Parameter nvarchar(100)=''后面加上,号! @MobileObjectName NVARCHAR(50)='', @MobileObjectDesc NVARCHAR(100)='', @IsActivity BIT=0, @ColumnCount INT=0, @FieldWidth INT=0, @FieldSpace INT=0, @AccessCode NVARCHAR(20)='', @MsgCount INT=0, @AutoRefreshSec int=0, @Text1 NVARCHAR(100)='', @Text2 NVARCHAR(100)='', @Text3 NVARCHAR(100)='', @Text4 NVARCHAR(100)='', @Text5 NVARCHAR(100)='', @Text6 NVARCHAR(100)='', @Text7 NVARCHAR(100)='', @Text8 NVARCHAR(100)='' --用户变量结束 AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行SaveData,注意:以下过程必须根据业务的需求进行调整 --如果您不了解SaveData过程如何编写,请参考我们提供的示例_SampleProjectSaveData DECLARE @ModifyObject NVARCHAR(50) DECLARE @ModifyType NVARCHAR(20) DECLARE @return_value INT DECLARE @S_ReturnMessage NVARCHAR(100) DECLARE @FieldsValueOld NVARCHAR(MAX) DECLARE @FieldsValueNew NVARCHAR(MAX) DECLARE @FieldsChanged NVARCHAR(MAX) SET @I_ReturnMessage='' SET @I_IsNewRow = 0 SET @I_ExceptionFieldName='' SET @ModifyObject='MobileObject' --这里必须要是当前操作的表名 SET @ModifyType ='' --没有申请到主键就退出 IF LTRIM(@I_PKId)='' BEGIN SET @I_ReturnMessage='No PKId applied' RETURN -1 END IF NOT EXISTS(SELECT MobileObjectId FROM MobileObject WHERE MobileObjectId=@I_PKId) BEGIN INSERT INTO MobileObject( MobileObjectId, MobileObjectName, MobileObjectDesc, IsActivity, ColumnCount, FieldWidth, FieldSpace, AccessCode, MsgCount, AutoRefreshSec )VALUES( @I_PKId, @MobileObjectName, @MobileObjectDesc, @IsActivity, @ColumnCount, @FieldWidth, @FieldSpace, @AccessCode, @MsgCount, @AutoRefreshSec) SET @I_IsNewRow=1 SET @ModifyType='Insert' --判断是否拷贝 IF @I_SourcePKId<>'' BEGIN EXEC @return_value = [dbo].[MobileObjectCopyData] @I_ReturnMessage = @I_ReturnMessage OUTPUT, @I_PKId = @I_PKId, @I_SourcePKId = @I_SourcePKId SET @ModifyType='Copy' END --获取刚刚插入的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsChanged OUTPUT END ELSE BEGIN --获取旧名称 DECLARE @OldMobileObjectName NVARCHAR(50)='' SELECT @OldMobileObjectName=MobileObjectName FROM dbo.MobileObject WHERE MobileObjectId=@I_PKId --获更新前的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueOld OUTPUT UPDATE MobileObject SET MobileObjectName=@MobileObjectName, MobileObjectDesc=@MobileObjectDesc, IsActivity=@IsActivity, ColumnCount=@ColumnCount, FieldWidth=@FieldWidth, FieldSpace=@FieldSpace, AccessCode=@AccessCode, MsgCount=@MsgCount, AutoRefreshSec=@AutoRefreshSec WHERE MobileObjectId=@I_PKId SET @ModifyType='Update' --获更新后的记录,并进行比较 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueNew OUTPUT EXEC SysGetTableFieldsCompare @FieldsValueOld,@FieldsValueNew,@FieldsChanged OUTPUT --更新参数配置;UPDATE/INSERT;orbchay,HH0102,GuConghu;2021/09/22 17:27:42:7318 IF ISNULL(@OldMobileObjectName,'')<>'' BEGIN IF EXISTS(SELECT 1 FROM dbo.SysParameter WHERE ParameterValue=@OldMobileObjectName AND LEFT(ParameterName,10)='[MOBILETXN') BEGIN UPDATE dbo.SysParameter SET ParameterValue=@MobileObjectName, ParameterDescription=@MobileObjectDesc WHERE ParameterValue=@OldMobileObjectName AND LEFT(ParameterName,10)='[MOBILETXN' END END --E END --将Text1-Text8插入到SysText表中 EXEC [dbo].[SysTextSaveModuleValue] @TextModule = @MobileObjectName, @Text1 = @Text1, @Text2 = @Text2, @Text3 = @Text3, @Text4 = @Text4, @Text5 = @Text5, @Text6 = @Text6, @Text7 = @Text7, @Text8 = @Text8 --最后将所做的修改入修改历史中 IF @FieldsChanged<>'' EXEC [dbo].[SysWriteInModifyHistory] @ObjectName = @ModifyObject, @TablePKId = @I_PKId , @ModifyType = @ModifyType, @UserName = @I_OrBitUserName, @ModifyHistory = @FieldsChanged RETURN 0 END 18.4 修改存储过程GetOrDroidMobileObjectInfo。 ```sql ALTER PROCEDURE [dbo].[GetOrDroidMobileObjectInfo] @I_PluginCommand nvarchar(2000)='', @GetWhat int=0 --0,获取 AS BEGIN if @GetWhat=0 --取得OrDroid插件对应的【移动事务对象】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObject.MobileObjectDesc, dbo.MobileObject.IsActivity, dbo.MobileObject.ColumnCount, dbo.MobileObject.FieldWidth, dbo.MobileObject.FieldSpace, dbo.MobileObject.MsgCount, dbo.MobileObject.AccessCode, dbo.MobileObject.AutoRefreshSec, isnull(SysText.Text1,'') as MetadataName_Text1, isnull(SysText.Text2,'') as MetadataName_Text2, isnull(SysText.Text3,'') as MetadataName_Text3, isnull(SysText.Text4,'') as MetadataName_Text4, isnull(SysText.Text5,'') as MetadataName_Text5, isnull(SysText.Text6,'') as MetadataName_Text6, isnull(SysText.Text7,'') as MetadataName_Text7, isnull(SysText.Text8,'') as MetadataName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObject.MobileObjectName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence return 0 end if @GetWhat =1 --取得OrDroid插件对应的【移动事务对象方法】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MobileObjectMethodId, dbo.MobileObjectMethod.MobileObjectMethodName, dbo.MobileObjectMethod.MethodSequence, dbo.MobileObjectMethod.SQLDoTxn, dbo.MobileObjectMethod.TxnParameter, dbo.MobileObjectMethod.IsHidden, dbo.MobileObjectMethod.IsPlaySound, isnull(dbo.MobileObjectMethod.IsGetGPS,0) as IsGetGPS , dbo.MobileObjectMethod.RefreshGridParameter, dbo.MobileObjectMethod.IsBeforeRunningConfirm, dbo.MobileObjectMethod.IsAutoRunWhenTabActive, ISNULL(dbo.MobileObjectMethod.IsActivityDevice,0) AS IsActivityDevice, dbo.MobileObjectMethod.ActivityParameter, ISNULL(dbo.MobileObjectMethod.IsVibrate,0) AS IsVibrate, dbo.MobileObjectMethod.PromptMessage, dbo.MobileObjectMethod.AccessCode, isnull(SysText.Text1,'') as MobileObjectMethodName_Text1, isnull(SysText.Text2,'') as MobileObjectMethodName_Text2, isnull(SysText.Text3,'') as MobileObjectMethodName_Text3, isnull(SysText.Text4,'') as MobileObjectMethodName_Text4, isnull(SysText.Text5,'') as MobileObjectMethodName_Text5, isnull(SysText.Text6,'') as MobileObjectMethodName_Text6, isnull(SysText.Text7,'') as MobileObjectMethodName_Text7, isnull(SysText.Text8,'') as MobileObjectMethodName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectMethod ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectMethod.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectMethod.MobileObjectMethodName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MethodSequence return 0 end if @GetWhat =2 --取得OrDroid插件对应的【移动事务对象参数】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.MobileObjectParameterId, dbo.MobileObjectParameter.MobileObjectParameterName, dbo.MobileObjectParameter.DataType, dbo.MobileObjectParameter.ParameterSequence, dbo.MobileObjectParameter.IsValueListUsage, dbo.MobileObjectParameter.ControlLine, dbo.MobileObjectParameter.ValueList, dbo.MobileObjectParameter.LinkToValueListParameter, dbo.MobileObjectParameter.IsReadOnly, dbo.MobileObjectParameter.IsHidden, dbo.MobileObjectParameter.HiddenCondition, dbo.MobileObjectParameter.IsPicture, dbo.MobileObjectParameter.IsSplitLine, dbo.MobileObjectParameter.IsGrid, dbo.MobileObjectParameter.IsShowTime, dbo.MobileObjectParameter.IsSaveValueToLocal, dbo.MobileObjectParameter.IsMustInput, dbo.MobileObjectParameter.AccessCode, dbo.MobileObjectParameter.DecimalPlace, isnull(dbo.MobileObjectParameter.IsPassword,0) as IsPassword, isnull(dbo.MobileObjectParameter.IsDefaultFirst,0) as IsDefaultFirst, isnull(SysText.Text1,'') as MobileObjectParameterName_Text1, isnull(SysText.Text2,'') as MobileObjectParameterName_Text2, isnull(SysText.Text3,'') as MobileObjectParameterName_Text3, isnull(SysText.Text4,'') as MobileObjectParameterName_Text4, isnull(SysText.Text5,'') as MobileObjectParameterName_Text5, isnull(SysText.Text6,'') as MobileObjectParameterName_Text6, isnull(SysText.Text7,'') as MobileObjectParameterName_Text7, isnull(SysText.Text8,'') as MobileObjectParameterName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectParameter ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectParameter.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectParameter.MobileObjectParameterName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.ParameterSequence return 0 end END ``` 18.5 修改元字段MobileObject,在"移动事务对象默认组"下新增元字段AutoRefreshSec,如图。 ![](/media//202303/2023-03-15_160458.png) 18.6 设置自动运行循环时间,如图。 ![](/media//202308/2023-08-23_111407.png) 18.7 设置自动运行方法,如图。 ![](/media//202308/2023-08-23_111508.png) # 十九、长按消息弹出提示 在实际使用中,由于PDA屏幕过小,有时候用户会碰到消息提示过长,为了方便用户查看消息,可用过长按当前消息,以弹窗的方式显示最新一条消息的方式,如图。 ![](/media//202303/2023-03-15_161825.png) # 二十、媒体类型参数(图片、视频、音频)的文件上传数量限制 在实际应用中,个别用户由于硬件带宽限制,无法实现同步上传多文件,根据此种情况,开发人员可设置文件上传数量,以此限制现场用户在单位时间内的并发量。 20.1 给元对象MobileObjectParameter增加表字段MaxFileCount,同时修改元对象相关存储过程,表字段类型如图 ![](/media//202307/2023-07-17_155408.png) 20.2 修改相关存储过程后,在移动事务对象参数属性下配置此数量值,即可完成相关配置,如图 ![](/media//202307/2023-07-17_155801.png) # 二十一、值列表刷新 刷新值列表除了可使用方法外,现在值列表弹窗内新增值列表刷新按钮,直接点击此按钮即可刷新值列表,如图。 ![](/media//202307/2023-07-20_142328.png) # 二十二、如何控制软键盘弹出 为方便用户扫码操作,移动事务对象插件文本框默认不弹出软键盘。用户如需弹出软键盘,可在指定@I_ExceptionFieldName后,增加返回参数"NoHideKeyBoard",并且该参数值设置为1即可,如下所示。 ![](/media//202307/2023-07-20_142820.png) # 二十三、自定义弹窗 为丰富用户实现更多的业务需求,满足更多的业务场景,移动事务对象插件增加自定义弹窗功能,用户只需在存储过程自定义"PromptWindow"字段即可,具体示例如下。 ```sql SELECT '{Title:"华为编码效验不一致,请暂停扫描", IsLockWindow:"true", DataSet:[{ParamName:"Password", ParamDataType:"P", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"1",ReadOnly:"0", ParamSequence:"01", T1:"Password", T2:"密码", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Scan", ParamDataType:"S", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"02", T1:"Sacan", T2:"扫码", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"CheckBox", ParamDataType:"B", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"03", T1:"CheckBox", T2:"复选框", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Integer", ParamDataType:"I", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"04", T1:"Integer", T2:"整型", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Double", ParamDataType:"F", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"05", T1:"Double", T2:"浮点型", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Char", ParamDataType:"C", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"06", T1:"Char", T2:"字符型", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Date", ParamDataType:"D", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"07", T1:"Date", T2:"日期", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"ValueList", ParamDataType:"ValueList", Value:"", ParamValueList:"PDA_Test3ViewList", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"08", T1:"ValueList", T2:"值列表", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Grid", ParamDataType:"G", Value:"", ParamValueList:"PDA_Test1ViewList", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"09", T1:"Grid", T2:"网格", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Video", ParamDataType:"V", Value:"", ParamValueList:"PDA_TestPromptWindowDownloadVideoViewList", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"10", T1:"Video", T2:"视频", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Audio", ParamDataType:"A", Value:"", ParamValueList:"PDA_TestPromptWindowDownloadAudioViewList", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"11", T1:"Audio", T2:"音频", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Picture", ParamDataType:"Picture", Value:"", ParamValueList:"PDA_TestPromptWindowDownloadPicViewList", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"12", T1:"Picture", T2:"图片", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Method1", ParamDataType:"M", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"01", T1:"Method1", T2:"", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Method2", ParamDataType:"M", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"02", T1:"Method2", T2:"", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Method3", ParamDataType:"M", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"03", T1:"Method3", T2:"", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Method4", ParamDataType:"M", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"04", T1:"Method4", T2:"", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}, {ParamName:"Method5", ParamDataType:"M", Value:"", ParamValueList:"", Method:"PDA_TestPromptWindowMethod1", MustInput:"0",ReadOnly:"0", ParamSequence:"05", T1:"Method5", T2:"", T3:"", T4:"", T5:"", T6:"", T7:"", T8:""}]}' 'PromptWindow' ``` 备注: 23.1 "ParamName":参数名。 23.2 "ParamDataType":参数类型,参数类型主要如下: 23.2.1 "M"类型:方法/按钮类型。 23.2.2 "ValueList"类型:值列表类型。 23.2.3 "G"类型:网格类型。 23.2.4 "V"类型:视频类型。 23.2.5 "A"类型:音频类型。 23.2.6 "Picture"类型:图片类型。 23.2.7 "P"类型:密码类型。 23.2.8 "S"类型:扫码类型。 23.2.9 "I"类型:整数类型。 23.2.10 "F"类型:浮点类型。 23.2.11 "C"类型:字符类型。 23.2.12 "D"类型:日期类型。 23.2.13 "B"类型:布尔类型。 23.3 "Value":参数默认值,方法/按钮无效。 23.4 "ParamValueList":值列表/网格/视频/音频/图片存储过程。 23.5 "Method":参数绑定的存储过程,注:文本框回车、扫码、网格/值列表点击事件、布尔类型参数checkBox点击事件、视频/音频/图片类型上传事件等事件触发后,可触发绑定的存储过程。 23.6 "MustInput":是否必输(1.必输/0.不是必须) 23.7 "ReadOnly":是否只读(1.只读/0.不只读) 23.8 "ParamSequence":排序,注:参数排序和方法按钮排序是独立分开的。 23.9 "T1":英文翻译。 23.10 "T2":中文翻译。 23.11 "T3": 23.12 "T4": 23.13 "T5": 23.14 "T6": 23.15 "T7": 23.16 "T8": 23.17 "Title":弹窗提示。 23.18 "IsLockWindow":是否锁定弹窗。注:"true",锁定弹窗,点击返回键等无法取消弹窗,需要执行存储过程才可取消弹窗。"false",不锁定弹窗,点击返回键等可取消弹窗。 23.19 备注:存储过程执行完成后,回写数据会回写弹窗外参数。 23.20 "P"类型、"S"类型、"B"类型效果图。 ![](/media//202312/2023-12-29_114616.png) 23.21 "I"类型、"F"类型、"C"类型效果图。 ![](/media//202312/2023-12-29_114901.png) 23.22 "D"类型效果图。 ![](/media//202312/2023-12-29_135922.png) ![](/media//202312/2023-12-29_140021.png) 23.23 "ValueList"类型效果图。 ![](/media//202312/2023-12-29_140152.png) ![](/media//202312/2023-12-29_140244.png) 23.24 "G"类型效果图。 ![](/media//202312/2023-12-29_140456.png) 23.25 "V"类型效果图。 ![](/media//202312/2023-12-29_140619.png) 23.26 "A"类型效果图。 ![](/media//202312/2023-12-29_140746.png) 23.27 "Picture"类型效果图。 ![](/media//202312/2023-12-29_140913.png) 23.28 "M"类型效果图。 ![](/media//202312/2023-12-29_141048.png) # 二十四、修改上传文件背景颜色 24.1 在"系统参数"中增加参数名"[OrDroid Upload File Color Mode]",定义参数值"1"或者"2",如图 ![](/media//202401/2024-01-31_155416.png) 24.2 备注: 24.2.1 当参数值为"1"时,已上传文件显示红色,未上传文件显示绿色。 24.2.2 当参数值为"2"时,已上传文件显示绿色,未上传文件显示红色。 24.3 效果图。 24.3.1 当参数值为"1"时,未上传文件如下图。 ![](/media//202401/2024-01-31_160039.png) 24.3.2 当参数值为"1"时,已上传文件如下图。 ![](/media//202401/2024-01-31_160239.png) 24.3.3 当参数值为"2"时,未上传文件如下图。 ![](/media//202401/2024-01-31_160239.png) 24.3.2 当参数值为"2"时,已上传文件如下图。 ![](/media//202401/2024-01-31_160039.png) # 二十五、摄者文本框输入延迟时间 25.1 在有些特定场景中,管理人员会根据需要,要求操作员通过扫码录入数据,为杜绝操作员擅自修改扫码后的内容,因此在移动事务对象参数中增加"TextDelayTime"字段(字段名下图,字段类型为int类型),管理人员可通过设置此字段时间,限制用户使用键盘操作的时间,在更大的可能下限制用户擅自修改扫码内容。 ![](/media//202405/2024-05-11_093030.png) 25.2 在"MobileObjectParameter"表增加"TextDelayTime"字段,如下图。 ![](/media//202405/2024-05-11_103611.png) 25.3 修改存储过程"MobileObjectParameterTreeView",如下 ```sql -- ============================================= -- Author: <administrator> -- Create date: <11 18 2011 11:55AM> -- Description: 为MobileObjectParameter创建导航树视图 -- Revision: 1.00 -- Update comment: -- Update date: -- ============================================= ALTER PROCEDURE [dbo].[MobileObjectParameterTreeView] @I_ReturnMessage NVARCHAR(MAX) ='' OUTPUT, --返回的信息,支持多语言 @I_LanguageId CHAR(1) ='1', --客户端传入的语言ID @I_PlugInCommand VARCHAR(5) ='', --插件命令 @I_FiltCondition NVARCHAR(MAX) ='', --过滤条件表达式 @I_OrBitUserId CHAR(12) ='', --用户ID @I_OrBitUserName NVARCHAR(100) ='', --用户名 @I_ResourceId CHAR(12) ='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName NVARCHAR(100) ='', --资源名 @I_PKId CHAR(12) ='', --主键 @I_ParentPKId CHAR(12) ='', --父级主键 @I_Parameter NVARCHAR(100) ='' --插件参数 --以上变量为系统服务固定接口参数,必须在每一个TreeView过程中实现. AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; --执行TreeView,注意:以下过程必须根据业务的需求进行调整 --如果您不了解TreeView过程如何编写,请参考我们提供的示例_SampleProjectTreeView IF @I_ParentPKId<>'' BEGIN SELECT MobileObjectParameter.MobileObjectParameterId, MobileObjectParameter.MobileObjectId, MobileObjectParameter.MobileObjectParameterName, SysText.Text2, MobileObjectParameter.DataType, MobileObjectParameter.ParameterSequence, MobileObjectParameter.IsValueListUsage, MobileObjectParameter.ControlLine, MobileObjectParameter.ValueList, MobileObjectParameter.LinkToValueListParameter, MobileObjectParameter.IsReadOnly, MobileObjectParameter.IsHidden, MobileObjectParameter.HiddenCondition, MobileObjectParameter.IsPicture, MobileObjectParameter.IsSplitLine, MobileObjectParameter.IsGrid, MobileObjectParameter.IsShowTime, MobileObjectParameter.IsSaveValueToLocal, MobileObjectParameter.IsMustInput, MobileObjectParameter.AccessCode, MobileObjectParameter.DecimalPlace, MobileObjectParameter.CreateDate, MobileObjectParameter.IsPassword, MobileObjectParameter.IsDefaultFirst, MobileObjectParameter.FileCount, MobileObjectParameter.MaxFileCount, MobileObjectParameter.TextDelayTime FROM dbo.MobileObjectParameter LEFT JOIN dbo.SysText ON dbo.MobileObjectParameter.MobileObjectParameterName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' WHERE MobileObjectParameter.MobileObjectId=@I_ParentPKId ORDER BY MobileObjectParameter.ParameterSequence; RETURN 0; END; IF @I_PKId<>'' BEGIN SELECT MobileObjectParameter.MobileObjectParameterId, MobileObjectParameter.MobileObjectId, MobileObjectParameter.MobileObjectParameterName, SysText.Text2, MobileObjectParameter.DataType, MobileObjectParameter.ParameterSequence, MobileObjectParameter.IsValueListUsage, MobileObjectParameter.ControlLine, MobileObjectParameter.ValueList, MobileObjectParameter.LinkToValueListParameter, MobileObjectParameter.IsReadOnly, MobileObjectParameter.IsHidden, MobileObjectParameter.HiddenCondition, MobileObjectParameter.IsPicture, MobileObjectParameter.IsSplitLine, MobileObjectParameter.IsGrid, MobileObjectParameter.IsShowTime, MobileObjectParameter.IsSaveValueToLocal, MobileObjectParameter.IsMustInput, MobileObjectParameter.AccessCode, MobileObjectParameter.DecimalPlace, MobileObjectParameter.CreateDate, MobileObjectParameter.IsPassword, MobileObjectParameter.IsDefaultFirst, MobileObjectParameter.FileCount, MobileObjectParameter.MaxFileCount, MobileObjectParameter.TextDelayTime FROM dbo.MobileObjectParameter LEFT JOIN dbo.SysText ON dbo.MobileObjectParameter.MobileObjectParameterName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' WHERE MobileObjectParameter.MobileObjectParameterId=@I_PKId; RETURN 0; END; SELECT MobileObjectParameter.MobileObjectParameterId, MobileObjectParameter.MobileObjectId, MobileObjectParameter.MobileObjectParameterName, SysText.Text2, MobileObjectParameter.DataType, MobileObjectParameter.ParameterSequence, MobileObjectParameter.IsValueListUsage, MobileObjectParameter.ControlLine, MobileObjectParameter.ValueList, MobileObjectParameter.LinkToValueListParameter, MobileObjectParameter.IsReadOnly, MobileObjectParameter.IsHidden, MobileObjectParameter.HiddenCondition, MobileObjectParameter.IsPicture, MobileObjectParameter.IsSplitLine, MobileObjectParameter.IsGrid, MobileObjectParameter.IsShowTime, MobileObjectParameter.IsSaveValueToLocal, MobileObjectParameter.IsMustInput, MobileObjectParameter.AccessCode, MobileObjectParameter.DecimalPlace, MobileObjectParameter.CreateDate, MobileObjectParameter.IsPassword, MobileObjectParameter.IsDefaultFirst, MobileObjectParameter.FileCount, MobileObjectParameter.MaxFileCount, MobileObjectParameter.TextDelayTime FROM dbo.MobileObjectParameter LEFT JOIN dbo.SysText ON dbo.MobileObjectParameter.MobileObjectParameterName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' ORDER BY MobileObjectParameter.ParameterSequence; RETURN 0; END; ``` 25.4 修改存储过程"MobileObjectParameterMainView",如下。 ```sql -- ============================================= -- Author: <administrator> -- Create date: <11 18 2011 11:55AM> -- Description: 为MobileObjectParameter创建主视图 -- Revision: 1.00 -- Update comment: -- Update date: -- ============================================= ALTER PROCEDURE [dbo].[MobileObjectParameterMainView] @I_PKId char(12) ='' --主键 --以上变量为系统服务固定接口参数,必须在每一个MainView过程中实现. AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行MainView,注意:以下过程必须根据业务的需求进行调整 --如果您不了解MainView过程如何编写,请参考我们提供的示例_SampleProjectMainView SELECT MobileObjectParameter.MobileObjectId, MobileObjectParameter.ParameterSequence, MobileObjectParameter.MobileObjectParameterName, MobileObjectParameter.DataType, MobileObjectParameter.ControlLine, MobileObjectParameter.IsValueListUsage, MobileObjectParameter.IsGrid, MobileObjectParameter.ValueList, MobileObjectParameter.AccessCode, MobileObjectParameter.IsPicture, MobileObjectParameter.IsSplitLine, MobileObjectParameter.DecimalPlace, MobileObjectParameter.TextDelayTime, MobileObjectParameter.MaxFileCount, MobileObjectParameter.LinkToValueListParameter, MobileObjectParameter.IsMustInput, MobileObjectParameter.IsReadOnly, MobileObjectParameter.IsHidden, MobileObjectParameter.HiddenCondition, MobileObjectParameter.IsShowTime, MobileObjectParameter.IsSaveValueToLocal, MobileObjectParameter.IsPassword, MobileObjectParameter.IsDefaultFirst, IIF(ISNULL(SysText.Text1,'')='',MobileObjectParameter.MobileObjectParameterName,SysText.Text1) AS Text1, SysText.Text2, SysText.Text3, SysText.Text4, SysText.Text5, SysText.Text6, SysText.Text7, SysText.Text8 FROM dbo.MobileObjectParameter LEFT JOIN dbo.SysText ON dbo.MobileObjectParameter.MobileObjectParameterName=dbo.SysText.TextModule AND SysText.TextOwner='[Public Text]' WHERE MobileObjectParameter.MobileObjectParameterId=@I_PKId return 0 END ``` 25.5 修改存储过程"MobileObjectParameterSaveData",如下。 ```sql -- ============================================= -- Author: <administrator> -- Create date: <11 18 2011 11:55AM> -- Description: 为MobileObjectParameter创建保存过程 -- Revision: 1.00 -- Update comment: -- Update date: -- ============================================= ALTER PROCEDURE [dbo].[MobileObjectParameterSaveData] @I_ReturnMessage nvarchar(max)='' output, --返回的信息,支持多语言 @I_IsNewRow bit = 0 output, --向客户端报告是否是新行 @I_ExceptionFieldName nvarchar(100)='' output, --向客户端报告引起冲突的字段 @I_LanguageId char(1)='1', --客户端传入的语言ID @I_PlugInCommand varchar(5)='', --插件命令 @I_OrBitUserId char(12)='', --用户ID @I_OrBitUserName nvarchar(100)='', --用户名 @I_ResourceId char(12)='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName nvarchar(100)='', --资源名 @I_PKId char(12) = '', --主键 @I_SourcePKId char(12)='', --执行拷贝时传入的源主键 @I_ParentPKId char(12)='', --父级主键 @I_Parameter nvarchar(100)='', --插件参数 --以上变量为服务固定接口参数,必须在每一个Save过程中实现。 --以下参与必须与该元对象数据在MetadataField表中提供的字段一一对应。 --警告: 以下变量请一定要赋以默认值,否则前台程序会报错 --提示:元数据在MetadataField表中提供的所有字段必须全部包含在Save过程中 -- 否则会导致因在更新时为参数不找到出前台程序报错。> --提示:以下是用户变量定义段,如有用户变量定义段,请将上面@I_Parameter nvarchar(100)=''后面加上,号! @MobileObjectId char(12)='', @MobileObjectParameterName nvarchar(100)='', @DataType char(1)='', @ParameterSequence char(2)='', @IsValueListUsage bit=0, @ControlLine int=0, @ValueList nvarchar(100)='', @LinkToValueListParameter nvarchar(100)='', @IsReadOnly bit=0, @IsHidden bit=0, @HiddenCondition nvarchar(100)='', @IsSplitLine bit=0, @IsPicture bit=0, @IsGrid bit=0, @IsSaveValueToLocal bit=0, @IsMustInput bit=0, @IsShowTime bit=0, @AccessCode nvarchar(20)='', @DecimalPlace INT=0, @Text1 nvarchar(100)='', @Text2 nvarchar(100)='', @Text3 nvarchar(100)='', @Text4 nvarchar(100)='', @Text5 nvarchar(100)='', @Text6 nvarchar(100)='', @Text7 nvarchar(100)='', @Text8 nvarchar(100)='', @IsPassword bit=0, @IsDefaultFirst bit=0, @MaxFileCount INT=0, @TextDelayTime INT=0 --用户变量结束 AS BEGIN -- This Stored Procedure is created by OrBit-MetaObject engine SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --执行SaveData,注意:以下过程必须根据业务的需求进行调整 --如果您不了解SaveData过程如何编写,请参考我们提供的示例_SampleProjectSaveData declare @ModifyObject nvarchar(50) declare @ModifyType nvarchar(20) declare @return_value int declare @S_ReturnMessage nvarchar(100) declare @FieldsValueOld nvarchar(max) declare @FieldsValueNew nvarchar(max) declare @FieldsChanged nvarchar(max) set @I_ReturnMessage='' set @I_IsNewRow = 0 set @I_ExceptionFieldName='' set @ModifyObject='MobileObjectParameter' --这里必须要是当前操作的表名 set @ModifyType ='' --没有申请到主键就退出 if ltrim(@I_PKId)='' begin set @I_ReturnMessage='No PKId applied' RETURN -1 END IF NOT EXISTS(SELECT MobileObjectParameterId FROM MobileObjectParameter WHERE MobileObjectParameterId=@I_PKId) BEGIN INSERT INTO MobileObjectParameter( MobileObjectParameterId, MobileObjectId, MobileObjectParameterName, DataType, ParameterSequence, IsValueListUsage, ControlLine, ValueList, LinkToValueListParameter, IsReadOnly, IsHidden, HiddenCondition, IsSplitLine, IsGrid, IsPicture, IsSaveValueToLocal, IsMustInput, AccessCode, IsShowTime, DecimalPlace, IsPassword, IsDefaultFirst, MaxFileCount, TextDelayTime )VALUES( @I_PKId, @I_ParentPKId, @MobileObjectParameterName, @DataType, @ParameterSequence, @IsValueListUsage, @ControlLine, @ValueList, @LinkToValueListParameter, @IsReadOnly, @IsHidden, @HiddenCondition, @IsSplitLine, @IsGrid, @IsPicture, @IsSaveValueToLocal, @IsMustInput, @AccessCode, @IsShowTime, @DecimalPlace, @IsPassword, @IsDefaultFirst, @MaxFileCount, @TextDelayTime) set @I_IsNewRow=1 set @ModifyType='Insert' --获取刚刚插入的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsChanged output end else begin --获更新前的记录 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueOld output Update MobileObjectParameter set MobileObjectId=@I_ParentPKId, MobileObjectParameterName=@MobileObjectParameterName, DataType=@DataType, ParameterSequence=@ParameterSequence, IsValueListUsage=@IsValueListUsage, ControlLine=@ControlLine, ValueList=@ValueList, LinkToValueListParameter=@LinkToValueListParameter, IsReadOnly=@IsReadOnly, IsHidden=@IsHidden, HiddenCondition=@HiddenCondition, IsSplitLine=@IsSplitLine, IsGrid=@IsGrid, IsPicture=@IsPicture, IsSaveValueToLocal=@IsSaveValueToLocal, IsMustInput=@IsMustInput, AccessCode=@AccessCode, IsShowTime=@IsShowTime, DecimalPlace=@DecimalPlace, IsPassword=@IsPassword, IsDefaultFirst=@IsDefaultFirst, MaxFileCount=@MaxFileCount, TextDelayTime=@TextDelayTime WHERE MobileObjectParameterId=@I_PKId set @ModifyType='Update' --获更新后的记录,并进行比较 EXEC SysGetTableFieldsCombine @ModifyObject,@I_PKId,@FieldsValueNew output EXEC SysGetTableFieldsCompare @FieldsValueOld,@FieldsValueNew,@FieldsChanged OUTPUT end --将Text1-Text8插入到SysText表中 EXEC [dbo].[SysTextSaveModuleValue] @TextModule = @MobileObjectParameterName, @Text1 = @Text1, @Text2 = @Text2, @Text3 = @Text3, @Text4 = @Text4, @Text5 = @Text5, @Text6 = @Text6, @Text7 = @Text7, @Text8 = @Text8 --最后将所做的修改入修改历史中 if @FieldsChanged<>'' EXEC [dbo].[SysWriteInModifyHistory] @ObjectName = @ModifyObject, @TablePKId = @I_PKId , @ModifyType = @ModifyType, @UserName = @I_OrBitUserName, @ModifyHistory = @FieldsChanged return 0 END ``` 25.6 修改存储过程"GetOrDroidMobileObjectInfo",如下。 ```sql -- ============================================= -- Author: <administrator> -- Create date: <Jun 2 2016 4:28PM> -- Revision: 1.00 -- Update comment:获取OrDroid插件对象的相关信息 -- Update date: -- ============================================= ALTER PROCEDURE [dbo].[GetOrDroidMobileObjectInfo] @I_PluginCommand nvarchar(2000)='', @GetWhat int=0 --0,获取 AS BEGIN if @GetWhat=0 --取得OrDroid插件对应的【移动事务对象】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObject.MobileObjectDesc, dbo.MobileObject.IsActivity, dbo.MobileObject.ColumnCount, dbo.MobileObject.FieldWidth, dbo.MobileObject.FieldSpace, dbo.MobileObject.MsgCount, dbo.MobileObject.AccessCode, dbo.MobileObject.AutoRefreshSec, isnull(SysText.Text1,'') as MetadataName_Text1, isnull(SysText.Text2,'') as MetadataName_Text2, isnull(SysText.Text3,'') as MetadataName_Text3, isnull(SysText.Text4,'') as MetadataName_Text4, isnull(SysText.Text5,'') as MetadataName_Text5, isnull(SysText.Text6,'') as MetadataName_Text6, isnull(SysText.Text7,'') as MetadataName_Text7, isnull(SysText.Text8,'') as MetadataName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObject.MobileObjectName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence return 0 end if @GetWhat =1 --取得OrDroid插件对应的【移动事务对象方法】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MobileObjectMethodId, dbo.MobileObjectMethod.MobileObjectMethodName, dbo.MobileObjectMethod.MethodSequence, dbo.MobileObjectMethod.SQLDoTxn, dbo.MobileObjectMethod.TxnParameter, dbo.MobileObjectMethod.IsHidden, dbo.MobileObjectMethod.IsPlaySound, isnull(dbo.MobileObjectMethod.IsGetGPS,0) as IsGetGPS , dbo.MobileObjectMethod.RefreshGridParameter, dbo.MobileObjectMethod.IsBeforeRunningConfirm, dbo.MobileObjectMethod.IsAutoRunWhenTabActive, ISNULL(dbo.MobileObjectMethod.IsActivityDevice,0) AS IsActivityDevice, dbo.MobileObjectMethod.ActivityParameter, ISNULL(dbo.MobileObjectMethod.IsVibrate,0) AS IsVibrate, dbo.MobileObjectMethod.PromptMessage, dbo.MobileObjectMethod.AccessCode, isnull(SysText.Text1,'') as MobileObjectMethodName_Text1, isnull(SysText.Text2,'') as MobileObjectMethodName_Text2, isnull(SysText.Text3,'') as MobileObjectMethodName_Text3, isnull(SysText.Text4,'') as MobileObjectMethodName_Text4, isnull(SysText.Text5,'') as MobileObjectMethodName_Text5, isnull(SysText.Text6,'') as MobileObjectMethodName_Text6, isnull(SysText.Text7,'') as MobileObjectMethodName_Text7, isnull(SysText.Text8,'') as MobileObjectMethodName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectMethod ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectMethod.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectMethod.MobileObjectMethodName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectMethod.MethodSequence return 0 end if @GetWhat =2 --取得OrDroid插件对应的【移动事务对象参数】清单 begin SELECT dbo.MobileObject.MobileObjectId, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.MobileObjectParameterId, dbo.MobileObjectParameter.MobileObjectParameterName, dbo.MobileObjectParameter.DataType, dbo.MobileObjectParameter.ParameterSequence, dbo.MobileObjectParameter.IsValueListUsage, dbo.MobileObjectParameter.ControlLine, dbo.MobileObjectParameter.ValueList, dbo.MobileObjectParameter.LinkToValueListParameter, dbo.MobileObjectParameter.IsReadOnly, dbo.MobileObjectParameter.IsHidden, dbo.MobileObjectParameter.HiddenCondition, dbo.MobileObjectParameter.IsPicture, dbo.MobileObjectParameter.IsSplitLine, dbo.MobileObjectParameter.IsGrid, dbo.MobileObjectParameter.IsShowTime, dbo.MobileObjectParameter.IsSaveValueToLocal, dbo.MobileObjectParameter.IsMustInput, dbo.MobileObjectParameter.AccessCode, dbo.MobileObjectParameter.TextDelayTime, isnull(dbo.MobileObjectParameter.DecimalPlace,2) as DecimalPlace, ISNULL(dbo.MobileObjectParameter.MaxFileCount,0) as MaxFileCount, isnull(dbo.MobileObjectParameter.IsPassword,0) as IsPassword, isnull(dbo.MobileObjectParameter.IsDefaultFirst,0) as IsDefaultFirst, isnull(SysText.Text1,'') as MobileObjectParameterName_Text1, isnull(SysText.Text2,'') as MobileObjectParameterName_Text2, isnull(SysText.Text3,'') as MobileObjectParameterName_Text3, isnull(SysText.Text4,'') as MobileObjectParameterName_Text4, isnull(SysText.Text5,'') as MobileObjectParameterName_Text5, isnull(SysText.Text6,'') as MobileObjectParameterName_Text6, isnull(SysText.Text7,'') as MobileObjectParameterName_Text7, isnull(SysText.Text8,'') as MobileObjectParameterName_Text8 FROM dbo.OrDroidPlugin INNER JOIN dbo.OrDroid_MobileObject ON dbo.OrDroidPlugin.OrDroidPluginId = dbo.OrDroid_MobileObject.OrDroidPluginId INNER JOIN dbo.MobileObject ON dbo.OrDroid_MobileObject.MobileObjectId = dbo.MobileObject.MobileObjectId INNER JOIN dbo.MobileObjectParameter ON dbo.MobileObject.MobileObjectId = dbo.MobileObjectParameter.MobileObjectId LEFT OUTER JOIN dbo.SysText ON MobileObjectParameter.MobileObjectParameterName = SysText.TextModule and SysText.TextOwner='[Public Text]' WHERE (dbo.OrDroidPlugin.OrDroidPluginCommand = @I_PluginCommand) AND (dbo.MobileObject.IsActivity = 1) ORDER BY dbo.OrDroid_MobileObject.MobileObjectSequence, dbo.MobileObject.MobileObjectName, dbo.MobileObjectParameter.ParameterSequence return 0 end END ``` 25.7 元对象"MobileObjectParameter"增加元字段"TextDelayTime",如下图。 ![](/media//202405/2024-05-11_111044.png) # 二十六、APP运行异常日志(一般用于APP闪退等异常分析) 当插件出现异常闪退时,可将以下路径"Android/data/com.ordroid.plugin/cache/log"下的日志文件提供给开发人员解决。 # 二十七、插件运行日志(一般用于运行耗时分析) 27.1 APP运行日志是查看插件初始化、按钮操作、文本框回车操作耗时的日志记录,具体使用如下。 ![](/media//202308/2023-08-23_111117.png) 27.2 移动事务对象初始化、按钮操作、文本框回车操作完成后,可通过此按钮查看日志,如图。 ![](/media//202308/2023-08-23_110542.png) 27.3 日志移动端本地路径为/Android/data/com.ordroid.plugin/cache/log下。 ![](/media//202308/2023-08-23_110728.png)
HF0028
2024年5月11日 11:10
分享
上一篇
下一篇
目录
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
下载Markdown文件