IMetabaseUpdateDataObjectNode.PrimaryKey

Синтаксис Fore

PrimaryKey: String;

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

PrimaryKey: String;

Описание

Свойство PrimaryKey определяет список полей/атрибутов, представляющих собой первичный ключ.

Комментарии

По указанным полям будет проверяться, отличны ли данные таблицы-приемника от данных таблицы-источника и выполняться заданное действие по обновлению (например, только добавление записей, которых нет по первичному ключу). Поля в списке должны указываться в верхнем регистре через ";". Способ обновления данных задается свойством BatchMode.

Пример Fore

Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «T_Data». В таблице имеется поле «UNIQUENAME», по которому содержатся какие-либо уникальные данные.

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

Sub UserProc;
Var
    MB: IMetabase;
    MBDesc: IMetabaseObjectDescriptor;
    MUpdate: IMetabaseUpdate;
    ObjNode: IMetabaseUpdateDataObjectNode;
Begin
    MB := MetabaseClass.Active;
    MBDesc := MB.ItemById("T_Data");
    MUpdate := MB.CreateUpdate;
    MUpdate.BoundType := MetabaseObjectUpdateBoundType.ById;
    MUpdate.AlterType(MetabaseObjectClass.KE_CLASS_TABLE) := MetabaseObjectAlterType.Recreate;
    MUpdate.Description := "Обновление для таблицы";
    ObjNode := MUpdate.RootFolder.Add(MetabaseUpdateNodeType.DataObject) As IMetabaseUpdateDataObjectNode;
    //Указание обновляемого объекта
    ObjNode.Object := MBDesc;
    //Параметры обновления
    ObjNode.Label := MBDesc.Id;
    ObjNode.UpdatePart := MetabaseObjectUpdatePart.DataMetadata;
    ObjNode.BoundType := MetabaseObjectUpdateBoundType.ByKey;
    ObjNode.Method := MetabaseUpdateMethod.All;
    ObjNode.BatchMode := ObjectUpdateDataBatchMode.UpdateInsert;
    ObjNode.PrimaryKey := "UNIQUENAME";
    //Сохранение обновления
    MUpdate.SaveToFileNF("C:\Update.pefx");
End Sub UserProc;

При выполнении примера будет создан файл обновления. В данное обновление будет включена указанная таблица.

Пример Fore.NET

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

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

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MBDesc: IMetabaseObjectDescriptor;
    MUpdate: IMetabaseUpdate;
    ObjNode: IMetabaseUpdateDataObjectNode;
Begin
    MB := Params.Metabase;
    MBDesc := MB.ItemById["T_Data"];
    MUpdate := MB.CreateUpdate();
    MUpdate.BoundType := MetabaseObjectUpdateBoundType.moubtById;
    MUpdate.AlterType[MetabaseObjectClass.KE_CLASS_TABLE As Integer] := MetabaseObjectAlterType.meobaltyRecreate;
    MUpdate.Description := "Обновление для таблицы";
    ObjNode := MUpdate.RootFolder.Add(MetabaseUpdateNodeType.untDataObject) As IMetabaseUpdateDataObjectNode;
    //Указание обновляемого объекта
    ObjNode.Object := MBDesc;
    //Параметры обновления
    ObjNode.Label := MBDesc.Id;
    ObjNode.UpdatePart := MetabaseObjectUpdatePart.moupDataMetadata;
    ObjNode.BoundType := MetabaseObjectUpdateBoundType.moubtByKey;
    ObjNode.Method := MetabaseUpdateMethod.mumAll;
    ObjNode.BatchMode := ObjectUpdateDataBatchMode.obupdabamoUpdateInsert;
    ObjNode.PrimaryKey := "UNIQUENAME";
    //Сохранение обновления
    MUpdate.SaveToFileNF("C:\\Update.pefx");
End Sub;

См. также:

IMetabaseUpdateDataObjectNode