2013-09-24 1 views
2

У меня есть набор таблиц, которые были включены в словарь данных Advantage Database. Словарь больше недоступен, и таблицы не будут открываться.Пример кода для освобождения таблицы базы данных базы данных

Я хотел бы освободить эти таблицы, используя код (а не 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.

Если вы запустите его из командной строки без параметров, отобразится информация об использовании. В общем, вы можете дать ему имя папки (для обработки всех таблиц) или конкретный файл в качестве параметра.

 Смежные вопросы

  • Нет связанных вопросов^_^