星期一, 8月 15, 2005

利用crystal report 直接匯出pdf檔給client

'''利用crystal report 直接匯出pdf檔給client
'''在作業目錄底下新建一個reports目錄,權限設定為everyone可讀寫
'''記得要imports 以下兩項
'''Imports CrystalDecisions.CrystalReports.Engine
'''Imports CrystalDecisions.Shared
'''
Dim RptDoc As New ReportDocument
Dim rptFile As String = Server.MapPath("license.rpt")
'''
RptDoc.Load(rptFile)
''' 登入資料庫
Dim logonInfo As New TableLogOnInfo
Dim rptTable As Table
For Each rptTable In RptDoc.Database.Tables
logonInfo = rptTable.LogOnInfo
With logonInfo.ConnectionInfo
.ServerName = "localhost"
.DatabaseName = "ff"
.UserID = "aa"
.Password = "aa"
End With
rptTable.ApplyLogOnInfo(logonInfo)
Next

'RptDoc.ExportOptions.ExportFormatType = ExportFormatType.WordForWindows
RptDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
RptDoc.ExportOptions.FormatOptions = New PdfRtfWordFormatOptions
''' 設定參數
Dim Paravalues As New ParameterValues
Dim ParaDisValue As New ParameterDiscreteValue
'ParaDisValue = New ParameterDiscreteValue
ParaDisValue.Value = 6
Paravalues.Add(ParaDisValue)

RptDoc.DataDefinition.ParameterFields("License_Num").ApplyCurrentValues(Paravalues)

Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim fname As String
fname = Server.MapPath("exports/") & Session.SessionID.ToString & ".pdf"
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = fname
crExportOptions = RptDoc.ExportOptions
With crExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
RptDoc.Export()
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(fname)
Response.Flush()
Response.Close()
System.IO.File.Delete(fname)

利用window.open開啟新視窗

利用asp.net(VS.net)開發web程式, 相信很多人都知道, 一個aspx的網頁只能有一個
form, 也就是說如果要在程式中利用button按鈕點一下後,連結到新的視窗,一般就只能
靠java script 來完成了.
最好是利用 window.open, 而不要使用window.showModalDialog , 因為
後者並非標準的語法,只有IE能解譯.
例如:
Private Sub BTP_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles BTPestUse1.Load
Dim JavaScript As String
Dim Url As String
Url = "'pChoice.aspx?pestcd=' + " & "Form1." & Me.TBP.ClientID & ".value" '''
Url = "encodeURIComponent(" & Url & ")"
JavaScript = "window.open(" & Url & ",'','height=600,width=800,menubar=no');"
Me.BTP.Attributes("onclick") = JavaScript
end sub

於子視窗 pChoice.aspx 中可以利用request("pestcd")取得TBP這個TextBox輸入的值