DataDomain: DbDataDomain;
DataDomain: Prognoz.Platform.Interop.Dal.DbDataDomain;
Свойство DataDomain возвращает тип данных для хранения в атрибуте многобайтовой информации.
Если свойство DataDomain имеет значение DbDataDomain.Memo, а свойство IDimAttribute.DataType - значение DbDataType.String, то атрибут имеет тип «Длинный текст».
При работе с атрибутом «Длинный текст» учитывайте следующие ограничения:
если используется СУБД Oracle или Teradata, то нельзя выполнять поиск по значению данного атрибута;
атрибуты данного типа поддерживаются только для табличных справочников НСИ и составных табличных справочников НСИ;
данные атрибуты не могут входить в уникальные и неуникальные индексы;
выборка и сохранение данных атрибутов могут проходить медленнее по сравнению с обычными текстовыми атрибутами.
Для табличных справочников НСИ и составных табличных справочников НСИ DataDomain может принимать значения DbDataDomain.Memo или DbDataDomain.None.
Для выполнения примера в репозитории предполагается наличие табличного справочника НСИ с идентификатором «TMDMDICT_MEMOTMDMDICT_MEMO». В справочнике должно содержаться несколько значений.
Для выполнения примера добавьте ссылки на системные сборки: Dal, Dimensions, Metabase.
Sub UserProc;
Var
mb: IMetabase;
dimension: IDimInstance;
attribute: IDimAttributeInstance;
attributes: IDimAttributesInstance;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем табличных справочник НСИ
dimension := mb.ItemById("TMDMDICT_MEMO").Open(Null) As IDimInstance;
// Получаем атрибуты справочника
attributes := dimension.Attributes;
// Перебираем полученные атрибуты
For i := 0 To attributes.Count - 1 Do
attribute := attributes.Item(i);
// Если атрибут имеет тип «Длинный текст», то выводим его значение
If (attribute.DataDomain = DbDataDomain.Memo) And
(attribute.Attribute.DataType = DbDataType.String) Then
Debug.WriteLine("Значение первого элемента: " + attribute.Value(0));
End If;
End For;
End Sub UserProc;
В результате выполнения примера для первого элемента справочника в окно консоли будет выведено значение атрибутов типа «Длинный текст», если они присутствуют в справочнике НСИ.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Dimensions;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
dimension: IDimInstance;
attribute: IDimAttributeInstance;
attributes: IDimAttributesInstance;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем табличных справочник НСИ
dimension := mb.ItemById["TMDMDICT_MEMO"].Open(Null) As IDimInstance;
// Получаем атрибуты справочника
attributes := dimension.Attributes;
// Перебираем полученные атрибуты
For i := 0 To attributes.Count - 1 Do
attribute := attributes.Item[i];
// Если атрибут имеет тип «Длинный текст», то выводим его значение
If (attribute.DataDomain = DbDataDomain.dddMemo) And
(attribute.Attribute.DataType = DbDataType.ddtString) Then
System.Diagnostics.Debug.WriteLine("Значение первого элемента: " + attribute.Value[0]);
End If;
End For;
End Sub;
См. также: