Crystal Reports Viewer 11

Hi,
I want to know if we can use crystalreportviewers115 instead of cystalreportviewers11.
I am calling my crystal reports from ASP.
I am new to crystal reports,any help is greatly appreciated.
Thank you

Each viewer is designed to work with a different version of Crystal. XI R2 is a different than XI. If you are interfacing with just the report aspects they should both work. If you are dealing with a BI server you should use the version that matches.

I think I should rephrase my question, I have created reports in Crystal Reports 11 and was using crystalreportviewers11 on webserver to access the reports.Now we have moved the webserver to a new box and it has only crystalreportviewers115.
Can I still keep my reports in 11 and view it in crystalreportviewers115?
I am using the following code

I am using the exact same code,where the version number is that of 115.
viewer115 is the virtual directory I created to point to 3.5 crytsal viewer.
I am getting a Red Cross Sign when I call the report. I tried all options listed on kbb.
Can you tell me where I could be going wrong?

mlmcc : I did not understand how to change the Crystal references to use the 115 assemblies? Please explain. If you have examples,that would be great.
Thank you

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

'------------------- FUNCTIONS ---------------------
'*******************************************************
'Function Name: Class_Initialize
'Description: function to automatically run on object instantiation
'*******************************************************
private sub Class_Initialize
If IsObject(session("oApp")) then
Set session("oApp") = nothing
End if
'Based on the Client Operating System.
If Session("WIN2K_LESS")=0 Then
Set session("oApp") = Server.CreateObject("CrystalRuntime.Application.11")
Else
Set session("oApp") = Server.CreateObject("Crystal.CRPE.Application")
End if

If IsObject(session("oRpt")) then
Set session("oRpt") = nothing
End if

If IsObject(session("oPageEngine")) Then
set session("oPageEngine") = nothing
End If

' 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("CrystalReports115.EMFGen.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
Dim sessionError ' this is the variable that will contain the error text sent to the viewer when the session has expired.

' 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.
Dim IMAGE ' used to specify the name of the image file for html viewers.
Dim DEL ' used to specify whether to delete image file after it has been sent to client.

' 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()

' If the request is for a image, we do not process the remainder of the page. Rather, we simply return
' the image file.
if IMAGE <> "" then
Call session("oEMF").StreamImage(IMAGE, DEL)
Response.End
end if

' 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

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)

' 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.

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

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.

' 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.

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

SUB ParseQS()
DIM UTF8STR ' this is the string in UTF-8 format returned from the viewer
' 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
UTF8STR = request.querystring("TEXT") ' this is the text to search for.
TEXT = session("oEMF").DecodeUTF8String(UTF8STR) ' Convert to Unicode.
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.
UTF8STR = request.querystring("SUBRPT") ' The Out of Place Subreport coordinates.
SUBRPT = UCase(session("oEMF").DecodeUTF8String(UTF8STR)) ' Convert to Unicode.
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.
IMAGE = UCase(request.querystring("IMAGE"))
DEL = Cint(request.querystring("DEL"))
' 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

' 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 or err.number = -2147352565 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

Featured Post

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Crystal Reports: 5 Tests for Top Performance
It is complete, your masterpiece report. Not only does it meet your customer’s expectations, it blows them out the water, all they want is beautifully summarised and displayed in a myriad of ways.
…

There have always been a lot of questions related to when Crystal Reports evaluates report components (such as formulas, summaries, cross-tabs, charts, to name a few examples).
Crystal Reports uses a two-pass reporting process to provide greater …

This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory.
NOTE: For Outlook 2016 and 2013 perform the exact same steps.
Open a new email: Click the New email button in Outlook.
Start typing the address: …

You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes.
Assigning simple products to configurable: We assigned simple products…