调用VFP处理dbf文件

# 导入win32com模块
import win32com.client
import time
def chuli_tzxx(file_name = r'\\192.111.1.1\QSFiles\DCOM\20230921\szhk_tzxx0921.dbf'):
    try:
        # 创建COM对象
        vfp = win32com.client.Dispatch("VisualFoxPro.Application")

        # 打开VFP程序
        vfp.Visible = True

        # 打开VFP数据库
        cmd1 = "USE "+file_name+ " SHARED"
        vfp.DoCmd(cmd1)

        # 读取VFP数据表中的数据
        vfp.DoCmd(r"DROP TABLE #temp")
        print(file_name[file_name.rindex('\\'):file_name.rindex('.')])
        #print(file_name[:file_name.rindex('\\')])
        cmd2 = r"SELECT distinct t.* FROM "+file_name[file_name.rindex('\\')+1:file_name.rindex('.')]+" t INTO TABLE #temp"
        vfp.DoCmd(cmd2)
        file_name1=file_name[:file_name.rindex('\\')]+file_name[file_name.rindex('\\'):file_name.rindex('.')] +"_new.dbf"
        cmd3= r"SELECT * FROM #temp WHERE (fjsm1 not like  '00004测试非%' AND zqdm<>'00116') OR (zqdm='00116' AND rq1='20221206') INTO dbf " +file_name1
        print(cmd3)
        rs = vfp.DoCmd(cmd3)
        print(rs)
        # 输出数据
        #print(rs.Fields("zqdm").Value)
        '''
        while not rs.EOF:
            print(rs.Fields("fjsm1").Value)
            rs.MoveNext()
        '''
        # 修改VFP数据表中的数据
        #vfp.DoCmd("UPDATE table SET name = 'NewName' WHERE id = 1")

        # 删除VFP数据表中的数据
        #vfp.DoCmd("DELETE FROM table WHERE id = 1")

        # 关闭VFP数据库
    finally:
        vfp.DoCmd("CLOSE ALL")
        time.sleep(1)
        # 关闭VFP程序
        vfp.Quit()

chuli_tzxx(r'\\192.111.1.1\QSFiles\DCOM\20230922\szhk_tzxx0922.dbf')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值