IMetabaseUpdateSqlNode.IsDatabaseValid

Синтаксис Fore

IsDatabaseValid: Boolean;

Синтаксис Fore.NET

IsDatabaseValid: boolean;

Описание

Свойство IsDatabaseValid возвращает признак того, присутствует ли в текущем репозитории БД, к которой выполняет запрос SQL-оператор.

Комментарии

Свойство доступно только для чтения.

Допустимые значения:

Примечание. Перед проверкой, присутствует ли в текущем репозитории база данных, к которой выполняет запрос SQL-оператор, необходимо проверить корректность обновления. Для этого используйте метод IMetabaseUpdate.Prepare.

Пример Fore

Для выполнения примера предполагается наличие файла обновления «C:\Update.pef». В репозитории должна присутствовать БД с идентификатором «OBJ_DB».

Добавьте ссылку на системную сборку «Metabase».

Sub UserProc;
Var
    MB: IMetabase;
    Update: IMetabaseUpdate;
    UFN: IMetabaseUpdateFolderNode;
    i: Integer;
    UpdateObj: IMetabaseUpdateSqlNode;
    DbNode: IMetabaseUpdateObjectNode;
Begin
    MB := MetabaseClass.Active;
    Update := Mb.CreateUpdate;
    Update.LoadFromFile("C:\Update.pef");
    Update.Prepare;
    UFN := Update.RootFolder;
    For i := 0 To UFN.Count - 1 Do
        If UFN.Item(i) Is IMetabaseUpdateSqlNode Then
            UpdateObj := UFN.Item(i) As IMetabaseUpdateSqlNode;
            If Not UpdateObj.IsDatabaseValid Then
                DbNode := UpdateObj.DatabaseNode;
                If DbNode <> Null Then
                    DbNode.Object := MB.ItemById("OBJ_DB");
                    Else UpdateObj.Database := MB.ItemById("OBJ_DB").Key;
                End If;
            End If;
        End If;
    End For;
    Update.SaveToFileNF("C:\Update.pefx");
End Sub UserProc;

После выполнения примера будет открыто обновление «C:\Update.pef». Для всех SQL-операторов в обновлении будет проверено наличие необходимой БД. Если БД отсутствует в текущем репозитории, то она будет заменена на БД «OBJ_DB». Изменения будут сохранены.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Update: IMetabaseUpdate;
    UFN: IMetabaseUpdateFolderNode;
    i: Integer;
    UpdateObj: IMetabaseUpdateSqlNode;
    DbNode: IMetabaseUpdateObjectNode;
Begin
    MB := Params.Metabase;
    Update := Mb.CreateUpdate();
    Update.LoadFromFileNF("C:\" + "Update.pef", UpdateLoadMode.ulmInsertUpdate);
    Update.Prepare();
    UFN := Update.RootFolder;
    For i := 0 To UFN.Count - 1 Do
        If UFN.Item[i] Is IMetabaseUpdateSqlNode Then
            UpdateObj := UFN.Item[i] As IMetabaseUpdateSqlNode;
            If Not UpdateObj.IsDatabaseValid Then
                DbNode := UpdateObj.DatabaseNode;
                If DbNode <> Null Then
                    DbNode.Object := MB.ItemById["OBJ_DB"];
                    Else UpdateObj.Database := MB.ItemById["OBJ_DB"].Key;
                End If;
            End If;
        End If;
    End For;
    Update.SaveToFileNF("C:\" + "Update.pefx");
End Sub;

См. также:

IMetabaseUpdateSqlNode