4

Advantage データベースのデータ ディクショナリに含まれていた一連のテーブルがあります。ディクショナリは使用できなくなり、テーブルは開きません。

コードを使用してこれらのテーブルを解放したいと考えています (Advantage Data Architect ではありません)。

これについて私が見つけた唯一の参照は、ADSDDFreeTable というヘルプにリストされている関数です。

関数のドキュメントは次のリンクにあります。

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

コードサンプルが提供されておらず、使用方法がわかりません。

この関数の使用方法のコードサンプルを示すのに十分親切な人はいますか(リテラルではなく変数、ファイル名など)

どうもありがとう!

4

2 に答える 2

5

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;
于 2013-09-24T20:46:05.220 に答える
5

@Ken のソリューション (+1) に加えて、関連するデータ ディクショナリから ADT テーブルを解放する freeadt.exe という名前のスタンドアロン コマンド ライン ユーティリティもあります。Advantage Data Architectでインストールされていると思います。

パラメータを指定せずにコマンド ラインから実行すると、使用方法に関する情報が表示されます。ただし、通常は、フォルダー名 (すべてのテーブルを処理するため) または特定のファイルをパラメーターとして指定できます。

于 2013-09-24T22:22:44.980 に答える