分享
 
 
 

(6)ASPCallCrystalReportwithStoreProcedure

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

’rptserver.asp

Case "SRCH"

Call RetrieveObjects

Call CheckForError

’ create page variable

gvPageNumber = CInt(PAGE)

Select Case VFMT

Case "ENCP"

if goPageGenerator.FindText(TEXT, 0, gvPageNumber) then

Response.ContentType = EMFMIMETYPE

session("oEMF").sendpagenumberrecord(gvPageNumber)

else

gsErrorText = "The specified text, ’" & TEXT & "’ was not found in the report"

Response.ContentType = EMFMIMETYPE

session("oEMF").SendErrorMsg 33, gsErrorText

end if

Case "HTML_FRAME"

’ We are being called by HTML viewer

’ need to get the text from the form post

dim searchFound

TEXT = request.form("text")

’ Now find out what page the text is on

tempNumber = gvPageNumber + 1

If(CBool(goPageGenerator.FindText(TEXT, 0, tempNumber))) then

session("CurrentPageNumber") = tempNumber

searchFound = 1

else

session("CurrentPageNumber") = gvPageNumber

searchFound = 0

End If

if BRCH <> "" then

gvURL = "framepage.asp?brch=" & BRCH & "&SEARCHFOUND=" & searchFound

else

gvURL = "framepage.asp?SEARCHFOUND=" & searchFound

end if

response.redirect gvURL

Case "HTML_PAGE"

’ We are being called by HTML viewer

’ need to get the text from the form post

TEXT = request.form("text")

’ Now find out what page the text is on

tempNumber = gvPageNumber

If(CBool(goPageGenerator.FindText(TEXT, 0, tempNumber))) then

gvPageNumber = tempNumber

Set goPage = goPageCollection(gvPageNumber)

session("oPageEngine").ImageOptions = 1

response.binarywrite goPage.Renderhtml(1,3,3,request.ServerVariables("SCRIPT_NAME"),8209)

else

’ Send back an html page indicating the text was not found.

Response.Write "<html><title>Seagate ASP Reports Server</title><body bgcolor=’white’><center><h1>The text cannot be found in this report.</h1></center></body></html>"

End If

end select

Case "TOOLBAR_PAGE"

’ Redirect to the framepage, need to know if we are

’ on the last page.

if session("LastPageNumber") <> "" then

if CInt(PAGE) > CInt(session("LastPageNumber")) then

session("CurrentPageNumber") = session("LastPageNumber")

else

session("CurrentPageNumber") = PAGE

end if

else

Call RetrieveObjects

Call CheckForError

’ create the actual page

Set goPage = goPageCollection(PAGE)

’ check for an exception on the page number

Call ValidatePageNumber

if goPage.IsLastPage then

session("LastPageNumber") = goPage.pagenumber

session("CurrentPageNumber") = session("LastPageNumber")

else

session("CurrentPageNumber") = PAGE

end if

end if

if BRCH <> "" then

gvURL = "framepage.asp?brch=" & BRCH

else

gvURL = "framepage.asp"

end if

response.redirect gvURL

Case "EXPORT"

Set ExportOptions = Session("oRpt").ExportOptions

if(FillExportOptionsObject( EXPORT_FMT)) Then

Call RetrieveObjects

response.binarywrite goPageGenerator.Export(8209)

Call CheckForError

else

Response.ContentType = EMFMIMETYPE

session("oEMF").SendErrorMsg 1, "Invalid Export Type Specified"

end if

Case "MAP_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 goPageGeneratorDrillonMap = goPageGenerator.DrillOnMap(PAGE, glX, glY)

’ Check for an exception because of coordinates

if err.number <> 0 then

gsErrorText = "No Values Exist for Selected Region of Map"

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 = goPageGeneratorDrillonMap.grouppath

gvGroupNameDD = goPageGeneratorDrillonMap.groupname

session("oEMF").GroupName = gvGroupNameDD

Response.ContentType = EMFMIMETYPE

session("oEMF").sendbranchesemf(gvGroupPathDD)

end select

end select

SUB RetrieveObjects()

’ This procedure simply retrieves the session objects into global variables.

’ In the case of Out of Place Subreports, the SUBRPT parameter must be parsed and the

