ITableField.DataDomain

Синтаксис

DataDomain: DbDataDomain;

DataDomain: Prognoz.Platform.Interop.Dal.DbDataDomain;

Описание

Свойство DataDomain определяет тип данных поля таблицы, если оно предназначено для хранения многобайтовой информации.

Комментарии

Поле может хранить многобайтовую информацию, если свойство DataType имеет значение DbDataType.String или DbDataType.Blob. Принцип работы с многобайтовой информацией описан в базе знаний в статье «Работа с полями, имеющими пользовательский тип данных».

Также, если поле таблицы имеет тип - DbDataType.DateTime, то, указав в свойстве DataDomain значение DbDataDomain.MSec, можно указать необходимость хранить значения даты и времени с точностью до миллисекунд.

Пример

Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «TBL».

Добавьте ссылки на системные сборки: Dal, Db, Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    Table: ITable;
    Fields: ITableFields;
    Field: ITableField;
Begin
    MB := MetabaseClass.Active;
    Table := MB.ItemById(
"TBL").Bind As ITable;
    Fields := Table.Fields;
    
For Each Field In Fields Do
        
If Field.DataType = DbDataType.Blob Then
            
Select Case Field.DataDomain
                
Case DbDataDomain.None: Debug.WriteLine("Поле " + Field.Name + " хранит двоичные данные");
                
Case DbDataDomain.Memo: Debug.WriteLine("Поле " + Field.Name + " хранит текстовые данные");
                
Case DbDataDomain.Raw: Debug.WriteLine("Поле " + Field.Name + " хранит пользовательские данные");
            
End Select;
        
Elseif Field.DataType = DbDataType.DateTime Then
            
If Field.DataDomain = DbDataDomain.MSec Then
                Debug.WriteLine(
"Поле " + Field.Name + " хранит дату и время с точностью до миллисекунд");
            
End If;
        
End If;
    
End For;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Table: ITable;
    Fields: ITableFields;
    Field: ITableField;
Begin
    MB := Params.Metabase;
    Table := MB.ItemById[
"TBL"].Bind() As ITable;
    Fields := Table.Fields;
    
For Each Field In Fields Do
        
If Field.DataType = DbDataType.ddtBlob Then
            
Select Case Field.DataDomain
                
Case DbDataDomain.dddNone: System.Diagnostics.Debug.WriteLine("Поле " + Field.Name + " хранит двоичные данные");
                
Case DbDataDomain.dddMemo: System.Diagnostics.Debug.WriteLine("Поле " + Field.Name + " хранит текстовые данные");
                
Case DbDataDomain.dddRaw: System.Diagnostics.Debug.WriteLine("Поле " + Field.Name + " хранит пользовательские данные");
            
End Select;
        
Elseif Field.DataType = DbDataType.ddtDateTime Then
            
If Field.DataDomain = DbDataDomain.dddMSec Then
                System.Diagnostics.Debug.WriteLine(
"Поле " + Field.Name + " хранит дату и время с точностью до миллисекунд");
            
End If;
        
End If;
    
End For;
End Sub;

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

См. также:

ITableField