使用 Temp Blob 对象

已完成

二进制大型对象 (BLOB) 是一种复杂的数据类型。 本数据类型的变量不同于普通数值和字符串变量,因为 BLOB 具有可变长度。 BLOB 对象的大小上限为 2 GB。 您可以使用 BLOB 存储备忘录(文本)、图片(位图)或用户定义的类型。

通过分别创建输入和输出流,可以读取和写入 BLOB。 可使用 CreateInStream 方法 (BLOB) 和 CreateOutStream 方法 (BLOB) 读取和写入 BLOB。

为了优化性能,当您访问具有 BLOB 字段的记录时,BLOB 中的数据并不总是会读入内存。 您必须调用 CalcFields 方法(记录)才能将 BLOB 读入内存中并进行计算。 然后,您可以在 AL 代码中使用 BLOB 或在应用程序中显示它。

var

    CompanyInformation: Record \"Company Information\";

    InStr: InStream;

begin

    if(CompanyInformation.FindFirst()) then begin 

        CompanyInformation.CalcFields(CompanyInformation.Picture);

        CompanyInformation.Picture.CreateInStream(InStr);

    end;

end;

开发人员在编写代码来管理文件的导入和导出时,可以使用 Temp Blob codeunit (4100)。 本 codeunit 属于 ALAppExtensions 存储库

Temp Blob codeunit 中支持的方法包括:

  • CreateInStream - 创建 InStream 对象,从 BLOB 中读取数据。 您可以选择性地为此函数提供 Encoding 参数。

  • CreateOutStream - 创建 OutStream 对象,将数据写入 BLOB。 您可以选择性地为此函数提供 Encoding 参数。

  • Length - 返回 BLOB 中的字节数。

  • HasValue - 确定 BLOB 是否有值。

您可以使用 Temp Blob codeunit 将 InStream 对象和 OutStream 对象互相转换。