zoukankan      html  css  js  c++  java
  • [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的二维码数据字段。

    最后的预览效果:

    拿出你的手机扫扫看吧。

  • 相关阅读:
    POJ_2184_Cow_Exhibition_(动态规划,背包)
    POJ_2392_Space_Elevator_(动态规划,背包)
    POJ_2914_Minimum_Cut_(Stoer_Wagner)
    POJ_3068_Shortest_pair_of_paths_(最小费用流)
    POJ_3666_Making_the_Grade_(动态规划)
    BZOJ_1565_[NOI2009]_植物大战僵尸_(Tarjan+最大流+最大权闭合图)
    POJ_2987_Firing_(最大流+最大权闭合图)
    BZOJ_1497_[NOI2006]_最大获利_(最大流+最大权闭合图)
    BZOJ_1798_&_Codevs_2216_[AHOI_2009]_行星序列_(线段树)
    Codevs_1690_开关灯_(线段树)
  • 原文地址:https://www.cnblogs.com/duanshuiliu/p/4356185.html
Copyright © 2011-2022 走看看