’ Subreport page generator object must be created.

Dim oRptOptions ’Report Options

Dim charIndexVal,tmpCharIndexVal

Dim tmpStr

Dim tmpPageGenerator

Dim subPageGenerator

Dim OOPSSeqNo ’holds the page’s OOPS sequence number

Dim OOPSSubName ’holds the OOPS’s name

Dim subCoords ’holds the coordinates of the OOPS in the main report

Dim subgvGroupPath ’holds the group path for the main report in subrpt parameter

Dim mainRptPageNumber ’holds the page number for the main report in the subrpt parameter

subgvGroupPath = Array()

if IsObject(session("oPageEngine")) then

’ make sure dialogs have been disabled

if SUBRPT <> "" Then

’ Obtain the subreport sequence number

charIndexVal = findChar(SUBRPT, ":")

if charIndexVal > 1 then

OOPSSeqNo = Mid(SUBRPT,1,charIndexVal - 1)

end if

’ Obtain the subreport’s name

tmpStr = Mid(SUBRPT,charIndexVal + 1)

charIndexVal = findChar(tmpStr, ":")

if charIndexVal > 1 then

OOPSSubName = Mid(tmpStr,1,charIndexVal - 1)

end if

tmpStr = Mid(tmpStr,charIndexVal + 1)

charIndexVal = findChar(tmpStr, ":")

’ Obtain the group path for the Out of Place Subreport

if charIndexVal > 1 then

subgvGroupPath = CreateArray(Mid(tmpStr, 1, charIndexVal - 1))

end if

’Obtain the main report page number after the fourth : character

tmpStr = Mid(tmpStr,charIndexVal + 1)

’Get the location of the fourth : seperator

charIndexVal = findChar(tmpStr, ":")

mainRptPageNumber = Mid(tmpStr, 1, charIndexVal - 1)

’Get the coordinates portion of the SUBRPT parameter

subCoords = Mid(tmpStr, charIndexVal + 1)

Call GetDrillDownCoordinates(subCoords, slX, slY)

’ Get the main reports page generator for the view

Set tmpPageGenerator = session("oPageEngine").CreatePageGenerator(subgvGroupPath)

Set subPageGenerator = tmpPageGenerator.DrillOnSubreport(mainRptPageNumber, slX, slY)

Set goPageGenerator = subPageGenerator.CreateSubreportPageGenerator(gvGroupPath)

else

Set goPageGenerator = session("oPageEngine").CreatePageGenerator(gvGroupPath)

end if

Set goPageCollection = goPageGenerator.Pages

else

’ must have timed out return an error, you may wan to Append to the

’ IIS log here.

if VFMT = "ENCP" then

Response.ContentType = EMFMIMETYPE

session("oEMF").SendErrorMsg 1, "User Session has expired"

else

response.write "User Session has expired"

end if

response.end

end if

END SUB

SUB ParseQS()

’ Parse the Query String

CMD = UCase(request.querystring("cmd")) ’ This determines the main function to perform

PAGE = UCase(request.querystring("page")) ’ the page to return

