PrimaryKey: String;
PrimaryKey: String;
Свойство PrimaryKey определяет список полей/атрибутов, представляющих собой первичный ключ.
По указанным полям будет проверяться, отличны ли данные таблицы-приемника от данных таблицы-источника и выполняться заданное действие по обновлению (например, только добавление записей, которых нет по первичному ключу). Поля в списке должны указываться в верхнем регистре через ";". Способ обновления данных задается свойством BatchMode.
Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «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.
Добавьте ссылку на системную сборку 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;
См. также: