Rdl或RDLC,SSRS report,reportbuilder多行数据合并为一行,生成二维码

需求:将FNUMBER编号多行数据合并放在一个二维码字符

使用Join与LookupSet函数将多行数据,合为一行

LookupSet参考下面官方说明

分页报表中的 LookupSet 函数 - Microsoft Report Builder & Power BI Report Builder | Microsoft Learn

原数据集DataSet1

   

合并后字符

005 007 008 009 106 FA01

新建rdl或rdlc文件

自定义公式

=Join (LookUpSet (true,true,Fields!FNUMBER.Value, "DataSet1")," ")

录入自定义公式

预览效果

如果要换行效果,将公式改为

=Join (LookUpSet (true,true,Fields!FNUMBER.Value, "DataSet1"),Chr(10))

生成二维码

添加一个二维码数据集

保存文件名为qrCodePrint,关闭报表文件,用打开记事本qrCodePrint.rdl编辑(vs保存的扩展名为rdlc)

将字段类型改为<rd:TypeName>System.Byte[]</rd:TypeName>

保存,再用报表设计器打开,插入图片,生成二维码图片

引用SkiaSharp.QrCode包

添加生成二维码图片代码

var path="qrCodePrint.rdl";
var qrCode = new QrCode(qrtext, new Vector2Slim(256, 256), SKEncodedImageFormat.Png);
MemoryStream memoryStream = new MemoryStream();
qrCode.GenerateImage(memoryStream);
qrcode[0].QRCODE = memoryStream.ToArray();
report.DataSources.Add(new ReportDataSource("qrcode", qrcode));
byte[] pdf = RenderRdl(path,report);
return File(pdf, "application/pdf");

效果

20190427 功能:[修正版]修改ReportBuilder支持QRCode二维码 注: 1、DelphiZXIngQRCode.pas 为用到的二维码生成源码,来源https://github.com/foxitsoftware/DelphiZXingQRCode,版权由原作者所有 2、rbRCL106.bpl 为已经重新编译好的含可以生成QRCode二维码的bpl文件,也是目标文件 3、old文件夹里是旧源码备份 4、new文件夹里的pas文件为修改后的源码文件 实现步骤: 1、 需要修改RB源码文件,new文件夹里的pas文件为已经修改好的了,只要放到rb的source目录下替换掉旧文件则可: ppBarCode2DDrawCmd.pas ppSt2DBarC.pas ppTypes.pas 2、把DelphiZXIngQRCode.pas文件同时拷贝到rb的source目录下 3、使用delphi打开rb的source目录下的rbRCL106.dpk项目,然后编译,输出的rbRCL106.bpl文件为目标文件(一般输出到这个目录下Delphi6\Projects\Bpl) 4、把rbRCL106.bpl文件替换掉原安装rb时的同名文件则可,一般该文件放在windows\system32下,如果是发布给客户用的话,直接把该文件给客户则可 附: a、支持中文,具体可以在TppStMaxiCodeBarcode.GenerateBarcodeBitmap_QRCode这里设置QRCode.Encoding来支持具体的字符集。 QQ扫码支持中文,但微信目前却不支持。 b、现在二维码的大小是固定,信息容量不大,如果信息量过大就不好识别,61*61的话在100个字以内,89*89的话在250个字以内,129的话在500个字以内, 可以在TppStMaxiCodeBarcode.Create设置长宽实现。参考《QRCode_编码解码标准.pdf》第13页表格对照。 James 20190427 QQ:825818689
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神色自若

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值