C#实现水晶报表绑定数据并实现打印3-二维码条形码

news/2024/7/24 13:18:27 标签: c#, 水晶报表

C#实现水晶报表绑定数据并实现打印3-二维码条形码

水晶报表中显示条形码/二维码
1、将数字或字符转换为条形码或二维码
2、将条形码或二维码在报表中展示

操作二维码的dll
zxing.net
参考:https://blog.csdn.net/xiaoyong_net/article/details/51242190

插入图片
参考:https://www.cnblogs.com/babyt/archive/2009/05/26/1490368.html

主要是如何读取本地图片显示在报表中。
如果是CR XI及以上版本,可以用更简便的方法,参考:水晶报表图片动态加载的另一种简单方案
本文的方法是:水晶报表中如何动态加载图片(图片文件版本及数据库版本) 中的图片文件版本。
本文适用于VS2003及VS2005自带版本的水晶报表,当然同样适用于CR XI及以上版本,就是烦了点。
本文使用VS2005及自带版本的水晶报表

在这里,我把命题重新提炼一下:
已经有一个完整的报表,现在报表需要加载一个本地磁盘图片做为logo。报表中的Logo随着本地图片的变化自动变化。一般我们通过插入一个pictureobject来插入磁盘图片,但是插入后,图片就成为报表的一份,达不到变化的目的
1、首先我们已经有一个单表的完整的水晶报表应用
2、为了能挂接我们的本地图片,在dataset里新建一个表mylogo。里面放上两个字段,字段类型为System.Byte[]或System.SByte[]
注意,默认类型里只有System.Bytet 和System.SByte,要自己输入的。
这个mylogo就是一个中介,我们把本地图片读到这个表里,水晶报表从这个表里读到图片显示。
3、在现有报表里加入一个子报表,数据源就是这个mylogo 把两个字段拖到子报表上。
4、代码是这样的

//设置数据源信息
         DataSet1 ds1 = new DataSet1();
         OleDbDataAdapter da = new OleDbDataAdapter();
         String connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath ("~/app_data/test.mdb")+";";
         OleDbConnection cn = new OleDbConnection(connstr);
         //获取记录集,注意,最终获取的记录集需要与xsd的结构一致!
         da = new OleDbDataAdapter("SELECT EmployeeId1 as EmployeeId,EmployeeName1 as EmployeeName From Employee1", cn);
         da.Fill(ds1, "Employee");

         //把本地图片先写入到数据集
         //将图片读到stream,并转换为byte[]
         //图片1
         FileStream fs1 = new FileStream(@"c:\1.bmp", FileMode.Open, FileAccess.Read);
         BinaryReader br1 = new BinaryReader(fs1);
         byte[] bt1 = br1.ReadBytes((int)fs1.Length);
         //图片2
         FileStream fs2 = new FileStream(@"c:\a2.jpg", FileMode.Open, FileAccess.Read);
         BinaryReader br2 = new BinaryReader(fs2);
         byte[] bt2 = br2.ReadBytes((int)fs2.Length);

         fs1.Close();
         fs2.Close();
         //写入到ds1中(仅1行)
         ds1.myLogo.AddmyLogoRow(bt1, bt2);

         //以上为数据部分,与报表无关
         //-----------------------------------------------------------
         //以下为报表部分
         //使用报表对象加载报表

         string reportPath = Server.MapPath("~/app_data/crystalreport1.rpt");
         myReport.Load(reportPath);
         //绑定数据集,注意,一个报表用一个数据集。
         myReport.SetDataSource(ds1);
         CrystalReportViewer1.ReportSource = myReport;

http://www.niftyadmin.cn/n/1169967.html

相关文章

alpha冲刺总结

作业格式 课程名称:软件工程1916|W(福州大学)作业要求:项目Alpha冲刺(团队)团队名称: 那周余嘉熊掌将得队作业目标:alpha冲刺总结团队信息:队员学号队员姓名博客地址备注…

C#(Winform) 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

转载:https://blog.csdn.net/qq_37508511/article/details/82770349 1、在主线程中实例化此ActiveX控件 2、将创建此Active控件的线程设定为单线程。 Thread.ApartmentState 获取或设置此线程的单元状态。 thread new Thread(Mehtod); thread.SetApartmentState(S…

【Swift 4.0】iOS 11 UICollectionView 长按拖拽删除崩溃的问题

正文 功能 用 UICollectionView 实现两个 cell 之间的位置交互或者拖拽某个位置删除 问题 iOS 11 以上拖拽删除会崩溃,在 iOS 9、10 都没有问题 错误 017-10-11 11:38:02.6920040800 MOCR[2585:1047221] *** Terminating app due to uncaught exception NSInternalI…

Codeforces 1140F Extending Set of Points (线段树分治+并查集)

这题有以下几个步骤 1.离线处理出每个点的作用范围 2.根据线段树得出作用范围 3.根据分治把每个范围内的点记录和处理 #include<bits/stdc.h> using namespace std; typedef long long ll; const int maxn 3e5 50; typedef pair<int, int> pii; #define bug cout…

poj 2135 (基础费用流)

题意&#xff1a;从1到n再到1&#xff0c;每条边只能走一次&#xff0c;求最短距离。 建图&#xff1a;每条边只能走一次就是流量是1&#xff0c;添加源点与1相连&#xff0c;容量为2,费用为0&#xff0c;n与汇点相连容量为2,费用为0&#xff1b; 求增广路用SPFA最短路求&#…

C#实现水晶报表绑定数据并实现打印4-条形码

看了上几篇文章 加上自己的调试可以打出来了 大概记录下流程 1、在dataset中加入列code 类型System.Byte[] &#xff0c;并将此列拉至水晶报表某位置 2、安装BarcodeX并添加 barcodex.ocx 引用 3、新建 from 并拉一个 barcode过来 4、获取数据并赋值 barcodex.Caption “12345…

[USACO2004] Open提交作业(区间DP)

Description 贝西在哞哞大学选修了C门课&#xff0c;她要把这些课的作业交给老师&#xff0c;然后去车站和同学们一 起回家。老师们在办公室里&#xff0c;办公室要等他们下课后才开&#xff0c;第i门课的办公室在Ti时刻后开放。 所有的办公室都在一条走廊上&#xff0c;这条走…

JS中的BOM与DOM

BOM&#xff08;Broswer Object Model&#xff09; 定时器: 执行一次的定时器 var taskidwindow.setTimeout(function,ms); 关闭:window.clearTimeout(taskid); 执行无数次的定时器 var taskidwindow.setInteval(function,ms); 关闭:window.clearInteval(function,ms); 框窗…