ASP Call Crystal Report with Store Procedure(5)

<%@ LANGUAGE="VBSCRIPT" %>
<%
On Error Resume Next

' The oEMF object is a helper object to create EMFs (Ecapsulated Messages) for the viewers.
' The viewers use EMFs to display errors and navigate to specific pages of the report.

If Not IsObject(session("oEMF")) then
Set session("oEMF") = Server.CreateObject("CREmfgen.CREmfgen.1")
Call CheckForError
End if


' Initialize all Global variables
' These will contain the page generator and page collection


Dim goPageGenerator ' page generator object
Dim goPageCollection ' page collection object
Dim goPageGeneratorDrill' page generator object in Drill Down Context
Dim goPage ' the page object
Dim gvGroupPathDD ' drill down group path, this is an array.
Dim gvGroupPath ' this is branch, aka Group Path converted from string passed on the QS, it is an Array
Dim gvGroupLevel ' this is the Group level, converted from the string passed on the QS, it is an Array
Dim gvMaxNode ' this represents the number of nodes to retrieve for the totaller, it is set to an empty array
Dim gvTotallerInfo ' this represents the group path of the requested totaller.
Dim glX ' this is the X Coordinate for a drill down on a graph or Map
Dim glY ' this is the Y Coordinate for a drill down on a graph or Map
Dim gvPageNumber ' holds the requested page number
Dim gvURL ' URL to redirect to
Dim gsErrorText ' holds the error text to be sent to the viewer.
Dim ExportOptions ' Export Options Object
Dim slX ' this is the X Coordinate for a selection of Out of Place subreport
Dim slY ' this is the Y Coordinate for a selection of Out of Place subreport

' Vaiables that represent what was passed on the Query String
Dim CMD ' This determines the main function to perform
Dim PAGE ' the page to return
Dim BRCH ' the branch is a mechanism to determine the drill down level.
' A drill down level is like a view of the report, a new tab
' is created to indicate that it is a new view
Dim VIEWER ' This is the viewer that is calling the server
Dim VFMT ' the format that the viewer understands
Dim NODE ' Currently not used??
Dim GRP ' this is a way of specifing the actual group
Dim COORD ' these are the coordinates on the graph to process
Dim DIR ' this is the search direction
Dim CSE ' indicates if the search is case sensitive
Dim TEXT ' this is the text to search for.
Dim INIT ' used to build the frames for the html viewer
Dim NEWBRCH ' used to keep track of when a new branch is to be viewed.
Dim EXPORT_FMT ' used to hold the export format and type
Dim SUBRPT ' used to hold the Out Of Place Subreport page, number,
' and coordinates on the main report.
Dim INCOMPLETE_PAGE ' used to indicate whether the page generated should contain placeholders.
Dim INCOMPLETE_PAGE_COUNT ' used to indicate whether the page should contain the total page count if not yet generated.
Dim PVERSION ' used to indicate the protocol version of the viewer.
Dim TTL_INFO ' used to indicate the group path of the totaller request.
' Constant Values
Dim CREFTWORDFORWINDOWS
Dim CREFTRICHTEXT
Dim CREFTEXCEL21
Dim CREFTCRYSTALREPORT
Dim CREDTDISKFILE
Dim EMFMIMETYPE
CREFTWORDFORWINDOWS = 14
CREFTRICHTEXT = 4
CREFTEXCEL21 = 18
CREFTCRYSTALREPORT = 1
CREDTDISKFILE = 1
crAllowPlaceHolders = 2
crDelayTotalPageCountCalc = 1
EMFMIMETYPe = "application/x-emf"
EPFMIMETYPE = "application/x-epf"
ETFMIMETYPE = "application/x-etf"
' Initialize Arrays
gvGroupPath = Array()
gvGroupLevel = Array()
gvMaxNode = Array() ' reteive all nodes
gvTotallerInfo = Array()
NEWBRCH = "0"
' To ensure that the browser does not cache the html pages for the group trees.
Response.Expires = 0
' Parse Query String for paramaters
Call ParseQS()

