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

时间:2022-09-24 23:04:10

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

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

字段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:

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

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

最后的预览效果:

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

拿出你的手机扫扫看吧。

[AX2012 R3]在SSRS报表中使用QR二维码的更多相关文章

  1. pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式

    利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: Datawindow的DataObject的单位必须为像素(Pixels). Datawindow ...

  2. 【转】Delphi+Halcon实战一:两行代码识别QR二维码

    Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...

  3. Google API快速生成QR二维码

    Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报 ...

  4. QR 二维码总结

    @(Java ThirdParty)[QR] QR 二维码总结 根据Wiki中的介绍,QR Code(Quick Response Code),二维条形码,由日志设计应用于汽车制造工业中.条形码中包含 ...

  5. C# vb .NET生成QR二维码

    二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.通过将某些数据生成二维码,就可以实现一码走天下.那么如何在C#,.Net平台代码里生成二维码呢?答案是使用SharpBarcode! S ...

  6. C# vb .NET识别读取QR二维码

    二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.那么如何在C#,.Net平台代码里读取二维码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的条形 ...

  7. 利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片

    利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片.代码如下 import java.awt.Color;import java.io.File;import java.util.H ...

  8. C# QR二维码DEMO

    QR二维码 二维码的一种 相关类库 ThoughtWorks.QRCode 第三方类库 DEMO功能 Encode 生成二维码图片 Encoding 编码 Correction Level 等级 Ve ...

  9. 如何通过github上传项目并在readme.md中展示图片二维码

    将本地项目上传至github   第一步:git init (创建仓库)   第二步:git add README.md (添加项目)git add *   第三步:git commit -m &qu ...

随机推荐

  1. CSS透明属性详解

    .transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; ...

  2. wpf中button的无边框实现

    设置button的样式为:Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}";即可

  3. 用c#开发微信 (7) 微渠道 - 推广渠道管理系统 2 业务逻辑实现

    我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 上次介绍了 ...

  4. 测试JS基本类型以及对象的引用

    自己敲的. 1 <script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js&qu ...

  5. 本学习笔记TCP&sol;IP传输协议

    一个.通过网络发送数据,大致能够分为面向有连接与面向无连接两种类型: 1.面向无连接型包含以太网. IP.UDP等协议. 2. 面向有连接 型包含ATM.帧中继.TCP等 协议. 通过一张图了解一下: ...

  6. BZOJ&period;3944&period;Sum&lpar;Min&lowbar;25筛&rpar;

    BZOJ 洛谷 不得不再次吐槽洛谷数据好水(连\(n=0,2^{31}-1\)都没有). \(Description\) 给定\(n\),分别求\[\sum_{i=1}^n\varphi(i),\qu ...

  7. tcp echo server libuv

    #include <stdio.h>#include <stdlib.h>#include <string.h>#include <uv.h> #def ...

  8. python测试开发django-15&period;查询结果转json&lpar;serializers&rpar;

    前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...

  9. maven 下载源码downloadsources

    mvn eclipse:eclipse -Ddownloadsources=true  -Ddownloadjavadocs=true

  10. Linux &&num;39&semi;XXXXXX&&num;39&semi; &quot&semi;is not in the sudoers file&period; This incident will be reported&quot&semi; 解决方法

    添加方法如下: 1.进入root模式su -  注意:su和-之间有空格输入当前用户的密码 2.添加写权限chmod u+w /etc/sudoers 3.将自己加入到sudoers中 gedit / ...