IRdsUniqueKey.Check

Fore Syntax

Check;

Fore.NET Syntax

Check();

Description

The Check method checks if element values are unique by attributes included into the unique key.

Comments

Use the IRdsUniqueKey.Contains property to include an attribute to the unique key or to exclude it from the unique key.

If on editing or adding the unique key the uniqueness of the key is violated the exception is thrown. The user will see an error message.

Fore Example

Executing the example requires an MDM repository with the RDS_REPO identifier that contains an MDM dictionary with the RDS_DICT identifier.

Add links to the Metabase, Rds, Dal system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict: IRdsDictionary;
    Attrs: IRdsAttributes;
    Attr: IRdsAttribute;
    UniqKeys: IRdsUniqueKeys;
    UniqKey: IRdsUniqueKey;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemByIdNamespace("RDS_DICT", MB.ItemById("RDS_REPO").Key).Edit;
    Dict := MObj As IRdsDictionary;
    Attrs := Dict.Attributes;
    UniqKeys := Dict.UniqueKeys;
    // Determine identifier and attribute name
    Attr := Attrs.Add;
    Attr.DataType := DbDataType.String;
    Attr.Id := "ATTRIBUTE";
    Attr.Name := "State number";
    // Create the unique key
    UniqKey := UniqKeys.Add;
    UniqKey.Name := "Unique key by state number";
    UniqKey.Contains(Attr) := True;
    // Check if elements' values are unique
    UniqKey.Check;
    // Save changes
    (UniqKey.Dictionary As IMetabaseObject).Save;
End Sub UserProc;

After executing the example a custom attribute is created in the MDM dictionary. A unique key of MDM dictionary is created by this attribute.

Fore.NET Example

The requirements and result of the Fore.NET Example execution match with those in the Fore Example.

Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict: IRdsDictionary;
    Attrs: IRdsAttributes;
    Attr: IRdsAttribute;
    UniqKeys: IRdsUniqueKeys;
    UniqKey: IRdsUniqueKey;
Begin
    MB := Params.Metabase;
    MObj := MB.ItemByIdNamespace["RDS_DICT", MB.ItemById["RDS_REPO"].Key].Edit();
    Dict := MObj As IRdsDictionary;
    Attrs := Dict.Attributes;
    UniqKeys := Dict.UniqueKeys;
    // Determine identifier and attribute name
    Attr := Attrs.Add();
    Attr.DataType := DbDataType.ddtString;
    Attr.Id := "ATTRIBUTE";
    Attr.Name := "State number";
    // Create the unique key
    UniqKey := UniqKeys.Add();
    UniqKey.Name := "Unique key by state number";
    UniqKey.Contains[Attr] := True;
    // Check if elements' values are unique
    UniqKey.Check();
    // Save changes
    (UniqKey.Dictionary As IMetabaseObject).Save();
End Sub;

See also:

IRdsUniqueKey