就是下面的这一句:If SDbfRS.State = adStateOpen Then SDbfRS.Close: Set SDbfRS = Nothing
If SDbfConn.State = adStateOpen Then SDbfConn.Close: Set SDbfConn = NothingFS.DeleteFolder App.Path & "\TempZyml", True
目录下是程序临时用很多个DBF自由表的文件夹 在XP上能执行上面的代码,可是一到了2000上就提示拒绝的权限, 查看路径下有的DBF  自由表不能打开 ,也不能删除。
请大家帮帮忙了谢谢!

解决方案 »

  1.   

    临时文件应该放到用户的Temp文件夹下。
      

  2.   

    权限问题,用 administrator 登录 2000 再运行试试。
      

  3.   

    但我确实是用administrator 登录的呀,问题在哪里呢?我查看过了那个文件夹,发现里面的DBF自由表被删除了,这些都是不用的
    而被Open的那两个DBF自由表没有被删除,估计是不是关闭连接没有成功的原因呢?但我的代码又确实将他们都关闭了的呀?!可是同样的代码,在XP上没有问题,在2000上却有问题,确实搞不懂了.大家救命啊?!
      

  4.   

    如楼主所说,那真是很怪了。你试试能不能直接从资源管理器中删?(用 admin 进入2000)
    如果不能,那肯定还是权限或文件打开的问题,
    如果能,那不如你在程序中关闭连接或dbf后,等几秒后再执行删除代码
      

  5.   

    等几秒最简单的办法是放个 timer 控件,关闭 dbf 后半 timer1.enabled=true 启动它
    timer控件的间隔时间设置为3秒,然后它的事件中就是删除代码。删除后再将自己废弃 timer1.enabled=false
      

  6.   

    Try:SDbfRS.Close
    Set SDbfRS = Nothing
    SDbfConn.Close
    Set SDbfConn = Nothing
    当然,我这里没有XP,所以不能保证以上方法有效。
      

  7.   

    哦,看错了……我原来也这样操作过 DBF ,没有问题的。我就是用的2k(你确定其他地方没有使用这个数据库的代码了?)我的代码是:
        conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""DSN=Visual FoxPro Database;UID=;SourceDB=" & szTempPath & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"""
         工作代码 .....    conn.Close
        Set conn = Nothing
        
        On Error Resume Next
        Kill szTempPath + "*.*"       '这里从没出过错,都能删除
        RmDir szTempPath
        On Error GoTo 0
      

  8.   

    问题的关键是:因为我要删除的文件夹下面有许多DBF表,只有打开了记录集的DBF表没有被删除,而从来没有被打开记录集的DBF表都被删除了。我的连接字符串为:SDbfConn.Open "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & DBFPath & ";Exclusive=No;Collate=Machine;"用了之后
    马上设置了RS。CLOSE SET RS=NOTHING
    SDBFCONN。CLOSE SET RS=NOTHIN
    这些应该释放了正在使用的表的啦?
      

  9.   

    Chice_wxg(学)(习) 的代码我也试过了
    在2000中还是不行。
      

  10.   

    Chice_wxg(学)(习):给我个Email我将程序及数据发给你
    请你帮我看看好不好?!
      

  11.   

    '使用rmdir 删除目录命令试一下rmdir App.Path & "\TempZyml"
      

  12.   

    frankwong(黄梓钿)谢谢,不行。
      

  13.   

    我使用的操作系统是win2k server,经过对你送来的代码进行测试,故障原因依然是估计的“文件正在被使用或打开”这种原因,其中比较奇怪的是:
    错误的语句可以在一段时间(小于1分钟)后被正常执行,看来是调用数据库表文件的处理进程有点延迟,造成你执行删除目录时数据表的处理进程还没有结束,而且是访问那个目录的三个包含“项目”名字的文件,其他两个可以立刻删除。因为你使用的访问方式比较特殊,所以只有你自己才能解决。