[AX2012 R3]在SSRS报表中使用QR二维码

AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始:

字段URL是要用于二维码的字符串,QrCode是container类型,保存最终生成的二维码图形二进制数据。

DP类:

复制代码
class TestQrCodeDp extends SRSReportDataProviderBase
{
    TestQrCodeTmp   qrCodeTmp;
}
[
    SRSReportDataSetAttribute(tableStr(TestQrCodeTmp))
]
public TestQrCodeTmp getQrCodeTmp()
{
    select qrCodeTmp;
    return qrCodeTmp;
}
public void processReport()
{
    container       imageContainer;
    str             url='http://www.cnblogs.com/duanshuiliu/';
    EFDocQRCode_BR  qrCode = new EFDocQRCode_BR();

    imageContainer = qrCode.generateQRCode(url);


    qrCodeTmp.clear();
    qrCodeTmp.URL=url;
    qrCodeTmp.QrCode=imageContainer;
    qrcodeTmp.insert();
}
复制代码

这里使用类EFDocQRCode_BR来生成二维码图片并保存在container中,从后缀名看应该是巴西地区的feature,图片默认为bmp格式。这个类是对.net的Microsoft.Dynamics.QRCode.Encoder类的封装,AOT的C#工程QrCode包含了完整的代码。

EFDocQRCode_BR内部调用的是Microsoft.Dynamics.QRCode.Encoder.GetTempFile(),它将二维码图片保存在临时文件后,在AX中使用BinData读取临时文件内容到container,如果你不想使用这种临时文件的方法,希望在内存中直接实现,可以如下直接使用.net的Encoder:

复制代码
public void processReport()
{
    Microsoft.Dynamics.QRCode.Encoder   qrCode=new Microsoft.Dynamics.QRCode.Encoder();
    System.Drawing.Bitmap bitmap;
    container       imageContainer;
    str             url='http://www.cnblogs.com/duanshuiliu/';
    System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

    bitmap=qrCode.Encode(url);
    bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat::get_Png());
    imageContainer=Binary::constructFromMemoryStream(memoryStream).getContainer();

    qrCodeTmp.clear();
    qrCodeTmp.URL=url;
    qrCodeTmp.QrCode=imageContainer;
    qrcodeTmp.insert();
}
复制代码

生成的二维码图片被编码为Png格式保存在container,最后插入到临时表中。

创建SSRS报表,使用这个RDP作为dataset,图片在precision design或者auto desgin上都可以使用,比如下面的auto design:

设置图片的source为Database,相应的MIME Type,expression则是dataset的二维码数据字段。

最后的预览效果:


转自: http://www.cnblogs.com/duanshuiliu/p/4356185.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值