web上水晶報表9的列印(3)12/24
web上水晶報表9的列印(3)12/24 web上水晶報表的列印著實讓我困擾了好長時間,一個多月前找的一種列印本頁的方法http://blog.csdn.net/daisylh/archive/2005/10/28/518561.aspx在實際需求中應用不大,而我的水晶報表10在使用時就有錯誤(可能與非正版有關吧@_@),只能望而興嘆
昨天在給客戶安裝時,USER提出了有一報表的設定需要為'中一刀'(A4的一半),今天測試轉入WORD/EXCEL都極不理想;看了長江支流周的文章,WEB列印要在VS.NET2005中實現,看來我的2003沒盼了
。。。。。。痛定思痛。。。
暫時研究出在區域網內的小做法(還不曉得在Internet上會怎樣
):1。設定紙張格式:[開始]->[設定]->[印表機和傳真]->在空白處點右建,選[伺服器內容]->即可建立紙張新格式
2。在系統固定資料表中建一printer欄位,用來輸入常用印表機名稱
3。列印按鈕
page_load事件:
Button2.Attributes.Add('onclick', 'javascript: document.Form1.TextBox1.value=window.showModalDialog('printer.aspx');return confirm('確定列印嗎?');')
click事件:
Dim rpt As ReportDocument = Session('report')
'rpt.PrintOptions.PrinterName = TextBox5.Text
'rpt.PrintToPrinter(1, True, 1, 1)
Dim pv() As String = Split(TextBox1.Text, ';')
Dim margins As CrystalDecisions.Shared.PageMargins
If pv(0) > pv(1) Then
If Not IsStartupScriptRegistered('Startup') Then
Page.RegisterStartupScript('Startup', '<script language=javascript>window.alert('列印頁數設定錯誤!@_@')</script>')
End If
Exit Sub
End If
' 取得 PageMargins 結構並設定
' 報表的邊界。
margins = rpt.PrintOptions.PageMargins
margins.leftMargin = pv(4)
margins.rightMargin = pv(5)
margins.topMargin = pv(6)
margins.bottomMargin = pv(7)
' 套用頁面邊界。
rpt.PrintOptions.ApplyPageMargins(margins)
' 選取印表機。
rpt.PrintOptions.PrinterName = pv(3)
' 列印報表。將 startPageN 及 endPageN
' 參數設定為 0 即可列印所有頁面。
Try
rpt.PrintToPrinter(pv(2), False, pv(0), pv(1))
Catch exp As LoadSaveReportException
If Not IsStartupScriptRegistered('Startup') Then
Page.RegisterStartupScript('Startup', '<script language=javascript>window.alert('開啟報表檔時發生錯誤!@_@')</script>')
End If
Catch exp As PrintException
If Not IsStartupScriptRegistered('Startup') Then
Page.RegisterStartupScript('Startup', '<script language=javascript>window.alert('列印時發生錯誤,請檢查印表機相關設定!@_@')</script>')
End If
Catch exp As Exception
If Not IsStartupScriptRegistered('Startup') Then
Page.RegisterStartupScript('Startup', '<script language=javascript>window.alert('錯誤來源:' & exp.Source & '!@_@')</script>')
End If
End Try
4。printer.aspx
function sendTo() { var a if (document.Form1.RadioButton1.checked==true) {a='0;0;';} else {a= document.Form1.TextBox1.value + ';' + document.Form1.TextBox2.value+';';} a=a+ document.Form1.TextBox3.value+';'+document.Form1.TextBox4.value+';'+document.Form1.TextBox5.value+';'+document.Form1.TextBox6.value+';'+document.Form1.TextBox7.value+';'+document.Form1.TextBox8.value; window.returnValue = a; window.close(); }
<table style='FONT-SIZE: 9pt; WIDTH: 512px; FONT-FAMILY: 新細明體; HEIGHT: 321px'>
<TR>
<TD style='FONT-WEIGHT: bold; HEIGHT: 31px'>印表機名稱</TD>
<TD style='HEIGHT: 31px' colSpan='2'><asp:textbox id='TextBox4' runat='server' Width='406px' Font-Names='新細明體' Font-Size='9pt'></asp:textbox></TD>
</TR>
<TR>
<TD style='FONT-WEIGHT: bold; HEIGHT: 153px' rowspan='4'>邊界設定</TD>
<TD style='WIDTH: 46px; HEIGHT: 27px'>上邊界</TD>
<TD style='HEIGHT: 27px'>
<asp:TextBox id='TextBox5' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox5,1,2)'>220</asp:TextBox></TD>
</TR>
<TR>
<TD style='WIDTH: 46px; HEIGHT: 22px'>下邊界</TD>
<TD style='HEIGHT: 22px'><asp:textbox id='TextBox6' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox6,1,2)'>220</asp:textbox></TD>
</TR>
<TR>
<TD style='WIDTH: 46px; HEIGHT: 19px'>左邊界</TD>
<TD style='FONT-SIZE: 9pt; FONT-FAMILY: 新細明體; HEIGHT: 19px'>
<asp:TextBox id='TextBox7' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox7,1,2)'>220</asp:TextBox></TD>
</TR>
<TR>
<TD style='WIDTH: 46px; HEIGHT: 7px'>右邊界</TD>
<TD style='HEIGHT: 7px'>
<asp:TextBox id='TextBox8' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox8,1,2)'>220</asp:TextBox></TD>
</TR>
<tr>
<td style='FONT-WEIGHT: bold; HEIGHT: 12px' rowspan='2'>列印頁數</td>
<td style='HEIGHT: 12px' colspan='2'>
<asp:radiobutton id='RadioButton1' runat='server' Text='列印全部' Width='96px' GroupName='rb'></asp:radiobutton></td>
</tr>
<TR>
<TD style='WIDTH: 46px; HEIGHT: 30px'><asp:radiobutton id='RadioButton2' runat='server' Text='頁數' GroupName='rb' Checked='True'></asp:radiobutton></TD>
<TD style='HEIGHT: 30px'>從<asp:TextBox id='TextBox1' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox1,1,0)'>1</asp:TextBox><asp:label id='Label1' runat='server'>到</asp:label>
<asp:TextBox id='TextBox2' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox2,1,0)'>1</asp:TextBox></TD>
</TR>
<tr>
<td style='FONT-WEIGHT: bold; HEIGHT: 26px'>列印份數:</td>
<td colspan='2' style='HEIGHT: 26px'>
<asp:TextBox id='TextBox3' runat='server' Width='48px' Font-Names='新細明體' Font-Size='9pt' onkeypress='escapeKey(document.forms[0].TextBox3,1,0)'>1</asp:TextBox></td>
</tr>
<TR>
<TD colspan='3'><INPUT onclick='sendTo()' type='button' value='確定' style='FONT-WEIGHT: bold; FONT-SIZE: 9pt; FONT-FAMILY: 新細明體'></TD>
</TR>
</table>