公式字段
转日期文本
totext ({IC_AvailabilityContract.Thedatethecontractissigned},"yyyy年MM月dd日")
产品图片超链接,尚未研究出水晶报表里直接显示图片,给个图片超链接算折中方案。
if Trim({ProductView.Name})<>"" then "<a href='http://www.hzlanghong.com/upload/"+{ProductView.Picurl}+"' target='_blank'>"+{ProductView.Name}+"</a>" else {ProductView.Name};
字段分割显示
{ProductView.AttributeCatogory}内容为“1;2;3……”或“1|2|3|4”时,取固定元素内容用
if Trim({ProductView.AttributeCatogory})<>"" AND Count(Split({ProductView.AttributeCatogory},";"))>=1 then Split({ProductView.AttributeCatogory},";")[1] else ""
报表自定义函数
用作报表字段点击转向对应产品网页用,参数为自增长主键
Function (numberVar v1) "<a href='http://www.hzlanghong.com/product_detailed.aspx?id="+ Replace (ToText(v1),".00" ,"" )+"' target='_blank'>"+ Replace (ToText(v1),".00" ,"" )+"</a>"
其实这是个个人备忘,用到crystal的童鞋可以看看。误闯进来的难免云里雾里,所以贴上截图
顺便演示下crystal的应用:一个合同模板。
主从报表
顺手贴下绑定
<div> <CR:CrystalReportViewer ID="ItemChildOrder" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" ReportSourceID="CrystalReportSource1" ToolbarImagesFolderUrl="" ToolPanelWidth="200px" HasCrystalLogo="False" ToolPanelView="None" ReuseParameterValuesOnRefresh="True" Height="940px" Width="1210px" EnableParameterPrompt="False" /> <CR:CrystalReportSource ID="CrystalReportSource1" runat="server"> <%-- <Report FileName="Areas\Store\Views\CrystalReport\ItemChildOrderCrystalReport.rpt"> </Report>--%> </CR:CrystalReportSource> </div>
private IDataReader _tempreader; private IDataReader _tempreaderchild; private string fileurl = string.Empty; private void Page_Init(object sender, EventArgs e) { var crystalReportService = new CrystalReportService(); fileurl = Server.MapPath("Areas\\Store\\Views\\CrystalReport\\ItemChildOrderCrystalReport.rpt"); CrystalReportSource1.Report.FileName = fileurl; _tempreader = crystalReportService.ItemChildOrderCrystalReportT(fileurl, itemName, number, providerName, buyerUserName, createbegintime, createendtime, state); _tempreaderchild = crystalReportService.OrderItemCrystalReportT(); CrystalReportSource1.ReportDocument.SetDataSource(_tempreader); CrystalReportSource1.ReportDocument.Subreports[0].SetDataSource(_tempreaderchild); CrystalReportSource1.DataBind(); ItemChildOrder.ReportSource = CrystalReportSource1; ItemChildOrder.DataBind(); }
PS:报表绑定数据源不建议使用IDataReader,上面贴的老代码,没有能及时关闭数据链接。