释放优势数据库服务器表的代码示例

Bil*_*ven 4 delphi advantage-database-server

我有一组包含在 Advantage Database 数据字典中的表。该词典不再可用,并且表格将无法打开。

我想使用代码(而不是 Advantage Data Architect)释放这些表。

我能找到的唯一参考是帮助中列出的名为 ADSDDFreeTable 的函数。

该函数的文档位于此链接:

http://devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/index.html?ace_adsddfreetable.htm

但它没有提供代码示例,我无法理解如何使用它。

有人愿意展示如何使用此函数的代码示例吗(使用变量,而不是文字,文件名等)

非常感谢!

Ken*_*ite 5

Ace.pas定义AdsDDFreeTable

function AdsDDFreeTable( pucTableName: PAceChar;
                         pucPassword: PAceChar ):UNSIGNED32; {$IFDEF WIN32}stdcall;{$ENDIF}{$IFDEF LINUX}cdecl;{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

同样Ace.pas定义PAceChar

type
  PAceChar = PAnsiChar;
Run Code Online (Sandbox Code Playgroud)

因此,对该函数的调用应该相当简单:

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;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ins 5

除了@Ken 的解决方案(+1)之外,还有一个名为 freeadt.exe 的独立命令行实用程序,它将从关联的数据字典中释放 ADT 表。我相信它是与Advantage Data Architect一起安装的。

如果从不带参数的命令行运行它,它将显示使用信息。不过,一般来说,您可以为其指定文件夹名称(以处理所有表)或特定文件作为参数。