IDtBulkPacket.Data

Синтаксис

Data: Array;

Описание

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

Пример

Для выполнения примера предполагается наличие в корневом каталоге диска С файла 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[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.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. В файл поочередно будут записаны значения двух массивов. Информация о результатах экспорта будет выведена в консоль среды разработки. Для не экспортированных по какой либо причине записей в консоль будет выведена информация об ошибке.

См. также:

IDtBulkPacket