123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- $PBExportHeader$uo_getdbinfo.sru
- forward
- global type uo_getdbinfo from nonvisualobject
- end type
- end forward
- global type uo_getdbinfo from nonvisualobject
- end type
- global uo_getdbinfo uo_getdbinfo
- forward prototypes
- public function integer set_superpsw (string arg_superpsw, ref string arg_msg)
- public function integer set_dbinfo (transaction arg_transaction, integer arg_hisflag, integer arg_switchflag, ref string arg_msg)
- public function integer get_dbinfo (transaction arg_transaction, ref integer arg_hisflag, ref string arg_superpsw, ref string arg_prg_id, ref string arg_cur_version, ref integer arg_switchflag, ref string arg_switchpsw, ref string arg_msg)
- end prototypes
- public function integer set_superpsw (string arg_superpsw, ref string arg_msg);//设定超级密码
- int rslt = 1
- arg_superpsw = f_psw_bczh(arg_superpsw ,0,sys_power_key)
- String psw[],ls_psw
- Long ls_i,it_mxt
- DECLARE cur_scid CURSOR FOR
- SELECT u_user.psw
- FROM u_user ;
- OPEN cur_scid;
- FETCH cur_scid INTO :ls_psw;
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- psw[it_mxt] = ls_psw
- FETCH cur_scid INTO :ls_psw;
- LOOP
- close cur_scid;
- for ls_i = 1 to it_mxt
- if arg_superpsw = psw[ls_i] then
- arg_msg ='设定的超级密码与用户密码相同'
- rslt = 0
- goto ext
- end if
- next
- UPDATE sys_DB_version Set superpsw = :arg_superpsw;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '设定超级密码失败'
- rslt = 0
- goto ext
- END IF
- ext:
- if rslt = 0 then
- rollback;
- elseif rslt = 1 then
- commit;
- end if
- return rslt
- end function
- public function integer set_dbinfo (transaction arg_transaction, integer arg_hisflag, integer arg_switchflag, ref string arg_msg);//设定数据库资料
- Int rslt = 1,cnt
- String ls_superpsw,ls_sys_prg_id,ls_sys_cur_version
- ls_superpsw = f_psw_bczh(sys_superpsw,0,sys_power_key)
- ls_sys_prg_id = f_psw_bczh(sys_prg_id,0,sys_power_key)
- ls_sys_cur_version = f_psw_bczh(sys_Allow_version,0,sys_power_key)
- INSERT INTO sys_DB_version
- (Prg_id,
- Ori_version,
- cur_version,
- Update_dt,
- superpsw,
- hisflag,
- switchflag
- )
- VALUES
- (:ls_sys_prg_id,
- :ls_sys_cur_version,
- :ls_sys_cur_version,
- getdate(),
- :ls_superpsw,
- :arg_hisflag,
- :arg_switchflag)
- USING arg_transaction;
-
- IF arg_transaction.SQLCode <> 0 THEN
- arg_msg = '定义数据库资料失败'
- rslt = 0
- GOTO ext
- END IF
- COMMIT;
- ext:
- RETURN rslt
- end function
- public function integer get_dbinfo (transaction arg_transaction, ref integer arg_hisflag, ref string arg_superpsw, ref string arg_prg_id, ref string arg_cur_version, ref integer arg_switchflag, ref string arg_switchpsw, ref string arg_msg);//取数据库定义资料
- Int rslt = 1,cnt
- Int li_versiontype
- SELECT count(*) INTO :cnt FROM sys_DB_version USING arg_transaction;
- IF arg_transaction.SQLCode <> 0 THEN
- arg_msg = '查询数据库资料失败,请与龙嘉软件联系!'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 1 THEN
- arg_msg = '数据库资料被手动破坏,请与龙嘉软件联系!'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '数据还未有定义,请先定义数据库'
- rslt = -1
- GOTO ext
- END IF
- SELECT
- sys_DB_version.prg_id,
- sys_DB_version.hisflag,
- sys_DB_version.superpsw,
- sys_DB_version.cur_version,
- sys_DB_version.switchflag,
- sys_DB_version.switchpsw
- INTO :arg_prg_id,
- :arg_hisflag,
- :arg_superpsw,
- :arg_cur_version,
- :arg_switchflag,
- :arg_switchpsw
- FROM sys_DB_version
- USING arg_transaction;
- IF arg_transaction.SQLCode <> 0 THEN
- arg_msg = '查询当前数据库资料失败,请与龙嘉软件联系!'
- rslt = 0
- GOTO ext
- END IF
- arg_superpsw = f_psw_bczh(arg_superpsw,1,sys_power_key)
- arg_prg_id = f_psw_bczh(arg_prg_id,1,sys_power_key)
- arg_cur_version = f_psw_bczh(arg_cur_version,1,sys_power_key)
- arg_switchpsw = f_psw_bczh(arg_switchpsw,1,sys_power_key)
- IF arg_prg_id <> sys_prg_id THEN
- arg_msg = '数据库资料被恶意破坏或当前连接的数据库不是本系统的数据库,请与龙嘉软件联系!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_cur_version < sys_Allow_version THEN
- arg_msg = '当前数据库资料版本太低不能应用新程序,请与龙嘉软件联系!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_cur_version >= sys_Allow_version THEN
- IF arg_cur_version < sys_cur_version THEN
- arg_msg = '升级数据库版本'
- rslt = -2
- GOTO ext
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- on uo_getdbinfo.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_getdbinfo.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|