有如下语句:
    form1.Query1.Close;
    form1.Query1.sql.Clear;
    sqlnamestr:='delete from dataname'
    form1.Query1.SQL.Add(sqlnamestr;
    form1.Query1.ExecSQL;
不能删除记录,但是只做了删除标记,而没有删除。
虽然用sql语句看不见,但是文件没有变小,用vfp打开,只做了删除标记。我用的是vfp的数据库。

解决方案 »

  1.   

    // Pack a Paradox or dBASE table
    // The table must be opened exclusively before calling this function...
    procedure PackTable(Table: TTable);
    var
      Props: CURProps;
      hDb: hDBIDb;
      TableDesc: CRTblDesc;
    begin
      // Make sure the table is open exclusively so we can get the db handle...
      if not Table.Active then
        raise EDatabaseError.Create('Table must be opened to pack');
      if not Table.Exclusive then    raise EDatabaseError.Create('Table must be opened exclusively to pack');  // Get the table properties to determine table type...
      Check(DbiGetCursorProps(Table.Handle, Props));  // If the table is a Paradox table, you must call DbiDoRestructure...
      if Props.szTableType = szPARADOX then begin
        // Blank out the structure...
        FillChar(TableDesc, sizeof(TableDesc), 0);
        // Get the database handle from the table's cursor handle...    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
        // Put the table name in the table descriptor...
        StrPCopy(TableDesc.szTblName, Table.TableName);
        // Put the table type in the table descriptor...
        StrPCopy(TableDesc.szTblType, Props.szTableType);
        // Set the Pack option in the table descriptor to TRUE...
        TableDesc.bPack := True;
        // Close the table so the restructure can complete...
        Table.Close;
        // Call DbiDoRestructure...    Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
      end
      else
        // If the table is a dBASE table, simply call DbiPackTable...
        if (Props.szTableType = szDBASE) then
          Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
        else
          // Pack only works on PAradox or dBASE; nothing else...
          raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +        'type to pack');  Table.Open;end;
      

  2.   

    我记得这种数据库还有清除一下才可以彻底删除,可是很久不用了记不得用什么命令了。和FoxBase类似。关注一下。
      

  3.   

    我用的是"SQL"控件,
    有一个"pack"命令,但在delphi6中怎么用?