我在WPF应用程序中使用access(oledb)数据库,我正在开发RDLC报告。我有一些问题。
我有这个数据的文本数据类型IN20102029382818。这是16个字符。我想在1行中显示10个字符,在2行中显示6个字符,并在这些字符之间放置一些空格。我想在下面显示这些数据。
I N 2 0 1 0 2 0 2 9
3 8 2 8 1 8
在这里,我使用文本框在RDLC报告中显示这些数据。如果我能得到欲望结果,那么我可以使用任何东西来获得这个结果。我从访问数据库获得了这些数据,但我不知道有什么方法可以做这件事。
答案 0 :(得分:1)
这是使用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)