JoinAttributeName: String;
JoinAttributeName: string;
Свойство JoinAttributeName определяет идентификатор связанного атрибута.
Свойство актуально, если IOrmCondition.Operator_ принимает следующие значения:
Для выполнения примера в репозитории предполагается наличие БД временных рядов с идентификатором «TSDB». В данной БД должны присутствовать целочисленные атрибуты временных рядов с идентификаторами: «COUNTRY», «PERFORMANCE», «TARGET».
Добавьте ссылки на системные сборки «Cubes», «Metabase», «Orm», «Rds»,
Sub UserCond;
Var
MB: IMetabase;
RubDesc: IMetabaseObjectDescriptor;
RubrIn: IRubricatorInstance;
DictInst: IMetaDictionaryInstance;
MetaDLookup: IMetaDictionaryLookup;
Conditions: IOrmConditions;
Cond: IOrmCondition;
Current: IMetaDictionaryData;
Begin
// Получаем БД временных рядов
MB := MetabaseClass.Active;
RubDesc := MB.ItemById("TSDB");
RubrIn := RubDesc.Open(Null) As IRubricatorInstance;
// Получаем справочник временных рядов
DictInst := RubrIn.Facts;
// Создаем объект для поиска в справочнике
MetaDLookup := DictInst.CreateLookup("");
// Задаем условия поиска
Conditions := MetaDLookup.Where;
// Условие 1: значение атрибута COUNTRY=512
Cond := Conditions.Add;
Cond.AttributeName := "COUNTRY";
Cond.Value := 512;
// Условие 2 (вложенное): значение атрибута PERFORMANCE
// должно быть больше значения атрибута TARGET
Cond := Conditions.Add;
Cond.Operator_ := OrmComparisonOperator.Conditions;
Conditions := Cond.Nested;
Cond := Conditions.Add;
Cond.AttributeName := "PERFORMANCE";
Cond.Operator_ := OrmComparisonOperator.JoinGreater;
Cond.JoinAttributeName := "TARGET";
// Выполняем поиск и выводим результаты в окно консоли
MetaDLookup.Open(DictionaryCursorOptions.None);
While Not MetaDLookup.Eof Do
Current := MetaDLookup.Current;
Debug.WriteLine(Current.Record.Key.ToString);
MetaDLookup.Next;
End While;
MetaDLookup.Close;
End Sub UserCond;
После выполнения примера в окно консоли будут выведены ключи временных рядов, соответствующих условиям: значение атрибута «COUNTRY» равняется «512», а значение атрибута «PERFORMANCE» больше значения атрибута «TARGET».
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Orm;
Imports Prognoz.Platform.Interop.Rds;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
RubDesc: IMetabaseObjectDescriptor;
RubrIn: IRubricatorInstance;
DictInst: IMetaDictionaryInstance;
MetaDLookup: IMetaDictionaryLookup;
Conditions: IOrmConditions;
Cond: IOrmCondition;
Current: IMetaDictionaryData;
Begin
// Получаем БД временных рядов
MB := Params.Metabase;
RubDesc := MB.ItemById["TSDB"];
RubrIn := RubDesc.Open(Null) As IRubricatorInstance;
// Получаем справочник временных рядов
DictInst := RubrIn.Facts;
// Создаем объект для поиска в справочнике
MetaDLookup := DictInst.CreateLookup("");
// Задаем условия поиска
Conditions := MetaDLookup.Where;
// Условие 1: значение атрибута COUNTRY=512
Cond := Conditions.Add();
Cond.AttributeName := "COUNTRY";
Cond.Value := 512;
// Условие 2 (вложенное): значение атрибута PERFORMANCE
// должно быть больше значения атрибута TARGET
Cond := Conditions.Add();
Cond.Operator := OrmComparisonOperator.ocoConditions;
Conditions := Cond.Nested;
Cond := Conditions.Add();
Cond.AttributeName := "PERFORMANCE";
Cond.Operator := OrmComparisonOperator.ocoJoinGreater;
Cond.JoinAttributeName := "TARGET";
// Выполняем поиск и выводим результаты в окно консоли
MetaDLookup.Open(DictionaryCursorOptions.dcuoNone);
While Not MetaDLookup.Eof() Do
Current := MetaDLookup.Current;
System.Diagnostics.Debug.WriteLine(Current.Record.Key.ToString());
MetaDLookup.Next();
End While;
MetaDLookup.Close();
End Sub;
См. также: