IDtBulkPacket.Data

Синтаксис Fore

Data: Array;

Синтаксис Fore.NET

Data: System.Array;

Описание

Свойство Data определяет двухмерный массив данных, которые необходимо экспортировать в рамках одной транзакции.

Пример Fore

Для выполнения примера предполагается наличие в корневом каталоге диска С файла "Data.xls".

Для выполнения примера добавьте ссылки на системные сборки Dt, Dal, Db.

Sub Main;
Var
    ExcelConsumer: IDtExcelConsumer;
    Fields: IDtFieldDefinitions;
    Field: IDtFieldDefinition;
    v, v1: Array;
    Pack: IDtBulkPacket;
    i: integer;
Begin
    //Массив, передаваемый в первом пакете
    v := New Variant[34];
    v[00] := "Греча"; v[10] := 10; v[20] := 313.12;
    v[01] := "Молоко"; v[11] := 20; v[21] := 301.53;
    v[02] := "Сахар"; v[12] := 30; v[22] := 254.13;
    v[03] := "Хлеб"; v[13] := 40; v[23] := 404.11;
    //Массив, передаваемый во втором пакете
    v1 := 
New Variant[3, 4];
    v1[0, 0] := 
"Кефир"; v1[1, 0] := 10; v1[2, 0] := 113.12;
    v1[0, 1] := 
"Сок"; v1[1, 1] := 20; v1[2, 1] := 101.53;
    v1[0, 2] := 
"Чай"; v1[1, 2] := 30.45; v1[2, 2] := 154.13;
    v1[0, 3] := 
