用DELECT只能标记删除记录,在VFP里要用PACK,那如何VB中真正删除VF的记录呢?

解决方案 »

  1.   

    sql="delete from table where......"
      

  2.   

    老兄没有明白我的意思:下面是VFP的解释:delete - sql 命令
    给要删除的记录做标记。语法
    DELETE FROM [DatabaseName!]TableName
    [WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]参数
    FROM [DatabaseName!]TableName指定要给其中的记录加删除标记的表。
    DatabaseName! 指定包含该表的非当前数据库名。如果数据库不是当前的数据库,必须加上包含有该表的数据库名。在数据库名的后面、表名的前面包含感叹号 (!) 分隔符。WHERE FilterCondition1 [AND | OR FilterCondition2 ...]指定 Visual FoxPro 只给某些记录做删除标记。说明
    带有删除标记的记录在执行 PACK 前并不从表中做物理删除。
      

  3.   

    那在VB里,又如何能执行PACK呢?
      

  4.   

    难道从VFP外部就无法真正删除记录了吗?
      

  5.   

    strSql="Pack"
    dbconn.Execute strSql,2其中DBCONN是连接到VFP库的数据库连接。(偶猜的,不知道能不能不能用)
      

  6.   

    在VFP外部是没有办法真正删除记录的,这个已经讨论过很多次了
      

  7.   

    将以下代码用V_FoxPro编译成可执行文件(PACK.EXE) 
        PARA FILENAME 
         IF .NOT. FILE(FILENAME) THEN 
         MESSAGEBOX ("指定的数据库 ' "+FILENAME +" ' 没有找到!") 
         RETURN 
         ENDIF 
         
         SET EXCLUSIVE ON 
         USE (FILENAME) 
         PACK 
         USE 
        ** CLOSE ALL 
        RETURN 
        当每次操作完DBF数据库后关闭连接(db.clos) 
        然后调用以上程序进行切底删除,方法如下: 
         
         ... 
         db.clos 
         shell "path\pack.exe paht\数据库名" 
         
        或者在Form_Unload事件执行(建议) ]这是以前一个老兄说的,我记下来但没试,希望对你有帮助
      

  8.   

    晕倒,
    我在VB6下使用过VFP的数据库啊,
    使用ADO连接,用标准的SQL语句就是直接删除了啊,没有什么pack的问题啊
    不明白你的问题是如何产生的.
      

  9.   

    VB通过ADO对象使用SQL“Delete From TableName Where Condition”
      

  10.   

    各位没看懂我3楼写的吗???真能删除我还问啥?这是VFP6自己的帮助文件,写的清清楚楚:delete - sql 命令
    给要删除的记录做标记。指定 Visual FoxPro 只给某些记录做删除标记。说明  带有删除标记的记录在执行 PACK 前并不从表中做物理删除。
    -------------------------------------------------------真不知道你们用的是哪个版本?自编的吧?说不定VFP6以后到真可删除记录,但我早已试过,VFP6中肯定就如它写的,只是加删除标记!
    这样数据就会越积越多VFP6