' INIT is a special QS case, we only care about HTML viewer, if it is then save send page and branch info
' to the frame page

if INIT = "HTML_FRAME" then
' build URL and send the QS
if BRCH <> "" and NEWBRCH = "1" then
' htmstart is the base page that creates the frames for the HTML viewer
' if there is branch information it needs to be passed along.
tmpArray = session("tabArray")
if tmpArray(0) <> "EMPTY" then
val = UBound(tmpArray, 1) + 1
redim preserve tmpArray(val + 4)
else
val = 0
end if
tmpArray(val) = CStr(val)
tmpArray(val + 1) = session("lastBrch")
session("lastBrch") = BRCH
tmpArray(val + 2) = session("CurrentPageNumber")
tmpArray(val + 3) = session("lastknownpage")
tmpArray(val + 4) = session("LastPageNumber")
session("tabArray") = tmpArray
gvURL = "htmstart.asp?brch=" & BRCH & "&"
else
if BRCH <> "" then
gvURL = "htmstart.asp?brch=" & BRCH
else
gvURL = "htmstart.asp"
end if
end if
response.redirect gvURL
end if



' If there is a BRCH then create the gvGroupPath array that represents it.

if BRCH <> "" then
gvGroupPath = CreateArray(BRCH)
end if

' If there is a GRP then create the gvGroupLevel array that represents it.

if GRP <> "" then
gvGroupLevel = CreateArray(GRP)
end if

' If there is a TTL_INFO then create the gvTotallerInfo array that represents it.

if TTL_INFO <> "" then
gvTotallerInfo = CreateArray(TTL_INFO)
end if



' If there are COORDs, then get them
if COORD <> "" then
Call GetDrillDownCoordinates(COORD, glX, glY)
end if

' This case statement determines what action to perform based on CMD
' there are sub cases for each viewer type



Select Case CMD

Case "GET_PG"

Call RetrieveObjects

' create the actual page
Set goPage = goPageCollection(PAGE)
' check for an exception on the page number
Call ValidatePageNumber

' 0 is for epf, 8209 is a SafeArray
Select Case VFMT

Case "ENCP"
session("oPageEngine").PlaceHolderOptions = 0
if(PVERSION > 2)then
if INCOMPLETE_PAGE > 0 then
session("oPageEngine").PlaceHolderOptions = crAllowPlaceHolders
end if
if INCOMPLETE_PAGE_COUNT > 0 then
session("oPageEngine").PlaceHolderOptions = session("oPageEngine").PlaceHolderOptions + crDelayTotalPageCountCalc
end if
end if
session("oPageEngine").ImageOptions = 1
temp = goPage.Renderepf(8209)
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
response.binarywrite temp

Case "HTML_FRAME"
session("oPageEngine").ImageOptions = 1
response.binarywrite goPage.Renderhtml(1,2,1,request.ServerVariables("SCRIPT_NAME"),8209)
' Need to know if it is the last page to construct the toolbar correctly
if goPage.IsLastPage then
session("LastPageNumber") = goPage.pagenumber
session("CurrentPageNumber") = session("LastPageNumber")
end if
Case "HTML_PAGE"
session("oPageEngine").ImageOptions = 1
response.binarywrite goPage.Renderhtml(1,3,3,request.ServerVariables("SCRIPT_NAME"),8209)

end select

Case "GET_TTL"

Call RetrieveObjects

Select Case VFMT

Case "ENCP"
Response.ContentType = ETFMIMETYPE
if(PVERSION > 2)then
temp = goPageGenerator.RenderTotallerETF(gvTotallerInfo, 0, 1, gvMaxNode, 8209)
else
temp = goPageGenerator.RenderTotallerETF(gvGroupPath, 0, 0, gvMaxNode, 8209)
end if
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
response.binarywrite temp

Case "HTML_FRAME"
response.binarywrite goPageGenerator.RenderTotallerHTML(gvGroupPath, 1, 0, gvMaxNode, gvGroupLevel, 1, request.ServerVariables("SCRIPT_NAME"), 8209)