"Кофе"; v1[1, 3] := 40; v1[2, 3] := "A";
    ExcelConsumer := New DtExcelConsumer.Create;
    ExcelConsumer.File := "d:\Data.xls";
    ExcelConsumer.HasHeader := True;
    ExcelConsumer.DriverVersion := "Excel 8.0";
    ExcelConsumer.Table := "Лист1";
    Fields := ExcelConsumer.Fields;
    Field := Fields.Add;
    Field.DataType := DbDataType.String;
    Field.Name := "Наименование";
    Field := Fields.Add;
    Field.DataType := DbDataType.Integer;
    Field.Name := "Идентификатор";
    Field := Fields.Add;
    Field.DataType := DbDataType.Float;
    Field.Name := "Значение";
    ExcelConsumer.Open;
    Pack := New DtBulkPacket.Create;
    Pack.FailPolicy := DatasetFailPolicy.Rollback;
    //Первый пакет
    Pack.Data := v;
    Pack.StopLimit := 8;
    ExcelConsumer.PutBulk(Pack);
    If Not Pack.Successful Then
        Debug.WriteLine("Ошибка при экспорте пакета");
        Debug.WriteLine("Не экспортировано записей: " + Pack.FailedRows.ToString);
        For i := v.GetLowerBound(1To v.GetUpperBound(1Do
        If Pack.Failed(i) Then
            Debug.WriteLine(Pack.ErrorMessage(i));
        End If;
        End For;
    Else
        Debug.WriteLine("Экспорт пакета завершен удачно");
    End If;
    //Второй пакет
    Pack.Data := v1;
    Pack.StopLimit := 8;
    ExcelConsumer.PutBulk(Pack);
    If Not Pack.Successful Then
        Debug.WriteLine("Ошибка при экспорте пакета");
        Debug.WriteLine("Не экспортировано записей: " + Pack.FailedRows.ToString);
        For i := v1.GetLowerBound(1To v1.GetUpperBound(1Do
        If Pack.Failed(i) Then
            Debug.WriteLine(Pack.ErrorMessage(i));
        End If;
        End For;
    Else
        Debug.WriteLine("Экспорт пакета завершен удачно");
    End If;
    ExcelConsumer.Close;
End Sub Main;

После выполнения примера будет создан новый приемник данных, осуществляющий экспорт данных в файл Excel. В файл поочередно будут записаны значения двух массивов. Информация о результатах экспорта будет выведена в консоль среды разработки. Для не экспортированных по какой либо причине записей в консоль будет выведена информация об ошибке.

Пример Fore.NET

Для выполнения примера предполагается наличие в корневом каталоге диска С файла "Data.xls".

Для выполнения примера добавьте ссылки на системные сборки Dt, Dal, Db.

Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Db;
...
Sub Main(Params: StartParams);
Var
    ExcelConsumer: IDtExcelConsumer;
    Fields: IDtFieldDefinitions;
    Field: IDtFieldDefinition;
    v, v1: Array;
    Pack: IDtBulkPacket;
    i: integer;
Begin
    //Массив, передаваемый в первом пакете
    v := New Object[3, 4];
    v[0, 0] := 
"Греча"; v[1, 0] := 10; v[2, 0] := 313.12;
    v[0, 1] := 
"Молоко"; v[1, 1] := 20; v[2, 1] := 301.53;
    v[0, 2] := 
"Сахар"; v[1, 2] := 30; v[2, 2] := 254.13;
    v[0, 3] := 
"Хлеб"; v[1, 3] := 40; v[2, 3] := 404.11;
    //Массив, передаваемый во втором пакете
    v1 := New Object[34];
    v1[00] := "Кефир"; v1[10] := 10; v1[20] := 113.12;
    v1[01] := "Сок"; v1[11] := 20; v1[21] := 101.53;
    v1[02] := "Чай"; v1[12] := 30.45; v1[22] := 154.13;
    v1[03] := "Кофе"; v1[13] := 40; v1[23] := "A";
    ExcelConsumer := New DtExcelConsumer.Create();
    ExcelConsumer.File := "d:\Data.xls";
    ExcelConsumer.HasHeader := True;
    ExcelConsumer.DriverVersion := "Excel 8.0";
    ExcelConsumer.Table := "Лист1";
    Fields := ExcelConsumer.Fields;
    Field := Fields.Add();
    Field.DataType := DbDataType.ddtString;
    Field.Name := "Наименование";
    Field := Fields.Add();
    Field.DataType := DbDataType.ddtInteger;
    Field.Name := "Идентификатор";
    Field := Fields.Add();
    Field.DataType := DbDataType.ddtFloat;
    Field.Name := "Значение";
    ExcelConsumer.Open();
    Pack := New DtBulkPacket.Create();
    Pack.FailPolicy := DatasetFailPolicy.dfpRollback;
    //Первый пакет
    Pack.Data := v;
    Pack.StopLimit := 8;
    ExcelConsumer.PutBulk(Pack);
    If Not Pack.Successful Then
        System.Diagnostics.Debug.WriteLine("Ошибка при экспорте пакета");
        System.Diagnostics.Debug.WriteLine("Не экспортировано записей: " + Pack.FailedRows.ToString());
        For i := v.GetLowerBound(1To v.GetUpperBound(1Do
        If Pack.Failed[i] Then
            System.Diagnostics.Debug.WriteLine(Pack.ErrorMessage[i]);
        End If;
        End For;
    Else
        System.Diagnostics.Debug.WriteLine("Экспорт пакета завершен удачно");
    End If;
    //Второй пакет
    Pack.Data := v1;
    Pack.StopLimit := 8;
    ExcelConsumer.PutBulk(Pack);
    If Not Pack.Successful Then
        System.Diagnostics.Debug.WriteLine("Ошибка при экспорте пакета");
        System.Diagnostics.Debug.WriteLine("Не экспортировано записей: " + Pack.FailedRows.ToString());
        For i := v1.GetLowerBound(1To v1.GetUpperBound(1Do
        If Pack.Failed[i] Then
            System.Diagnostics.Debug.WriteLine(Pack.ErrorMessage[i]);
        End If;
        End For;
    Else
        System.Diagnostics.Debug.WriteLine("Экспорт пакета завершен удачно");
    End If;
    ExcelConsumer.Close();
    End Sub;

После выполнения примера будет создан новый приемник данных, осуществляющий экспорт данных в файл Excel. В файл поочередно будут записаны значения двух массивов. Информация о результатах экспорта будет выведена в консоль среды разработки. Для не экспортированных по какой либо причине записей в консоль будет выведена информация об ошибке.

См. также:

IDtBulkPacket