2010-11-16 29 views
0

使用利用服务器9x中,我尝试使用下面的代码来创建一个DBF/CDX表结构的副本:如何使用AdsCopyTableStructure创建ttAdsCDX表

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

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

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

任何方式来做到这一点?

+1

说实话,我对这个功能没有任何问题。你确定基表是ttAdsCDX?另外,正如Doug在下面提到的,使用AdsConvertTable应该没有问题。我不确定这里是否有可能,但也许更多样本包括表格等可以提供更多信息。 – Edgar 2010-11-18 14:40:23

+0

嗨,埃德加,你使用哪个版本的ADS? – 2010-11-18 21:55:32

回答

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; 
0

你有几个选项。 如果你不介意有一个单一的记录,你总是可以做

选择顶部1 *成从oldtable

mynewtable.dbf这是快速

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

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