在 RDLC Report Dynamics NAV 中显示 BLOB 字段(包含文本)

Display BLOB Field (Containing Text) in RDLC Report Dynamics NAV

我想在 rdlc 报告中显示 table 记录 Link 中的字段注释。我如何将它包含在数据集中以循环进入 BLOB 字段以提取文本值?使用 NAV90

谢谢

笔记存储为二进制文本。 您需要使用 .NET 将值读出到字符串中。

从 .NET 方面您需要:

  • BinaryReader 来自 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.BinaryReader
  • 编码 来自'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Text.Encoding

至于将实际的 BLOB 读入字符串:

RecordLink.Note.CREATEINSTREAM(InStream);
BinaryReader := BinaryReader.BinaryReader(InStream,Encoding.UTF8,FALSE);
MESSAGE('Your note text is %1',BinaryReader.ReadString);

无需使用 DotNet 变量即可检索文本。

CommentStream : InStream;
CommentText : Text;

好:

tbl.CALCFIELDS(Comments);
tbl.Comments.CREATEINSTREAM(CommentStream);
CommentStream.READTEXT(CommentText);

在我的例子中,包括这样的文本编码参数不起作用。有一段时间,但停止工作。不一致的原因让我摸不着头脑,但删除文本编码参数修复了它。

不好:

tbl.CALCFIELDS(Comments);
tbl.Comments.CREATEINSTREAM(CommentStream, TEXTENCODING::UTF8);
CommentStream.READTEXT(CommentText);

B

igTextVar.ADDTEXT('Text which has lenghth grater than 1024...');

StringHelper: System.String.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' (DotNet Var)

DataItem.Column.SourceExpression = StringHelper.Copy(FORMAT(BigTextVar))

这是在不使用更多列的情况下将 BigText 传递到报表 RDLC 布局的技巧

我在 Dynamics NAV 2017 中试过,效果很好!