使用 Advantage Server 9x,我正在尝试使用以下代码创建 DBF/CDX 表结构的副本:
table1.AdsCopyTableStructure(d.AdsConnectionTemp.connectPath+'table.dbf');
创建的表是 ttAdsADT 类型,即使原始表是 ttAdsCDX。
我尝试在结果表上使用 AdsConvertTable,但它会弹出一个异常,抱怨无法在空闲表上完成操作。
有什么办法可以做到这一点?
使用 Advantage Server 9x,我正在尝试使用以下代码创建 DBF/CDX 表结构的副本:
table1.AdsCopyTableStructure(d.AdsConnectionTemp.connectPath+'table.dbf');
创建的表是 ttAdsADT 类型,即使原始表是 ttAdsCDX。
我尝试在结果表上使用 AdsConvertTable,但它会弹出一个异常,抱怨无法在空闲表上完成操作。
有什么办法可以做到这一点?
我无法使此功能正常工作,但通过使用以下代码想出了一个解决方法:
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;
你有几个选择。如果您不介意拥有一条记录,您可以随时进行
从 oldtable 中选择 top 1 * into mynewtable.dbf
这很快
第二种选择是执行第一种方法,将其保存到 adt 文件(这是默认值),然后打开该表并使用 ADSConvertTable 函数创建 DBF。
ADTTable.ADSTableConvert('dbftable.dbf',ttADSCDX);