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二维码的更多相关文章

  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. MariaDB5.5(mysql)的partitioning设置 for Zabbix3.0

    用zabbix的同学都知道,一台服务器监视几百几千台服务器,一个服务器几十个item,长年下来数据量是很惊人的. 而zabbix自带的housekeeping功能,默认状态下的删除速度完全跟不上数据增 ...

  2. SQLServer DBA 三十问(加强版)

    距离最初发布SQLServer DBA 三十问 已有一年多了,大家对其中的某些问题讨论比较激烈,要回答出来这些问题需要比较扎实的SQLServer 基础和一定的实际操作经验,如果你试着去回答其中的问题 ...

  3. Mac下安装zshell

    Mac 下安装zshell 什么是shell 大多数命令行用户接触最多的是Bash,因为Bash是各个版本操作系统(Linux&Mac)的默认shell. 查看当前使用的shell $ ech ...

  4. [JAVA] java_实例 获得系统字体

    这个代码可以帮助理解java是如何获取系统字体并设置文字字体: import java.awt.*; import java.awt.event.*; import javax.swing.JComb ...

  5. 如何在ASP.NET中用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  6. atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux

    atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany  java linux 系统服务不同于普通视窗系统应用程式.不可能简简单单地通过运行一个EXE就启动视窗系 ...

  7. paip.自定义java 泛型类与泛型方法的实现总结

    paip.自定义java 泛型类与泛型方法的实现总结 ============泛型方法     public static <atiType,retType> retType reduce ...

  8. NGUI ScrollView 循环 Item 实现性能优化

    今天来说说一直都让我在项目中头疼的其中一个问题,NGUI 的scrollView 列表性能问题,实现循环使用item减少性能上的开销. 希望能够给其他同学们使用和提供一个我个人的思路,这个写的不是太完 ...

  9. JQ中mouseover和mouseenter的区别

    我最近也在学习JQuery,所以最近对JQ中的一些小问题进行总结,方便学习. 在对于刚开始学习JQ的初学者来说,mouseover事件和mouseenter事件总是傻傻分不清楚,毕竟刚开始学习的时候, ...

  10. 为PHP函数执行设置超时

    如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现. 代码如下: declare(ticks = 1); function a(){ sleep(10); echo &qu ...