Как я устанавливаю текстовое поле на мультилинию в SSRS?

Проблема с Format-cmdlets

Проблема здесь заключается в использовании вами FT, который является псевдонимом для Format-Table. Эти командлеты Format- предназначены только для вывода на консоль / экран . Есть много вещей, которые вы можете сделать, чтобы настроить этот вывод, но в каждом случае PowerShell необходимо массировать данные, чтобы это было возможно. Это включает разбиение на переданные объекты на группы разных объектов ...

Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData

Вышеупомянутые типы данных были извлечены из запуска этого кода.

Get-ChildItem c:\temp | Format-Table | Get-Member

Таким образом, у вас больше нет объектов System.IO.FileInfo и System.IO.DirectoryInfo, которые вы обычно получали из Get-ChildItem

. Другая большая проблема связана с природой Format-cmdlets усеченные данные, такие как массивы с большим количеством элементов или длинными строками, чтобы сделать так, чтобы они соответствовали размеру экрана. В случае массивов это происходит из-за переменной предпочтения $FormatEnumerationLimit , которая обычно по умолчанию равна 4.

Ten Numbers                                                                                                                                                  
-----------                                                                                                                                                  
{1, 2, 3, 4...}  

Эти и другие ограничения могут быть смягчены с переключателями команд, такими как -AutoSize и -HideTableHeaders, out-string -width и т. д. Это не имеет значения, потому что ...


Решение

Хорошая новость - это решение очень просто. Прекратите использовать их для чего-либо, кроме консольного вывода. Используя мой предыдущий пример:

  • Сохранение результатов в переменной ?: $result = Get-ChildItem C:\temp
  • Экспорт данных: Get-ChildItem C:\temp | Export-CSV $path -NoTypeInformation. Другие командлеты Export- могут быть предпочтительны здесь, например Export-CLIXml для сложных объектов, если вы хотите их хранить для использования в другом месте. Если вы просто ищете что-то красивое для включения в свой вывод, тогда рассмотрите ConvertTo-HTML.
  • Извлечение отдельных свойств ?: Просто используйте Select-Object. $result | Select prop1, prop2. Вы также можете расширить свой выбор свойств, чтобы просто получить строки или строковый массив с помощью -ExpandProperty: $result | Select -ExpandProperty prop1
  • Выполнение встроенных вычислений с указанными свойствами ?: Использовать рассчитанное выражение так же, как вы должны использовать командлеты Format-Cdlets. $result | Select prop1, @{Name="prop2";Expression={$_.prop2 * 3}

Потенциально допустимое использование

Некоторые предпочитают вывод для использования в электронных письмах и для записи статистики. Хотя он является неотъемлемой частью хранения данных в более удобном для использования формате для последующего использования. Однако, если вам действительно нужны эти данные, имейте в виду, что вы не работаете с объектом, который изначально был у вас.

Итак, если вам нужны ваши данные в формате таблицы, но они сохранены в виде строки, рассмотрите Out-String

$body = Get-ChildItem c:\temp | Format-Table | Out-String

, но помните, что Format-Table будет воспроизводить с выходом объекта в порядке чтобы он отображался на экране (усеченные свойства массива и длинные строки). На самом деле .. если вы хотите, чтобы это было красиво и отформатировано, вы должны просто использовать ConvertTo-HTML.

Точка, вам почти никогда не нужно сохранять данные из Format-Table. Существует почти всегда лучший способ.

17
задан ɢʀᴜɴᴛ 19 July 2017 в 17:04
поделиться

4 ответа

Измените текстовое поле отчета к:

= Fields!Addr1.Value + VbCrLf + 
  Fields!Addr2.Value + VbCrLf + 
  Fields!Addr3.Value
22
ответ дан 30 November 2019 в 11:45
поделиться

Я полагаю, что необходимо установить свойство CanGrow на верный на Текстовом поле. См. http://msdn.microsoft.com/en-us/library/ms159116 (SQL.90) .aspx для некоторых деталей.

1
ответ дан 30 November 2019 в 11:45
поделиться

разрыв ссылки сделать это

chr (10)

1
ответ дан 30 November 2019 в 11:45
поделиться

У меня возникла дополнительная проблема после добавления chr(10) в базу данных.

В поле (внутри отчета) добавьте:

=REPLACE(Fields!Addr1.Value, CHR(10), vbCrLf)
5
ответ дан 30 November 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: