[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的二维码数据字段。
最后的预览效果:

拿出你的手机扫扫看吧。
[AX2012 R3]在SSRS报表中使用QR二维码的更多相关文章
- pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式
利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: Datawindow的DataObject的单位必须为像素(Pixels). Datawindow ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- Google API快速生成QR二维码
Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报 ...
- QR 二维码总结
@(Java ThirdParty)[QR] QR 二维码总结 根据Wiki中的介绍,QR Code(Quick Response Code),二维条形码,由日志设计应用于汽车制造工业中.条形码中包含 ...
- C# vb .NET生成QR二维码
二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.通过将某些数据生成二维码,就可以实现一码走天下.那么如何在C#,.Net平台代码里生成二维码呢?答案是使用SharpBarcode! S ...
- C# vb .NET识别读取QR二维码
二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.那么如何在C#,.Net平台代码里读取二维码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的条形 ...
- 利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片
利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片.代码如下 import java.awt.Color;import java.io.File;import java.util.H ...
- C# QR二维码DEMO
QR二维码 二维码的一种 相关类库 ThoughtWorks.QRCode 第三方类库 DEMO功能 Encode 生成二维码图片 Encoding 编码 Correction Level 等级 Ve ...
- 如何通过github上传项目并在readme.md中展示图片二维码
将本地项目上传至github 第一步:git init (创建仓库) 第二步:git add README.md (添加项目)git add * 第三步:git commit -m &qu ...
随机推荐
- Nginx提示502和504错误的解决方案
一.错误提示说明: Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止. Nginx 50 ...
- [转]Java中的回车换行符/n /r /t
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来.下面转一篇文章. 回车和换行 今天,我总算搞清楚"回车"(carriage r ...
- Mac上远程桌面连接Windows Server 2012 R2
在将一台服务器的操作系统由Windows Server 2012升级为Windows Server 2012 R2之后,在Mac电脑上用微软的远程桌面软件怎么也连不上服务器,错误信息如下: Remot ...
- JsCss笔记
1. &= 不应该在 Bool 型变量中使用. a &= b 对于Js来说是: a = a & b ; a 本来是 bool , &= 之后就变成了 Int. ...
- [ALM]一步一步搭建MS ALM环境 - 安装域服务器
描述: 搭建并配置域服务器,先安装操作系统,配置网络,安装组件,配置域帐号 步骤: 1,打开Hyper-V Manager,参考[Hyper-V]使用操作系统模板创建新的虚拟机,先完成操作系统的安装, ...
- Getting the first day in a week with T-SQL
A colleague just asked me if I knew a way to get the first day in a week in SQL Server. While I'm su ...
- js 合并数组
<script type="text/javascript"> var a = '[{"name":"aaa& ...
- AJAX跨域调用相关知识-CORS和JSONP(引)
AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...
- Ajax初步理解
最近在项目中经常会使用Ajax技术,用法上倒是熟练了,但是只知其然,不知其所以然,抽时间读了读JavaScript高级程序设计中关于Ajax的介绍有了些初步的理解,在此总结一下. 什么是Ajax Aj ...
- paip.注册java程序为LINUX系统服务的总结。
paip.注册java程序为LINUX系统服务的总结. ////////////////实现开机启动. 标准方法是按照/etc/init.d/下面的文件,修改一下:然后chkconfig xxx on ...