zoukankan      html  css  js  c++  java
  • 水晶報表11在.net的制作

     

            水晶報表11.net的制作

    調用方式:

    Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click

            Dim strUserID As String = "" '使用者代碼

            Dim strRptCod As String = "" '報表代碼

            Dim strRepTab As String = "" '列印資料存儲table名稱

            Dim strSqlUpd As String = "" '在列印後欲UPDATE資料之Script

            Dim strSqlDes As String = "" '產生列印資料存儲tableScript

            Dim strSqlIns As String = "" '報表要列印資料先存入tableScript

            Dim _Rpt00000 As Rpt00000 = New Rpt00000

            '************此處選擇列印報表,並進行資料處理

            strUserID = Session("USER_AID")

            strRptCod = "AA500040-1.RPT"

            strRepTab = "AA500040"

            strSqlDes = GetCreTab_AA500040()

            strSqlIns = GetIns_AA500040()

            strSqlUpd = ""

            '************開始列印資料處理動作

            _Rpt00000.CreateRptTab(strUserID, strRepTab, strSqlDes, strSqlIns)

            _Rpt00000.InsertInotData(strUserID, strRptCod, strRepTab, strSqlUpd)

            '***********開始列印動作

            Dim strScript As String = ""

            strScript += "<script>FnOpenRpt('" + strUserID + "','" + strRptCod + "');</script>"

            Page.RegisterStartupScript("strScript", strScript)

        End Sub

    '* 函數名稱: FnOpenRpt()

    '*     : 開啟報表窗體

    function FnOpenRpt(UserID,RptCod)

    {

            var   win_width= screen.availWidth-10;      //取寬度

            var   win_height= screen.availHeight-80 ;    //取高度

            var   left_pos =0;          //左界

            var   top_pos =0;           //右界

            var strPass = "../Pub/RptCrvForm.aspx?RptCod=" + escape(RptCod);

            strPass +="&UserID=" + escape(UserID);

            var strP="width="+ win_width +",height="+ win_height + ",left=" +left_pos+",top="+top_pos;

            strP+=",status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes";

            window.open(strPass,'',strP);

            return true;

    }

        ''' 函數名稱: CreateRptTab()

        '''     : 在列印前處理列印資料存儲table,如果table存在,則刪除其中該USER之資料,如果Table不存在則創建table

    Public Function CreateRptTab(ByVal UserID As String, ByVal RepTab As String, ByVal SqlDes As String, ByVal SqlIns As String)

            Dim sbSQL As New System.Text.StringBuilder

            Dim ReValue As Boolean = False

            sbSQL.Append(" IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[" + RepTab + "]') AND OBJECTPROPERTY(id, N'IsUserTable')=1)" + Chr(13) + Chr(10))

            sbSQL.Append("    DELETE FROM [" + RepTab + "] WHERE USRCOD='" + UserID + "' " + Chr(13) + Chr(10))

            sbSQL.Append(" ELSE " + Chr(13) + Chr(10))

            sbSQL.Append(SqlDes + Chr(13) + Chr(10))

            Try

                _objADODB.OpenConnection()

                _objADODB.ExecSQL(sbSQL.ToString)

                If SqlIns.Trim <> "" Then

                    _objADODB.ExecSQL(SqlIns)

                End If

                ReValue = True

            Catch ex As Exception

                Throw ex

            Finally

                _objADODB.CloseConnection()

            End Try

            Return ReValue

        End Function

    //直接顯示報表內容

    Me.txtRptCod.Text = Request("RptCod")

            Me.txtUserID.Text = Request("UserID")

            Dim strRepTab As String = "AAWA02TB"

            Dim objDT As DataTable

            Dim oRptDoc As ReportDocument = New ReportDocument

            Dim strSQL As String = ""

            Dim path As String = ""

            strRepTab = _Rpt00000.GetRepTabName(Me.txtUserID.Text, Me.txtRptCod.Text)

            If strRepTab <> "" Then

                strSQL = " SELECT * FROM " + strRepTab + " WHERE USRCOD='" + Me.txtUserID.Text.Trim + "'"

                objDT = _objADODB.OpenDataTable(strSQL)

                path = "..\RPT\" + Me.txtRptCod.Text

                path = Server.MapPath(path)

                Try

                    oRptDoc.Load(path)

                Catch ex As Exception

                    Response.Write("伺服器端加載" + path + "報表檔失敗<BR>" + Chr(13) + Chr(10))

                    Response.Write("請檢查.rpt報表檔文檔路徑或文件內容是否正確")

                    Return

                End Try

                objDT.TableName = strRepTab

                oRptDoc.SetDataSource(objDT)

                Me.CryRptView.ReportSource = oRptDoc

                Me.CryRptView.HasPrintButton = True

            Else

                Return

            End If

    //列印報表

    Dim oRptDoc As New ReportDocument

            Dim iPageS As Int32 '列印起始頁

            Dim iPageE As Int32 '列印迄止頁

            Dim iPageN As Int32 = 1 '列印份數

            Dim path As String = ""

            Dim strSQL As String = ""

            Dim strRepTab As String = ""

            Dim objDT As DataTable

            iPageS = CType(Me.txtPageS.Text.Trim, Integer)

            iPageE = CType(Me.txtPageE.Text.Trim, Integer)

            iPageN = CType(Me.txtNum.Text.Trim, Integer)

            strRepTab = _Rpt00000.GetRepTabName(Me.txtUserID.Text, Me.txtRptCod.Text)

            Try

                strSQL = " SELECT * FROM " + strRepTab + " WHERE USRCOD='" + Me.txtUserID.Text.Trim + "'"

               objDT = _objADODB.OpenDataTable(strSQL)

                path = "..\RPT\" + Me.txtRptCod.Text

                oRptDoc.Load(Server.MapPath(path))

                objDT.TableName = strRepTab

                oRptDoc.SetDataSource(objDT)

                'oRptDoc.PrintOptions.PrinterName '用預設印表機

                oRptDoc.PrintToPrinter(iPageN, True, iPageS, iPageE)

            Catch ex As LoadSaveReportException

                ex.ToString()

                Response.Write("開啓報表當時發生錯誤")

            Catch ex As PrintException

                ex.ToString()

                Response.Write("列印時發生錯誤,請檢查印表機相關設定")

            Catch ex As Exception

                ex.ToString()

                Response.Write("錯誤來源:" & ex.ToString)

            End Try

  • 相关阅读:
    集合
    Java异常处理机制
    LEACH分簇算法实现和能量控制算法实现
    利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率
    利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系
    STM32液晶显示HT1621驱动原理及程序代码
    LMC7660即-5V产生电路
    LM431精密+3.3V产生电路
    锂电池充电电路、锂电池充电保护电路
    AMS1117降压电路
  • 原文地址:https://www.cnblogs.com/freeliver54/p/399912.html
Copyright © 2011-2022 走看看