標籤:
本文轉載自:http://blog.sina.com.cn/s/blog_552ca1400100y6dd.html
先來個功能:
大家都知道VS2005和VS2008軟體本身是包含水晶報表外掛程式的,而新版本的VS2010去掉了SAP水晶報表的外掛程式,想要在VS2010中使用水晶報表首先要下載SAP的外掛程式CRforVS_13_0.exe,我這下載的是13版本的。
下載完成後安裝,現在就可以在VS2010裡面使用了,哈哈。
1、準備工作,條碼實現
具體如何?條碼,這裡不再贅述,詳細請參考:http://www.cnblogs.com/qidian10/archive/2011/07/16/2108144.html
我這裡準備好產生圖片的地址:http://localhost:5950/CodeBar.aspx?code={0}
2、在VS2010中建立一個水晶報表
檔案-建立-項目-CrystalRepost應用程式
你可根據嚮導自己添加必要的資料來源等資訊,或者建立空白的報表,後面再添加一樣的。
我這裡建立的水晶報表名稱為:FLCodeBar.rpt
報表資料庫欄位配置中,添加一個表,用到簡單的5個測試欄位(就一句sql) select top 10 SMSITE,SMITNO,SMALSU,SMPUPR,SMREMK from PSMINF
3、在水晶報表中設定頁面格式,5cm*5cm
條碼標籤的大小是5cm*5cm的,所以首先設定頁面:右鍵報表空白地區--->設定---->頁面
4、拖入顯示欄位,從節點專家中隱藏報表頭、頁首、報表尾部、頁尾,只保留詳細資料
從資料庫欄位中拖入需要顯示到標籤中的欄位,排版
5、水晶報表中顯示圖片,條碼圖片
首先右鍵報表空白地區--->插入---->圖片(先找一個原生圖片)
調整圖片的大小為合適的大小
由於我們的條碼是動態,所以我們這裡還要給圖片動態路徑
右鍵圖片--->設定對象格式--->圖片標籤--->單擊最下面,圖形位置右側的按鈕,彈出公式工作室
我們在右下角的編輯框中輸入如下內容"http://localhost:5950/CodeBar.aspx?code="&{PSMINF.SMITNO}
這個地址就是我們第一步實現產生條碼圖的地址,最後的PSMINF.SMITNO的參數代表綁定資料庫的那個欄位。
還有一個不得不提的是,這裡的圖片路徑不能寫成死的,因為發布到IIS後,網域名稱localhost:5950肯定會變的,所以這裡需要用參數來代替(藍色框),然後參數由調用程式提供。
如何建立參數,見下面。
6、水晶報表中建立參數,供程式調用
在欄位總管中,郵件參數欄位,建立一個靜態參數,如,然後我們才能在第5步驟中,成功儲存圖片路徑
7、萬事具備,只欠東風在Web中使用我們的水晶報表
我們需要動態綁定報表的資料來源。
建立一個web應用程式,將做好的資料報表rpt檔案拷貝到網站的合適目錄。
建立好web後,需要引用水晶報表的dll,如下:
我們在Default.aspx中拖入CrystalReportViewer控制項
並設定相關屬性,去掉不必顯示的東西。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@ Register assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"
AutoDataBind="true" HasCrystalLogo="False" HasSearchButton="False"
HasToggleGroupTreeButton="False" ToolPanelView="None"
HasToggleParameterPanelButton="False" />
</div>
</form>
</body>
</html>
複製代碼
8、在Web的Default.aspx頁面寫入調用方法
protected void Page_Load(object sender, EventArgs e)
{
CJ.CJ_DevelopHelper.SqlConn_Str = "server=localhost;uid=sa;pwd=ovenjackchain;database=plmass;";
CJ.CJ_DevelopHelper.SqlStr = "select top 10 SMSITE,SMITNO,SMALSU,SMPUPR,SMREMK from PSMINF";
DataTable dt = CJ.CJ_DevelopHelper.SQL_ReturnDateTable;//擷取資料來源
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("/FLCodeBar.rpt"));
rpt.SetDataSource(dt);
ParameterFields t = new ParameterFields();
AddParameter("PlmWebIp", "localhost:5950", t); //PlmWebIp是報表中的參數名字,即圖片的Domain,這可以靈活設定(暫時寫死)
CrystalReportViewer1.ParameterFieldInfo = t;//添加參數
CrystalReportViewer1.ReportSource = rpt;
}
//msdn給水晶報表添加參數的方法
private ParameterFields AddParameter(string paramName, string paramValue,ParameterFields paramFields)
{
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
ParameterValues paramValues = new ParameterValues();
paramField.ParameterFieldName = paramName;
paramDiscreteValue.Value = paramValue;
paramValues.Add(paramDiscreteValue);
paramField.CurrentValues = paramValues;
paramFields.Add(paramField);
return paramFields;
}
複製代碼
9、收工,回顧
案例中主要用到一下知識點:
1.VS2010整合水晶報表
2.水晶報表版面設定
3.水晶報表圖片設定
4.水晶報表圖片的動態url設定
5.水晶報表參數設定,和程式動態賦值等
6.水晶報表的動態資料源綁定
PS:條碼產生的程式已上傳至我的微雲->示範程式
(轉)VS2010結合水晶報表做條碼標籤列印功能