起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 3569|回复: 5

业务参数的说明

[复制链接]
发表于 2004-4-2 15:23:53 | 显示全部楼层 |阅读模式
业务参数是设计用来调节业务系统的可变参数,在系统任何一个位置(除数据表外)都可以访问这些参数。业务参数具有字段的一些属性,如数据类型、数据约束、数据查找属性定义等。

业务参数分为两种类型(Kind):
1、自动参数(AutoParam):自动参数能够根据设定好的方式,自动返回指定类型的值。对自动参数赋值有两种方法:
    A、表达式赋值:在自动参数的表达式(Expression)属性中设计表达式,表达式的计算结果作为自动参数值返回。
    B、代码赋值:业务参数提供了OnGetValue事件,设计者可以在该事件中编码。

当设计者同时设计了业务参数的表达式和OnGetValue事件,系统会优先处理OnGetValue事件,此事件的计算结果作为参数的返回值。

2、用户参数(UserParam):用户参数需要用户选择某一时机给该参数赋值,以供后续的使用。

具体的某个参数没有隔离级,参数组有它的隔离级,隔离级分为:全局、人员、岗位、功能、未定义

以一个自增参数从‘01’开始为例:

全局:第一次取该参数为‘01’,第二次取该参数为‘02’;

人员:A 第一次取该参数为‘01’,第二次取该参数为‘02’;B 第一次取该参数为‘01’,第二次取该参数为‘02’

岗位:该岗位下的人员第一次取该参数为‘01’,第二次取该参数为‘02’;换一个岗位,第一次取该参数为‘01’,第二次取该参数为‘02’

功能:同一功能第一次取该参数为‘01’,再次取该参数为‘02’;换一功能第一次取该参数为‘01’,再次取该参数为‘02’

未定义:是找的最近一个定义的隔离级,一般默认为功能。
回复

使用道具 举报

发表于 2004-4-6 11:10:37 | 显示全部楼层

自动参数的例子

可参考“思维加速|业务字典|业务参数组”中的代码,更改对Value赋值。

例如:做一个 年+6位数的自增参数

    {取本机的年}
    Value := IntTostr(yearof(now))+TJustepCommonUnit.StrToRightLenStr(Value.ToString, '0', 6);  

    {取服务器的年}
    Value := IntTostr(yearof(SysService.Time))+TJustepCommonUnit.StrToRightLenStr(Value.ToString, '0', 6);

    //SysService 在 Business.Data.SysSrv 下,yearof 在 Business.System.DateUtils 下
回复 支持 反对

使用道具 举报

发表于 2004-5-20 16:21:45 | 显示全部楼层
Business 3.0 参数有两种:用户参数pkUserParam 和 自动参数pkAutoParam

  pkUserParam  和  pkAutoParam 通过代码赋值一样,步骤:

1、在需要赋值的程序集中,例如功能的“项目管理”中引用“业务模型\协同系统\个人事务\公共单元”

2、在Use 中加入单元 JUSTEPCOMMONUNIT

3、赋值代码:

procedure TCT1.Button1Click(Sender: TObject);
var
  lParam: Business.Model.TBizParam;
  lStr: string;
begin
  lParam := JUSTEPCOMMONUNIT.TJUSTEPCOMMONUNIT.GetParam(Self.Context,
    'Biz:\YWKJ1\DICT\YWCSZ1.ParamGroup', 'YWCS1');
    lParam.Value := 11;   { 把 11 赋值给 业务参数1}
  Dialogs.ShowMessage(Variants.VarToStr(lParam.Value));
end;

备注:
     3.1、Biz:\YWKJ1\DICT\YWCSZ1.ParamGroup  定义参数组的BizURL(可以在参数组属性,获得 BizURL)
     3.2、 YWCS1 是调用的业务参数的 ID
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-21 11:02:14 | 显示全部楼层

如何解决业务参数赋值时,报从XXX类型转换XXX类型发生语法错误

例如,报从字符串换为datetime时发生语法错误。出现这样的问题,可以打开BizMonitor来监控,会看到发到服务端的SQL语句。

例如,
在平台中定义SQL语句如下:
SELECT SJJ_WZKCB.YXRQ, SJJ_WZKCB.KF, SJJ_WZKCB.WPBM, SJJ_WZKCB.GGXH
  FROM SJJ_WZKCB
  WHERE SJJ_WZKCB.YXRQ = :&[Biz:\SYSTEM\DataTimeParams.ParamGroup\ServerDate.Param]

且参数的值:='2004-5-27 17:28:10' and CPU= 'P4'


而通过BizMonitor看到发到服务端的SQL语句确是:
SELECT SJJ_WZKCB.YXRQ, SJJ_WZKCB.KF, SJJ_WZKCB.WPBM, SJJ_WZKCB.GGXH
  FROM SJJ_WZKCB
  WHERE SJJ_WZKCB.YXRQ = :_2929B3D70935458FA13847014A2ABAE7  

从SQL语句可以看到,发到服务端的是一个值,不是一个表达式,因而跟字段类型没有必然关系。数据库接受到SQL语句后,开始解析,当解析到等号(=),发现后面是一个参数,那么就去找参数的值,发现参数的值为''2004-5-27 17:28:10' and CPU= 'P4',不是一个日期型的格式,所以就报:从字符串换为datetime时发生语法错误.


解决方法是,不能这样写SQL语句,应该把表达式拼写到SQL语句中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-21 11:09:34 | 显示全部楼层

如何检查代码给参数赋值后,而值确是空或者为0

1、所有代码只要在运行功能时才会起作用,所以在预料数据表或者测试数据集时,参数值是不会填写上

2、如果在设计环境下运行功能时也没有填写上,那么请检查是否对业务参数的代码进行编译了。

3、如果是在运行环境,除了检查是否编译业务参数的代码,还有检查是否签入了该资源。
回复 支持 反对

使用道具 举报

发表于 2009-7-22 17:34:36 | 显示全部楼层
“项目管理”中引用“思维加速|公共资源|公共单元”
等价于 业务模型\业务系统\公共\公共函数\公共函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 00:37 , Processed in 0.036092 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表