Squeak.ru - шаблоны программирования

Как отображать большие объемы данных в текстовом поле RDLC

У меня есть отчет rdlc, в котором отображается расшифрованная информация, полученная из одного текстового поля в базе данных Microsoft SQL 2008. Отчет прост тем, что состоит из короткого заголовка и основной части, содержащей одно текстовое поле. Проблема, с которой мы сталкиваемся, заключается в том, что некоторые данные отчета обрезаются. Нет сообщения об ошибке, просто обрезано. После некоторого тестирования мы определили, что текстовое поле обрезает около 32 000 символов. После этого открытия я провел небольшое исследование и единственное, что мне показалось полезным, это ссылка на msdn social.msdn Некоторые из расшифровок, с которыми мы сталкиваемся, содержат 500 000 символов, и у нас нет возможности узнать, не увеличится ли их количество. . Есть ли способ обойти ограничение в 32 000 символов для текстового поля отчета?


Ответы:


1

Решение, которое я придумал, состояло в том, чтобы написать некоторый T-SQL, чтобы разбить большой блок текста на более мелкие части, а затем вернуть таблицу, содержащую строку для каждого блока текста из 30 000 символов. Затем в отчете поместите текстовое поле в список. Ниже приведен SQL

declare @transcriptionBody TABLE 
(
    SegmentNumber int identity(1,1),
    BodyPart nvarchar(max)
)
declare 
    @bodyPart varchar(max),
    @body nvarchar(max),
    @indexToLastNewLineInBodyPart int,
    @lenOfBody int,
    @MAX_CHARACTERS int,
    @numberOfCharactersLeftInString int,
    @position int

set @MAX_CHARACTERS = 30000
set @indexToLastNewLineInBodyPart = 0
set @numberOfCharactersLeftInString = 0
set @position = 0

/*
 *  Get the long string of characters from your database. In this example the 
 *  [Body] field is a text field.
*/
select @body = Body from [Transcription] with(nolock) where Id = @TranscriptionId
set @lenOfBody = len(@body)

/*
 *  Loop through the @body variable chopping up the string into managable chuncks
 *  and inserting those chuncks into a table variable called @transcriptionBody.
 *  The loop exists when the 
*/
while (@position < @lenOfBody)
begin

    /*
     *  If the transcription body is less than 30,000 then insert it into
     *  our table variable and return.
    */
    if (@lenOfBody <= @MAX_CHARACTERS and @position = 0)
    begin
        insert into @transcriptionBody(BodyPart) values(@body)
        set @position = @lenOfBody
    end

    /*
     *  Otherwise we need do the following
     *  1.  Get the number of chars in the string starting from the input start index.
     *  2.  If the number of chars in the string is > than the max allowable chars then
     *      substring off the first 30,000 chars into a body part.
     *      
     *      2a. Now have a string consisting of 30,000 chars but you have no idea where it
     *          cut off (it could be in the middle of a word). So you now need to get the 
     *          index of the last newline and re-break the string on that.Then insert it
     *          into the table variable and set the position.
     *
     *  3.  If the number of chars in the string IS NOT > than the max allowable chars
     *      then substring off the remaining chars into a body part and insert it into our
     *      table variable
    */
    else
    begin
        -- 1.
        select @numberOfCharactersLeftInString = (@position - @lenOfBody) * -1

        -- 2.
        if (@numberOfCharactersLeftInString > @MAX_CHARACTERS)
        begin
            select @bodyPart = substring(@body, @position, @MAX_CHARACTERS)

            -- 2a.
            select @indexToLastNewLineInBodyPart = Len(@bodyPart) - charindex(char(13)+char(10),reverse(@bodyPart))
            if (@indexToLastNewLineInBodyPart > 0)
            begin
                select @bodyPart = substring(@bodyPart,@position,@indexToLastNewLineInBodyPart)
                insert into @transcriptionBody(BodyPart) values(@bodyPart)
                select @position = @position + len(@bodyPart)
            end     
        end
        else
        begin
            select @bodyPart = substring(@body, @position, @numberOfCharactersLeftInString)
            insert into @transcriptionBody(BodyPart) values(@bodyPart)
            select @position = @position + len(@bodyPart)
        end 
    end
end
select * from @transcriptionBody order by SegmentNumber
23.04.2011
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...