2013-09-24 24 views
2

我有一組包含在Advantage數據庫數據字典中的表。字典不再可用,表格也不會打開。用於釋放優勢數據庫服務器表的代碼示例

我想使用代碼(而不是Advantage Data Architect)來釋放這些表。

我能找到的唯一參考資料是幫助中列出的函數,稱爲ADSDDFreeTable。

該函數的文檔在此鏈接:

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

,但它不提供一個代碼示例,我無法理解如何使用它。

會有人好心地展現這個函數是如何使用的代碼示例(使用變量,而不是文字,文件名等)

非常感謝!

回答

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一起安裝。

如果您從沒有參數的命令行運行它,它會顯示使用情況信息。但是,一般來說,您可以給它一個文件夾名稱(處理所有表格)或將特定文件作爲參數。