end select


Case "RFSH"

' This command forces the database to be read again.
session("oRpt").DiscardSavedData
session("oRpt").ReadRecords
If Err.Number <> 0 Then
Call CheckForError
Else
session("oRpt").EnableParameterPrompting = False
Set session("oPageEngine") = session("oRpt").PageEngine
End If
Call RetrieveObjects
Set goPage = goPageCollection(PAGE)
Call ValidatePageNumber
session("oPageEngine").ImageOptions = 1
Select Case VFMT
Case "ENCP"
' Java and Active X Viewers will make a get page command when receiving 0 error msg value
if VIEWER = "JAVA" then
session("oPageEngine").PlaceHolderOptions = 0
if(PVERSION > 2)then
if INCOMPLETE_PAGE > 0 then
session("oPageEngine").PlaceHolderOptions = crAllowPlaceHolders
end if
if INCOMPLETE_PAGE_COUNT > 0 then
session("oPageEngine").PlaceHolderOptions = session("oPageEngine").PlaceHolderOptions + crDelayTotalPageCountCalc
end if
end if
temp = goPage.Renderepf(8209)
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
response.binarywrite temp
else
Response.ContentType = EMFMIMETYPE
session("oEMF").SendErrorMsg 0,""
end if

Case "HTML_FRAME"
InitializeFrameArray()
gvURL = "htmstart.asp"
response.redirect gvURL

Case "HTML_PAGE"
session("oPageEngine").ImageOptions = 1
response.binarywrite goPage.Renderhtml(1,3,1,request.ServerVariables("SCRIPT_NAME"),8209)

end select


Case "NAV"
Call RetrieveObjects
Call CheckForError
' Get the page number that the group in on, for this particular branch
gvPageNumber = goPageGenerator.GetPageNumberForGroup(gvGroupLevel)

Select Case VFMT
' 0 is for epf, 8209 is a SafeArray, 8 is a BSTR
Case "ENCP"
' Create a byte array for the EMF, which will contain the page number
Response.ContentType = EMFMIMETYPE
session("oEMF").sendpagenumberrecord(gvPageNumber)

Case "HTML_FRAME"
' for html browser send back the page
dim appendQuery
appendQuery = "?"
session("CurrentPageNumber") = gvPageNumber
if BRCH <> "" then
appendQuery = appendQuery & "BRCH=" & BRCH & "&"
end if
if GRP <> "" then
appendQuery = appendQuery & "GRP=" & GRP
end if
response.redirect "framepage.asp" & appendQuery

end select


Case "CHRT_DD"
' only supported in java and active X smart viewers
Select Case VFMT

Case "ENCP"

' Get page collection
Call RetrieveObjects
Call CheckForError
' Pass the coordinates to the report engine to determine what
' branch the drill down goes to.
Set goPageGeneratorDrill = goPageGenerator.DrillOnGraph(PAGE, glX, glY)
' Check for an exception because of coordinates
if err.number <> 0 then
gsErrorText = "Not part of the Graph "
Response.ContentType = EMFMIMETYPE
session("oEMF").SendErrorMsg 40, gsErrorText
err.clear
response.end
end if
' pass the group level and group path to helper function to create
' the EMF message, this tells the viewer where to get the page.

gvGroupPathDD = goPageGeneratorDrill.grouppath
gvGroupNameDD = goPageGeneratorDrill.groupname
Response.ContentType = EMFMIMETYPE
session("oEMF").GroupName = gvGroupNameDD
session("oEMF").sendbranchesemf(gvGroupPathDD)


end select

Case "GET_LPG"

' only support in smart viewers
Select Case VFMT

Case "ENCP"
' this command returns the page number of the last page
' Get page collection
Call RetrieveObjects
Call CheckForError
' Get the count from the Pages collection
gvPageNumber = goPageCollection.Count

' Send the EMF representing the page number
Response.ContentType = EMFMIMETYPE
session("oEMF").sendpagenumberrecord(gvPageNumber)
end select


300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00567 秒