祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 8862|回复: 4

[其它] PB里执行RUN带参数及判断是否成功的办法

[复制链接]

[其它] PB里执行RUN带参数及判断是否成功的办法

[复制链接]
ehxz

主题

0

回帖

57万

积分

管理员

积分
572764
贡献
在线时间
小时
2008-9-8 15:30:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
string ls_run_rar,ls_file_zip_in,ls_file_path
ls_file_zip_in = c:\a.rar  //原文件
ls_file_path = c:\bak\ //需要解压缩的一个目录
int li_run_rar
ls_run_rar = "C:\Program Files\WinRAR\WinRAR.exe " + " e "+ ls_file_zip_in + " " + ls_file_path + " /y"
li_run_rar = Run(ls_run_rar,Minimized!) //执行
IF li_run_rar = 1 THEN //解压缩成功
//
END IF
最新的处理方法一般在最后,找新贴请倒着看。
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
572764
贡献
在线时间
小时
2008-9-8 15:33:29 | 显示全部楼层
附上写的一个文件导入的主程序,使用二个游标(一个检索所有门店,一个检索每个门店下的所有文件)
Global Variables
string ls_pos_in ='1'
共享共进共赢Sharing And Win-win Results
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
572764
贡献
在线时间
小时
2008-9-8 15:34:40 | 显示全部楼层
差不多花了一周的时间,就弄了点这个[em69]
Declare Local External Functions
FUNCTION boolean CopyFileA(ref string cfrom, ref string cto, boolean flag) LIBRARY "Kernel32.dll"
FUNCTION long Sleep(Long ms)library "kernel32"
共享共进共赢Sharing And Win-win Results
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
572764
贡献
在线时间
小时
2008-9-10 09:18:41 | 显示全部楼层
//定义门店编号,与上传路径相关
String ls_bran_id
ls_pos_in = "1"
String ls_file_date
//
cb_in.Enabled = False
cb_close.Enabled = False
cb_stop.Enabled = True
cb_in.Text = "数据正在导入中..."
//
DO UNTIL ls_pos_in = "0"
        //游标取值,所有门店的上传数据处理
        DECLARE cur_bran_id CURSOR FOR
                SELECT bran_id
                FROM bran_cust_rec
                WHERE bran_id LIKE "C%"
                Order By bran_id;
               
        OPEN cur_bran_id ;
       
        FETCH cur_bran_id Into :ls_bran_id  ;
        DO        WHILE sqlca.SQLCode = 0
                st_pos_id.Text = ls_bran_id
                Yield()
                //====================================================================
                //数据导入到DW里
                //====================================================================
                //ls_bran_id = "CZ001" //调试用
               
                Long ll_filelength_zip,ll_filelength
                String ls_file_in ,ls_file_bak
                String ls_file_zip_in,ls_file_zip_bak //
                String ls_file_path //文件目录
                String ls_run_rar //rar命令
                Int li_run_rar //rar是否运行成功
                String ls_t_file,ls_t_table,ls_t_dw //导入相关的文件名,表名,数据窗口
                Int li_importfile,li_update //是否导入文件成功,是否update成功
               
                DECLARE cur_pos_in CURSOR FOR
                        SELECT t_file,t_table,t_dw
                        FROM t_pos_in
                        Where t_y = 'y' ;
                       
                OPEN cur_pos_in ;
               
                FETCH cur_pos_in Into :ls_t_file,:ls_t_table,:ls_t_dw  ;
                DO        WHILE sqlca.SQLCode = 0
                        Yield()
                        //文件导入
                        ls_file_date = String(Today(),"yyyymmddhhmm")
                        //压缩处理
                        ls_file_zip_in = "E:\posftp\" + ls_bran_id + "\"+ls_t_file + ".zip"
                        ll_filelength_zip = FileLength(ls_file_zip_in)
                        ls_file_in = "E:\posftp\" + ls_bran_id + "\"+ls_t_file
                        ls_file_bak = "E:\posftpbak\" + ls_bran_id + "\"+ls_file_date+ls_t_file
                        ll_filelength = FileLength(ls_file_in)
                        IF ll_filelength_zip >= 1 And ll_filelength = -1 THEN //ZIP文件存在,TXT文件不存在
                                st_file.Text = ls_file_zip_in
                                ls_file_zip_bak = "E:\posftpbak\" + ls_bran_id + "\"+ls_file_date+ls_t_file + ".zip"
                                ls_file_path = "E:\posftp\"+ls_bran_id+"\"
                                ls_run_rar = "C:\Program Files\WinRAR\WinRAR.exe " + " e "+ ls_file_zip_in + " " + ls_file_path + " /y"
                                li_run_rar = Run(ls_run_rar,Minimized!)
                                sleep(3000)
                                IF li_run_rar = 1 THEN //解压缩成功
                                        ls_file_in = "E:\posftp\" + ls_bran_id + "\"+ls_t_file
                                        //ls_file_bak = "E:\posftpbak\" + ls_bran_id + "\"+ls_file_date+ls_t_file
                                        ll_filelength = FileLength(ls_file_in) //解压缩后重新取
                                        IF ll_filelength >= 30 THEN
                                                dw_pos_in.DataObject = ls_t_dw
                                                dw_pos_in.SetTransObject(sqlca)
                                                dw_pos_in.Retrieve()
                                                li_importfile = dw_pos_in.ImportFile(ls_file_in)
                                                st_file.Text = ls_file_in
                                                IF li_importfile > 0 THEN
                                                        CopyFileA(ls_file_zip_in,ls_file_zip_bak,False)
                                                        FileDelete(ls_file_in)
                                                        FileDelete(ls_file_zip_in)
                                                END IF
                                                //数据入库
                                                String Sqlstatement
                                                Sqlstatement = "DELETE From " +  ls_t_table
                                                EXECUTE Immediate :Sqlstatement Using sqlca  ;
                                                dw_pos_in.SetTransObject(sqlca)
                                                li_update = dw_pos_in.Update()
                                                IF li_update <> 1 THEN
                                                        MessageBox("提示","更新失败" + ls_file_zip_in)
                                                        RETURN
                                                END IF
                                        END IF
                                END IF
                        ELSE
                                IF ll_filelength >= 30 THEN
                                        dw_pos_in.DataObject = ls_t_dw
                                        dw_pos_in.SetTransObject(sqlca)
                                        dw_pos_in.Retrieve()
                                        li_importfile = dw_pos_in.ImportFile(ls_file_in)
                                        st_file.Text = ls_file_in
                                        IF li_importfile > 0 THEN
                                                CopyFileA(ls_file_in,ls_file_bak,False)
                                                FileDelete(ls_file_in)
                                        END IF
                                        //数据入库
                                        Sqlstatement = "DELETE From " +  ls_t_table
                                        EXECUTE Immediate :Sqlstatement Using sqlca  ;
                                        dw_pos_in.SetTransObject(sqlca)
                                        li_update = dw_pos_in.Update()
                                        IF li_update <> 1 THEN
                                                MessageBox("提示","更新失败" + ls_file_zip_in)
                                                RETURN
                                        END IF
                                ELSEIF ll_filelength <= 29 THEN
                                        CopyFileA(ls_file_in,ls_file_bak,False)
                                        FileDelete(ls_file_in)
                                END IF
                        END IF
                       
                        sleep(30)
                       
                        FETCH cur_pos_in Into :ls_t_file,:ls_t_table,:ls_t_dw  ;
                LOOP
                CLOSE cur_pos_in;
                //
                sleep(3000)
                st_file.Text = ""
                FETCH cur_bran_id Into :ls_bran_id  ;
        LOOP
        CLOSE cur_bran_id;
       
LOOP

cb_in.Enabled = True
cb_close.Enabled = True
cb_in.Text = "导入"



//更新有压缩文件及未压缩文件同时存在的情况的处理,对于程序更新过程中的问题解决
//20080912
共享共进共赢Sharing And Win-win Results
ribut9225

主题

0

回帖

536

积分

高级会员

积分
536
贡献
在线时间
小时
2008-9-30 18:57:45 | 显示全部楼层
呵呵
有点复杂啊
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-18 15:51 , Processed in 0.044680 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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