123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- $PBExportHeader$f_init_dftpbl.srf
- global type f_init_dftpbl from function_object
- end type
- forward prototypes
- global function integer f_init_dftpbl (string arg_pblname, string arg_dwname, ref string arg_msg)
- end prototypes
- global function integer f_init_dftpbl (string arg_pblname, string arg_dwname, ref string arg_msg);Long rslt = 1
- String ls_dwsyn,ls_pblpath
- String ls_Filename[]
- String ls_comments[]
- Blob lb_dwsyn
- Long i = 1,no_mxcheck
- Long cnt
- SELECT count(*)
- INTO :cnt
- FROM u_setliblist
- Where libname = :arg_pblname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,附加文件列表"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- INSERT INTO u_setliblist(libname )
- Values (:arg_pblname);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入操作失败,附加文件"
- GOTO ext
- END IF
- END IF
- ls_pblpath = sys_cur_path + arg_pblname
- IF NOT FileExists(ls_pblpath) OR arg_dwname = '' THEN
- IF NOT FileExists(ls_pblpath) THEN
- IF LibraryCreate(ls_pblpath,sys_system_id) = -1 THEN
- rslt = 0
- arg_msg = "创建PBL失败 "
- GOTO ext
- END IF
- END IF
-
- DECLARE cur_inwaermx CURSOR FOR
- SELECT Filename,comments
- FROM sys_autoudpb
- Where pblname = :arg_pblname;
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :ls_Filename[i],:ls_comments[i];
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :ls_Filename[i],:ls_comments[i];
- LOOP
- CLOSE cur_inwaermx;
-
- no_mxcheck = i - 1
- // SELECT count(*) INTO :no_mxcheck
- // FROM sys_autoudpb
- // Where pblname = :arg_pblname;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,数据窗口数量"
- // GOTO ext
- // END IF
- //
- // IF i <> (no_mxcheck+1) THEN
- // rslt = 0
- // arg_msg = "查询操作失败,数据窗口数量"
- // GOTO ext
- // END IF
-
- FOR i = 1 TO no_mxcheck
- SELECTBLOB filedata
- INTO :lb_dwsyn
- FROM sys_autoudpb
- Where Filename = :ls_Filename[i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,数据窗口语法信息"
- GOTO ext
- ELSE
- // ls_dwsyn = String(lb_dwsyn)
- ls_dwsyn = String(lb_dwsyn,EncodingANSI!)
- END IF
- IF LibraryImport(ls_pblpath,ls_Filename[i], ImportDataWindow!, ls_dwsyn, arg_msg,ls_comments[i] ) = -1 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ELSE
- String dwsyntax,ls_dw_arr[]
- Long it_max,ll_end,ll_beg
- String ls_dwsyn2
- dwsyntax = LibraryExport(ls_pblpath,arg_dwname,ExportDataWindow!)
- it_max = 1
- ls_dw_arr[1] = arg_dwname
- ll_end = 1
- DO WHILE Pos(dwsyntax,'dataobject=',ll_end) > 0
- ll_beg = Pos(dwsyntax,'dataobject=',ll_end)
- IF ll_beg = 0 THEN
- GOTO ext
- END IF
- ll_beg = ll_beg + 12
- ll_end = Pos(dwsyntax,'"',ll_beg)
- it_max ++
- ls_dw_arr[it_max] = Mid(dwsyntax,ll_beg,ll_end - ll_beg )
- LOOP
-
- //对比
-
- FOR i = 1 TO it_max
- ls_dwsyn = LibraryExport(ls_pblpath, ls_dw_arr[i], ExportDataWindow!)
- SELECT comments
- INTO :ls_comments[i]
- FROM sys_autoudpb
- Where Filename = :ls_dw_arr[i];
- IF sqlca.SQLCode <> 0 THEN
- ls_dwsyn2 = ls_dwsyn
- ls_comments[i] = ''
- ELSE
- SELECTBLOB filedata
- INTO :lb_dwsyn
- FROM sys_autoudpb
- Where Filename = :ls_dw_arr[i];
- IF sqlca.SQLCode <> 0 THEN
- ls_dwsyn2 = ls_dwsyn
- ELSE
- ls_dwsyn2 = String(lb_dwsyn,EncodingANSI!)
- // ls_dwsyn2 = String(lb_dwsyn, EncodingANSI!)
- END IF
-
- IF ls_dwsyn2 <> ls_dwsyn OR f_check_dwname(ls_pblpath,ls_dw_arr[i]) <> ls_comments[i] THEN
- IF LibraryImport(ls_pblpath,ls_dw_arr[i], ImportDataWindow!, ls_dwsyn2, arg_msg,ls_comments[i] ) = -1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
-
- END IF
- ext:
- RETURN rslt
- end function
|