我有一组包含在Advantage Database数据字典中的表。字典不再可用,表格无法打开。
我想使用代码(不是Advantage Data Architect)释放这些表。
我能找到的唯一参考是名为ADSDDFreeTable的帮助中列出的函数。
该功能的文档位于以下链接:
http://devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/index.html?ace_adsddfreetable.htm
但它没有提供代码示例,我无法理解如何使用它。
是否有人能够展示如何使用此函数的代码示例(使用变量,而不是文字,文件名等)
非常感谢!
答案 0 :(得分:4)
Ace.pas
将AdsDDFreeTable
定义为
function AdsDDFreeTable( pucTableName: PAceChar;
pucPassword: PAceChar ):UNSIGNED32; {$IFDEF WIN32}stdcall;{$ENDIF}{$IFDEF LINUX}cdecl;{$ENDIF}
相同的Ace.pas
定义PAceChar
:
type
PAceChar = PAnsiChar;
因此,对函数的调用应该相当简单:
var
TableName: AnsiString;
begin
TableName := 'C:\Data\MyTable.adt`;
if AdsDDFreeTable(PAnsiChar(TableName), nil) <> ADS_FREETABLEFAILED then
ShowMessage('Table removed from datadictionary')
else
// Call ADSGetLastError to retrieve reason for failure;
end;
答案 1 :(得分:3)
除了@Ken的解决方案(+1)之外,还有一个名为freeadt.exe的独立命令行实用程序,它将从其关联的数据字典中释放ADT表。我相信它与Advantage Data Architect一起安装。
如果从没有参数的命令行运行它,它会显示用法信息。但是,一般情况下,您可以为其指定文件夹名称(以处理所有表格)或将特定文件作为参数。