123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- $PBExportHeader$uo_databaseinfo.sru
- forward
- global type uo_databaseinfo from nonvisualobject
- end type
- end forward
- global type uo_databaseinfo from nonvisualobject autoinstantiate
- end type
- forward prototypes
- public function integer uof_get_dbinfo (transaction arg_transaction, ref integer arg_hisflag, ref string arg_superpsw, ref string arg_prg_id, string arg_cur_version, ref string arg_msg)
- public function integer uof_set_dbinfo (transaction arg_transaction, integer arg_hisflag, ref string arg_msg)
- public function integer uof_set_superpsw (string arg_superpsw, ref string arg_msg)
- public function integer uof_set_hisdb (ref string arg_msg)
- end prototypes
- public function integer uof_get_dbinfo (transaction arg_transaction, ref integer arg_hisflag, ref string arg_superpsw, ref string arg_prg_id, string arg_cur_version, ref string arg_msg);//取数据库定义资料
- Int rslt = 1
- Long cnt
- String tmp_sconfig
- 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.hisflag,
- sys_DB_version.superpsw,
- sys_DB_version.prg_id,
- sys_DB_version.cur_version
- INTO
- :arg_hisflag,
- :arg_superpsw,
- :arg_prg_id,
- :arg_cur_version
- FROM sys_DB_version
- USING arg_transaction;
- IF arg_transaction.SQLCode <> 0 THEN
- arg_msg = '查询当前数据库资料失败,请与供应商联系!'
- rslt = 0
- GOTO ext
- END IF
- //检查数据串是否合理
- IF sys_system_id + sys_power_key <> f_psw_bczh(tmp_sconfig,1,sys_power_key) 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)
- //messagebox('',arg_cur_version)
- 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 = '' 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
- public function integer uof_set_dbinfo (transaction arg_transaction, integer arg_hisflag, ref string arg_msg);//设定数据库资料
- Int rslt = 1
- Long cnt
- String tmp_sconfig,tmp_superpsw,tmp_ffpsw
- String ls_sys_prg_id,ls_sys_cur_version
-
- tmp_ffpsw = f_psw_bczh(sys_system_id ,0,sys_power_key)
- tmp_sconfig = f_psw_bczh(sys_system_id + sys_power_key ,0,sys_power_key)
- tmp_superpsw = f_psw_bczh('supersupersuper' ,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_cur_version,0,sys_power_key)
- INSERT INTO sys_DB_version(
- Prg_id,
- Ori_version,
- cur_version,
- hisflag,
- superpsw)
- VALUES (:ls_sys_prg_id,
- :ls_sys_cur_version,
- :ls_sys_cur_version,
- :arg_hisflag,
- :tmp_superpsw)
- USING arg_transaction;
-
- IF arg_transaction.SQLCode <> 0 THEN
- arg_msg = '定义数据库资料失败'
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_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 uof_set_hisdb (ref string arg_msg);//设置历史数据库
- Int rslt = 1
- UPDATE sys_DB_version
- Set hisflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '设置历史数据库失败'
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_databaseinfo.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_databaseinfo.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|