BRCH = UCase(request.querystring("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

VIEWER = UCase(request.querystring("VIEWER")) ’ This is the viewer that is calling the server

VFMT = UCase(request.querystring("VFMT")) ’ the format that the viewer understands

NODE = UCase(request.querystring("NODE"))

GRP = UCase(request.querystring("GRP")) ’ this is a way of specifing the actual group

COORD = UCase(request.querystring("COORD")) ’ these are the coordinates on the graph to process

DIR = UCase(request.querystring("DIR")) ’ this is the search direction

CSE = UCase(request.querystring("CASE")) ’ indicates if the search is case sensitive

TEXT = request.querystring("TEXT") ’ this is the text to search for.

INIT = UCase(request.querystring("INIT")) ’ used to build the frames for the html viewer

TAB = UCase(request.querystring("TAB")) ’ used to keep track of TABS on drill down.

EXPORT_FMT = UCase(request.querystring("EXPORT_FMT")) ’ Used to specify export format and type.

SUBRPT = UCase(request.querystring("SUBRPT")) ’ The Out of Place Subreport coordinates.

INCOMPLETE_PAGE = CInt(request.querystring("INCOMPLETE_PAGE"))’ Used to specify whether the page is to contain placeholders.

INCOMPLETE_PAGE_COUNT = CInt(request.querystring("INCOMPLETE_PAGE_COUNT"))’ Used to specify whether the page has to contain a total page count.

PVERSION = CInt(request.querystring("PVERSION"))’ Used to indicate the protocol version the viewer is utilizing.

TTL_INFO = UCase(request.querystring("TTL_INFO"))’Used to indicate the group path of the totaller request.

’ Initialize variables to a default if they are not provided on the query string.

’ Check for Parameter Values that are passed by the HTTP Post Command.

if CMD = "" then

CMD = UCase(request.form("cmd"))

if CMD = "" then

CMD = "GET_PG"

end if

end if

if INIT = "" then

INIT = UCase(request.form("INIT"))

end if

if BRCH = "" then

BRCH = UCase(request.form("BRCH"))

end if

if BRCH = "" and INIT = "HTML_FRAME" then

Call InitializeFrameArray

end if

if BRCH <> "" and INIT = "HTML_FRAME" then

if session("lastBrch") <> BRCH then

NEWBRCH = "1"

end if

end if

if VIEWER = "" then

VIEWER = UCase(request.form("VIEWER"))

if VIEWER = "" then

VIEWER = "HTML"

end if

end if

if VFMT = "" then

VFMT = UCase(request.form("VFMT"))

if VFMT = "" then

VFMT = "HTML_PAGE"

end if

end if

if GRP = "" then

GRP = UCase(request.form("GRP"))

end if

if TTL_INFO = "" then

TTL_INFO = UCase(request.form("TTL_INFO"))

end if

if COORD = "" then

COORD = UCase(request.form("COORD"))

end if

if NODE = "" then

NODE = UCase(request.form("NODE"))

end if

if DIR = "" then

DIR = UCase(request.form("DIR"))

if DIR = "" then

DIR = "FOR" ’ forward

end if

End if

if CSE = "" then

CSE = UCase(request.form("CASE"))

if CSE = "" then

CSE = "0" ’ case insensitive

end if

end if

if TEXT = "" then

TEXT = request.form("TEXT")

end if

if EXPORT_FMT = "" then

EXPORT_FMT = UCase(request.form("EXPORT_FMT"))

end if

if SUBRPT = "" then

SUBRPT = UCase(request.form("SUBRPT"))

end if

if request.form("INCOMPLETE_PAGE") <> "" then

INCOMPLETE_PAGE = CInt(request.form("INCOMPLETE_PAGE"))

end if

if request.form("INCOMPLETE_PAGE_COUNT") <> "" then

INCOMPLETE_PAGE_COUNT = CInt(request.form("INCOMPLETE_PAGE_COUNT"))

end if

if PVERSION = 0 then

PVERSION = CInt(request.form("PVERSION"))

end if

’ Check to make sure there is a page requested, if not use 1 as a default

if PAGE = "" then

PAGE = UCase(request.form("page"))

if PAGE = "" then

PAGE = "1"

end if

end if

if PAGE <> "" and NOT IsNumeric(PAGE) then

PAGE = "1"

end if

END SUB

Function CreateArray(ByVal vsStringArray)

’ this function takes an string like 0-1-1-0 and converts

’ it into an array of integers

Dim lvArray

Dim lvNewArray

Dim liCount

Dim liCurrentPos

Dim lsBuf

lvArray = Array()

lvNewArray = Array()

ReDim lvArray(256)

liStringLength = Len(vsStringArray)

liCount = 0

liCurrentPos = 1

lsBuf = ""

While liCurrentPos <= liStringLength

’ignore this character

If Mid(vsStringArray, liCurrentPos, 1) <> "-" Then

lsBuf = lsBuf & Mid(vsStringArray, liCurrentPos, 1)

If liCurrentPos = liStringLength Then

lvArray(liCount) = CInt(lsBuf)

lsBuf = ""

liCount = liCount + 1

End If

Else

lvArray(liCount) = CInt(lsBuf)

lsBuf = ""

liCount = liCount + 1

End If

liCurrentPos = liCurrentPos + 1

Wend

ReDim lvNewArray(liCount - 1)

For x = 0 To (liCount - 1)

lvNewArray(x) = lvArray(x)

Next

CreateArray = lvNewArray

End Function

’ Helper function to parse coordinates passed by viewers and place into independent variables.

SUB GetDrillDownCoordinates(ByVal strParam, ByRef xCoord, ByRef yCoord)

Dim liStringLength

Dim lbDone

Dim lsBuf

liStringLength = Len(strParam)

lbDone = FALSE

lsBuf = ""

xCoord = ""

yCoord = ""

For x = 1 To liStringLength

lsBuf = Mid(strParam, x, 1)

’ignore this character

If lsBuf = "-" Then

lsBuf = ""

lbDone = TRUE

End if

if lbDone then

yCoord = yCoord + lsBuf

else

xCoord = xCoord + lsBuf

end if

Next

END SUB

’ This helper procedure will check if the requested page number exists.

’ If it does not, it will set it to the last available page.

SUB ValidatePageNumber()

if err.number <> 0 then

if err.number = 9 then

’ just return the last page

PAGE = goPageCollection.count

Set goPage = goPageCollection(PAGE)

’ these session variables are used for the HTML Frame viewer

session("LastPageNumber") = PAGE

session("CurrentPageNumber") = PAGE

err.clear

else

’ A more serious error has occurred. Error message sent to browser.

Call CheckForError

end if

end if

END SUB

’ This helper procedure will send an error msg to the browser based on what viewer is being used.

SUB CheckForError()

If Err.Number <> 0 Then

if VFMT = "ENCP" then

Response.ContentType = EMFMIMETYPE

session("oEMF").SendErrorMsg 1, "CRAXDRT Error Occured on Server. " & Err.Number & " : " & Err.Description

else

Response.Write "CRAXDRT Error Occured on Server. Error Number: " & Err.Number & " Error Description: " & Err.Description

end if

Response.end

End if

END SUB

SUB InitializeFrameArray()

’initialize the html_frame array

set session("tabArray") = Nothing

session("lastBrch") = ""

dim tmpArray

tmpArray = Array(4)

redim tmpArray(4)

’Initialize the sequence number

tmpArray(0) = "EMPTY"

session("tabArray") = tmpArray

END SUB

’ Helper function to parse the EXPORT_FMT parameter and fill in the properties of the

’ Export object.

FUNCTION FillExportOptionsObject(export_fmt_options)

dim charIndex

dim exportType

dim exportDLLName

charIndex = findChar(export_fmt_options,":")

’Set session("ExportOptions") = Session("oRpt").ExportOptions

if(charIndex > 0) Then

’Get the export format type value

exportType = Mid(export_fmt_options, charIndex + 1)

exportDLLName = UCase(Mid(export_fmt_options, 1, charIndex - 1))

Select Case exportDLLName

Case "U2FWORDW"

ExportOptions.FormatType = CREFTWORDFORWINDOWS + CInt(exportType)

Response.ContentType = "application/msword"

Case "U2FRTF"

ExportOptions.FormatType = CREFTRICHTEXT + CInt(exportType)

Response.ContentType = "application/rtf"

Case "U2FXLS"

ExportOptions.FormatType = CREFTEXCEL21 + CInt(exportType)

Response.ContentType = "application/x-msexcel"

Case "U2FCR"

ExportOptions.FormatType = CREFTCRYSTALREPORT + CInt(exportType)

Response.ContentType = "application/x-rpt"

Case Else

FillExportOptionsObject = False

Exit Function

End Select

ExportOptions.DestinationType = CREDTDISKFILE

FillExportOptionsObject = True

else

FillExportOptionsObject = False

end if

end FUNCTION

’ Helper function that returns the index of the character in the given string.

Function findChar(findStr, charToFind)

dim lenStr

dim result

lenStr = len(findStr)

result = -1

if(lenStr > 0) Then

charCounter = 1

do While(charCounter <= lenStr)

tmpChar = Mid(findStr,charCounter,1)

if(tmpChar = charToFind) Then

result = charCounter

Exit Do

end if

charCounter = charCounter + 1

loop

end if

findChar = result

End Function

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有