2015-10-23 4 views
-3

Я использую базу данных доступа (oledb) в приложении WPF, и я разрабатываю отчет RDLC. И у меня есть некоторые проблемы.rdlc report in space

Я имею в виду тип данных для этих данных IN20102029382818. Это 16 символов. И я хотел бы показать 10 символов в 1 строке, 6 символах в 2 строках и поставить пробел между этими символами. Я хотел бы показать эти данные, как показано ниже.

I N 2 0 1 0 2 0 2 9 
3 8 2 8 1 8 

Здесь я использую текстовое поле для отображения этих данных в отчете RDLC. Если я смогу получить результат желания, я могу использовать что-либо для этого результата. У меня эти данные из базы данных доступа, но я не знаю ни о каком методе для этого.

ответ

0

Этого решения с использованием RDLC Expression, что вы можете использовать только со строками из 16 символов:

=Mid(Left(Fields!YourField.Value, 10), 1, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 2, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 3, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 4, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 5, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 6, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 7, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 8, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 9, 1) + 
Space(1) + 
Mid(Left(Fields!YourField.Value, 10), 10, 1) + 
System.Environment.NewLine + 
Mid(Right(Fields!YourField.Value, 6), 1, 1) + 
Space(1) + 
Mid(Right(Fields!YourField.Value, 6), 2, 1) + 
Space(1) + 
Mid(Right(Fields!YourField.Value, 6), 3, 1) + 
Space(1) + 
Mid(Right(Fields!YourField.Value, 6), 4, 1) + 
Space(1) + 
Mid(Right(Fields!YourField.Value, 6), 5, 1) + 
Space(1) + 
Mid(Right(Fields!YourField.Value, 6), 6, 1) 

Это является чистым решением с использованием VB.NET; вы можете перевести его в C# и использовать его на своем ReportDataSource перед передачей данных на ReportViewer.

Dim strYourString As String = "IN20102029382818" 

Dim strYourStringFormatted As String = String.Join(Space(1), Array.ConvertAll(Strings.Left(strYourString, 10).ToCharArray, Function(strInput) strInput.ToString)) _ 
    & System.Environment.NewLine _ 
    & String.Join(Space(1), Array.ConvertAll(Strings.Right(strYourString, 6).ToCharArray, Function(strInput) strInput.ToString)) 

MsgBox(strYourStringFormatted) 

Вы также можете использовать вариант второго решения для любых других строк; то есть:

Dim strYourString As String = "Test1 Test2 Test3" 

Dim strYourStringFormatted As String = Strings.Replace(_ 
    String.Join(Space(1), Array.ConvertAll(strYourString.ToCharArray, Function(strInput) strInput.ToString)), _ 
    Space(3), System.Environment.NewLine) 

MsgBox(strYourStringFormatted) 
+0

спасибо, чувак ... Я сделал это с помощью этих методов. – user3360610

+0

У меня есть еще один вопрос, пожалуйста, помогите мне в этом. Теперь у меня есть одна колонка FIRSTNAME. Точно так же я хотел бы напечатать данные первого имени в файле отчета. Я пытаюсь это сделать, но я получил ошибку ниже: - \t Выражение Value для textrun 'FirstName.Paragraphs [0] .TextRuns [0]' содержит ошибку: [BC30201] Ожидаемое выражение. \t Я думаю, что я получил эту ошибку, потому что символ первого имени не исправлен. – user3360610

+0

Я знаю об этом методе bro. – user3360610