运行提示Capability not supported,怎么解决
procedure TForm1.FormCreate(Sender: TObject);
begin
table.Exclusive:=True;
table.Active:=True;//table.Open;
end;procedure TForm1.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----Table.active');
  if not Table.Exclusive then    raise EDatabaseError.Create('Table must be opened exclusively to pack----table.exclusive');  // 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...
        showmessage('d');
    FillChar(TableDesc, sizeof(TableDesc), 0);
    // Get the database handle from the table's cursor handle...
        showmessage('d');
    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
        showmessage('d');
    // 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...
    showmessage(Props.szTableType);
    //if (Props.szTableType = szDBASE ) then
   // begin
      //  showmessage('1d');
      Check(DbiPackTable(Table.DBHandle, Table.Handle, nil,szDBASE, True));
   // end
   // 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;

解决方案 »

  1.   

    用DELETE+POST不就OK了吗?还要什么PACK?
      

  2.   

    ??老大,你不信你TRY啊,没有那么简单
      

  3.   

    adoconnection:
    Provider=VFPOLEDB.1;Data Source=d:\rsc;Password="";Collating Sequence=MACHINE
    adocommand1.CommandText:='pack ht.dbf';
    adocommand1.Execute;
      

  4.   

    datamodule1.Database1.Connected:=false;
    with datamodule1.Query4 do
      begin
       close;
       sql.Clear;
       sql.Add('pack '+tabname1+'');
       ExecSQL;
    end;
    我用的是上面语名没问题啊,datamodule1.Database1.Connected:=false;这名句一定要加必须先关闭所有的连接,我用的是odbc连接.dbf表