0

使用 Advantage Server 9x,我正在尝试使用以下代码创建 DBF/CDX 表结构的副本:

table1.AdsCopyTableStructure(d.AdsConnectionTemp.connectPath+'table.dbf');

创建的表是 ttAdsADT 类型,即使原始表是 ttAdsCDX。

我尝试在结果表上使用 AdsConvertTable,但它会弹出一个异常,抱怨无法在空闲表上完成操作。

有什么办法可以做到这一点?

4

2 回答 2

0

我无法使此功能正常工作,但通过使用以下代码想出了一个解决方法:

 t:=TAdsTable.create(nil);
 try
      t.AdsTableOptions.AdsFilterOptions:=RESPECT_WHEN_COUNTING;
      t.open;
      t.AdsSetAOF('keyval=-1'); // gives an empty result
      t.AdsCopyTable('c:\somewhere\emlt.dat');
      t.close;
 finally
      freeAndNil(t);
 end;
于 2010-11-17T21:21:40.383 回答
0

你有几个选择。如果您不介意拥有一条记录,您可以随时进行

从 oldtable 中选择 top 1 * into mynewtable.dbf

这很快

第二种选择是执行第一种方法,将其保存到 adt 文件(这是默认值),然后打开该表并使用 ADSConvertTable 函数创建 DBF。

ADTTable.ADSTableConvert('dbftable.dbf',ttADSCDX);

于 2010-11-18T01:16:25.420 回答