打印水晶报表的方法

打印水晶报表

开发工具与关键技术:VS2015,SQL2014
作者:郑伟基
撰写时间:2019年3月02号

下面我们使用水晶报表去打印我们需要的数据,首先要去排版一个我们需要的一个水晶报表的一个大概的一个样式,然而这里面的一些数据要和我们数据库里面的一些表要先对应,不然的话数据会出不来的,
以及打印出来的截图(1):
在这里插入图片描述
图(1)
在上面的截图上面看到我们需要排版所需要的一些字段,而这些字段要和数据里面的字段要一致,这样数据才能出来,写打印的表头,和放一个打印的时间,下面就放打印的字段,要把这些字段的间距给排一下。

   上面的排版排好了以后就要写控制器的代码了,首先查出所有要打印的数据,写一个查询的方法来查询要打印的数据,

下面的代码图,见图(2):
#region 水晶报表
public ActionResult MenuItemS(string MenuGiveDate, string MenuGiveDate1, int MenuBTypeID, int MenuSTypeID)
{
var listResult = from tbMenuGive in myModels.SYS_MenuGive
join tbMenuItem in myModels.BUS_MenuItem on tbMenuGive.MenuItemID equals tbMenuItem.MenuItemID
join tbMenuSType in myModels.BUS_MenuSType on tbMenuItem.MenuSTypeID equals tbMenuSType.MenuSTypeID
join tbMenuBType in myModels.BUS_MenuBType on tbMenuSType.MenuBTypeID equals tbMenuBType.MenuBTypeID
join tbUnit in myModels.BUS_Unit on tbMenuItem.UnitID equals tbUnit.UnitID
select new MenuItemVo
{
MenuGiveID = tbMenuGive.MenuGiveID,//酒菜赠送
MenuItemNum = tbMenuItem.MenuItemNum,//酒菜编号
MenuItemName = tbMenuItem.MenuItemName,//酒菜名称
Unit = tbUnit.Unit,//酒菜单位
MenuSTypeID = tbMenuSType.MenuSTypeID,//酒菜小类
MenuSTypeName = tbMenuSType.MenuSTypeName,//酒菜小类
MenuBTypeID = tbMenuBType.MenuBTypeID,//酒菜大类
MenuBTypeName = tbMenuBType.MenuBTypeName,//酒菜大类
Datetime = tbMenuGive.MenuGiveDate,//日期
MenuGiveDate1 = tbMenuGive.MenuGiveDate.ToString(),//时间
Price = tbMenuItem.Price,//标价
TimePrice = tbMenuGive.TimePrice,//时价
MenuGiveQ = tbMenuGive.MenuGiveQ,//数量
Money = tbMenuGive.Money,//金额
Reason = tbMenuGive.Reason,//原因
MenuGiveDate = tbMenuGive.MenuGiveDate.ToString(),//时间
};
if (MenuGiveDate != “” && MenuGiveDate1 != “”)
{
DateTime date = Convert.ToDateTime(MenuGiveDate1);
DateTime balanceDate = Convert.ToDateTime(MenuGiveDate);
listResult = listResult.Where(m => m.Datetime >= date && m.Datetime <= balanceDate);
}
if (MenuBTypeID > 0)
{
listResult = listResult.Where(m => m.MenuBTypeID == MenuBTypeID);
}
if (MenuSTypeID > 0)
{
listResult = listResult.Where(m => m.MenuSTypeID == MenuSTypeID);
}
//将查询出来的结果转化为DataTable的格式
DataTable dtResult = LINQToDataTable(listResult);
//1、实例化数据集
PrintReport.ReportDB dbReport = new PrintReport.ReportDB();
//2、将dtResult放入数据集中名为"tbAchievement"的表格中
dbReport.Tables[“tbMenuGive”].Merge(dtResult);
//3、实例化数据报表
PrintReport.MenuReport1 rp = new PrintReport.MenuReport1();
//4、获取报表的物理文件路径
string strRpPath = System.Web.HttpContext.Current.Server.MapPath("~/") + “Areas\ReportCenter\PrintReport\MenuReport1.rpt”;
//5、将报表加载到报表模板中
rp.Load(strRpPath);
//6、设置报表的数据源
rp.SetDataSource(dbReport);
//7、把报表转化为文件流输出
Stream dbStream = rp.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
//返回
return File(dbStream, “application/pdf”);
}
图(2)

  再写一个转换类型的一些代码,是打印要用到的转换数据的,见下面的代码图(3):

在这里插入图片描述
图(3)

写完了上面的控制器代码后要写页面的JS代码了,去调用控制器的查询方法,如下面的要声明四个变量,再去查询出所需要的数据,再拼接查询的条件,再给按钮写一个点击的方法来实现打印的效果,代码见下面的图(4)。
在这里插入图片描述
图(4)

全部的代码写完了以后就可以打印出我们想要的水晶报表的效果了。

猜你喜欢

转载自blog.csdn.net/qq_39827390/article/details/88915603
今日推荐