我觉得table1.delete,table1.EmptyTable语句好像没有真正删除记录,和dbase时代一样,只是做了一个删除记号,在dbase中可以用一个pak命令做真删除,delphi中要怎么样实现呢?

解决方案 »

  1.   

    你做在bde下删除的dbf数据虽然只是打标记的,但是bde不会读取这些标记过的数据
    你可以在foxpro程序里启动的部分添加脚本把他pack掉
    这样在两个程序里就都看不到了
      

  2.   

    可是我的文件已经好大了!
    不能一个几十条的记录,让老板拿一个移动硬盘才放的下吧
    也不能让老板每次还要用foxpro打开一次,那样他迟早会厌倦的!我可就惨了有没有什么变通的办法?
      

  3.   

    数据库为什么不用SQL SERVER哪,在里面可以设置的啊
      

  4.   

    chwdong(chwdong) 
    那是dbase的命令吧?delphi也可以用?
      

  5.   

    把你的dbf发到[email protected]我看看,不过foxpro不熟,没把握
      

  6.   

    bde运用了缓存来存放数据。
    它只有在程序关闭后才会自动更新数据库。
    最好用ADO。
      

  7.   

    算了我看大家也没有什么办法,我们找个变通的办法
    比如,我可以新建一个dbf表,这样就不会有delete指令了,可是BDE怎么新建一个表呢?
    database1.excute('create table mytest (id,char(20))');
    这样是要报错的 invalid use of key token:,char(20)高手呀,都去哪里了?!
      

  8.   

    高手来了!(不好意思,冒充一回)
    1.你可以利用拷贝的功能,将这个表拷贝到一个临时表,自然拷由的时候不会把删除过的再COPY过去的.然后再把临时表COPY回来就OK了.这是第一招.
    2.记得FOXPRO中有个DLL,支持用其他程序执行FOXPRO命令,好像是FOXRUN('命令'),这就跟用FOXPRO本身一个样啦,随你PACK啦 .
    无论哪一招是都可以达到你的目的.
      

  9.   

    哦,临时表我要是能建一个临时表我也不用copy了