ReplaceConnection() - missingParameterValueError

In our project we must replace the connection saved within report.
To do that we are using replaceConnection() method and the way described by Thomas Zuberbue in
JRC 2: Performance Problem
To remind it it looks like:
// bag is a Map<String, String> and contains connection information
// doc is an existing instance of ReportClientDocument
prepareReport(doc, bag);
changeDataSource(doc, bag);
methods:
private void changeDataSource(ReportClientDocument doc, Map<String, String> bag)
      throws ReportSDKException {
    DatabaseController dc = doc.getDatabaseController();
    ConnectionInfos cis = dc.getConnectionInfos(null);
    for (IConnectionInfo oldci : cis) {
      IConnectionInfo newci = new ConnectionInfo();
      newci.setAttributes(new PropertyBag(bag));
      newci.setUserName("xxxx");
      newci.setPassword("xxxx");
      dc.replaceConnection(
          oldci, newci, null, DBOptions._useDefault + DBOptions._doNotVerifyDB);
    SubreportController src = doc.getSubreportController();
    IStrings strs = src.getSubreportNames();
    Iterator<?> it = strs.iterator();
    while (it.hasNext()) {
      String name = (String)it.next();
      ISubreportClientDocument subreport = src.getSubreport(name);
      DatabaseController sdc = subreport.getDatabaseController();
      cis = sdc.getConnectionInfos(null);
      for (IConnectionInfo oldci : cis) {
        IConnectionInfo newci = new ConnectionInfo();
        newci.setAttributes(new PropertyBag(bag));
        newci.setUserName("xxxx");
        newci.setPassword("xxxx");
        sdc.replaceConnection(
            oldci, newci, null, DBOptions._useDefault + DBOptions._doNotVerifyDB);
private void prepareReport(ReportClientDocument doc, Map<String, String> bag)
    throws ReportSDKException {
  DatabaseController dc = doc.getDatabaseController();
  IDatabase db = dc.getDatabase();
  for (Object table : db.getTables()) {
    ((ITable)table).setQualifiedName("userNameX".toUpperCase()
        + "." + ((ITable)table).getName());
We also use the subreport link copy procedure:
// preserve subreport links
        SubreportController src = reportClientDoc.getSubreportController();
        Map< String, SubreportLinks > linkMapper = new HashMap< String, SubreportLinks >();
        for( String subreportName : src.getSubreportNames() )
            linkMapper.put( subreportName, (SubreportLinks)src.getSubreportLinks( subreportName )
                .clone( true ) );
and
// AFTER DB connection REPLACEMENT
// reconnect subreport links since when using replaceConnection links are erased
         for(String subreportName : src.getSubreportNames()) {
             src.setSubreportLinks(subreportName, linkMapper.get(subreportName));
But after that we get:
com.crystaldecisions.sdk.occa.report.lib.ReportSDKParameterFieldException: InternalFormatterException---- Error code:-2147217394 Error code name:missingParameterValueError
     at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:237)
     at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:147)
     at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:128)
     at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:111
If we do not change the connection saved in the report, the problem does not appear  and report is exported.
What might be the problem

Hello i've resolved the problem
The issue is quite strange. As described - when there is no connection replacement the report is printed when connection is dynamically replaced above exception occurs.
I noticed that one of the subreport's parameters was not linked to the main report's parameter. The connection replacement revealed the problem - probably report keeps the data from the old DB connection and after changing the datasource old data is dumped.

Similar Messages

  • Server error when calling the DatabaseController.replaceConnection() method

    <p>I am receiving the error message below when calling the DatabaseController.replaceConnection() method. Can anyone tell me what may be the cause of this? The code being executed is below the error message.
    </p>
    <p>
    Thank you.
    </p>
    <pre>
    A server error occured while processing the CrystalReport object, wfr.rpt (AVTJyRKrfDxKtXX31l5E9Ek), from the CMS.
        Unable to connect to the server: ATHENA.ReportApplicationServer.
         --- java.lang.Boolean cannot be cast to java.lang.String
    Stack Trace:
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException: Unable to connect to the server:
        ATHENA.ReportApplicationServer. - java.lang.Boolean cannot be cast to java.lang.String--
        Error code:-2147217387 Error code name:connectServer
            at com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException.
                    throwReportSDKServerException(Unknown Source)
            at com.crystaldecisions.sdk.occa.managedreports.ras.internal.CECORBACommunicationAdapter.
                    request(Unknown Source)
            at com.crystaldecisions.proxy.remoteagent.y.a(Unknown Source)
            at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
            at com.crystaldecisions.sdk.occa.report.application.cf.a(Unknown Source)
            at com.crystaldecisions.sdk.occa.report.application.DatabaseController.replaceConnection(Unknown Source)
            at aiConfigUtility.cmdlline.ImportExportBiarFile.changeReportDataSource(ImportExportBiarFile.java:561)
            at aiConfigUtility.cmdlline.ImportExportBiarFile.processBiarFile(ImportExportBiarFile.java:726)
    </pre>
    <br />
    <pre>
    private void test(String reportName)
       throws SDKException, ReportSDKException, java.io.IOException
       IInfoObjects newInfoObjects;
       IInfoObject reportObj;
       ReportClientDocument clientDoc = new ReportClientDocument();
       DatabaseController dc;
       PropertyBag pBag;
       PropertyBag logonProps;
       ConnectionInfo newConInfo;
       ConnectionInfo oldConInfo;
       ConnectionInfos conInfos;
       int connOptions = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB; //0;
       Fields connFields = null;
       String queryStr = "Select * From CI_INFOOBJECTS " +
          "Where SI_NAME='wfr.rpt' AND SI_KIND='CrystalReport' AND SI_INSTANCE=0";
       newInfoObjects = getCms().executeQuery(queryStr);
       if(newInfoObjects.size() > 0)
          reportObj = (IInfoObject)newInfoObjects.get(0);
          try
             clientDoc = getCms().getReportAppFactory().openDocument(
                reportObj
                , OpenReportOptions._refreshRepositoryObjects
                , java.util.Locale.US);
             dc = clientDoc.getDatabaseController();
             conInfos = dc.getConnectionInfos(null);
             for(int i = 0; i < conInfos.size(); ++i)
                oldConInfo = (ConnectionInfo)conInfos.getConnectionInfo(i);
                newConInfo = (ConnectionInfo)oldConInfo.clone(true);
                pBag = newConInfo.getAttributes();
                pBag.putStringValue("QE_ServerDescription", "alio");
                logonProps = new PropertyBag();
                logonProps.putStringValue("Trusted_Connection", "false");
                logonProps.putStringValue("Server", "alio");
                pBag.put("QE_LogonProperties", logonProps);
                newConInfo.setUserName("admin");
                newConInfo.setPassword("password");
                <b>dc.replaceConnection(
                   oldConInfo
                   , newConInfo
                   , connFields
                   , connOptions);</b>
          catch(ReportSDKServerException Ex)
             String msg = "A server error occured while processing the " + reportObj.getKind()
                + " object, " + reportObj.getTitle() + " (" + reportObj.getCUID() + "), from the CMS.";
             Utility.errorOut(msg, Ex);
          catch(Exception Ex)
             String msg = "An error occured while processing the " + reportObj.getKind()
                + " object, " + reportObj.getTitle() + " (" + reportObj.getCUID() + "), from the CMS.";
             Utility.errorOut(msg, Ex);
          finally
             clientDoc.save();
             getCms().commitToInfoStore(newInfoObjects);
             clientDoc.close();
    </pre>
    Edited by: Mark Young on Sep 10, 2009 2:13 PM

    <p>I just wanted to provide an update to this. I did find a work-around for this, but I cannot explain it. The post I added to a related thread on 23 Sept. 2009, Trying to change the data source for a Crystal Report. (thread 1472257), explains a work-around I found for that problem. It seemed to resolve this one simultaneously. 
    </p>
    <p>
    I don't know why it works. If anyone has a comment or some insight, it is welcome. Thank you in advance.
    </p>

  • Error code:-2147217394 Error code name:missingParameterValueError

    As seen on:
    Re: Problem exporting Crystal report from Portlet JSR-168 instead of servlet.
    I have all old code using "com.crystaldecisions.sdk.occa.report.data.Fields" and I would like to iterate through all items and convert them to the new ReportClientDocument, is that possible?
    Sample:
    ParameterFieldController paramFieldController = reportClientDoc.getDataDefController().getParameterFieldController();     
          for (int i = 0; i < fields.size(); i++) {
            paramFieldController.setCurrentValue(fields.getField(i).REPORTNAME, fields.getField(i).FIELDNAME, fields.getField(i).FIELDVALUE);  
    REPORTNAME, FIELDNAME and FIELDVALUE doesn't exist. my "fields" (com.crystaldecisions.sdk.occa.report.data.Fields) variable has a bunch of "ParameterField" objects, if I could retrive those 3 properties I could fill-in all parameters.
    Thanks!

    Oh great, now I'm getting an exception on some reports:
    The field was not found.
    here:
    ParameterFieldController paramFieldController = reportClientDoc.getDataDefController().getParameterFieldController();     
          for (int i = 0; i < fields.size(); i++) {
            if (fields.getField(i) != null)
                paramFieldController.setCurrentValue(((ParameterField)fields.getField(i)).getReportName(), ((ParameterField)fields.getField(i)).getName(), ((ParameterField)fields.getField(i)).getCurrentValues().toArray()[0]);  

  • JRC for Crystal Reports for Eclipse V2.0 Parameter Problems

    Scenario:
    I have a report that displays the Function Group Name for a certain individual and all the Functions included in that Function Group. The following are the tables involved:
    USER, FUNC_GROUP (contains description of the group) and FUNC_GROUP_LIST (the actual functions in the FUNC_GROUP).
    The SQL command for the main report is: select id, name, description from FUNC_GROUP, USER where FUNC_GROUP.id = USER.default_func_group_id
    The sub-report which lists the functions for the Function Group has the following SQL command: select id, name from FUNC where func_group_id = <main report's FUNC_GROUP.id>
    The problem is my current code still flags missingParameterValueError error whenever I changed the DB location and set the parameters.
    Code used for setting of db connection:
    private void setDBConnection(ReportClientDocument doc) throws ReportSDKException {
        IConnectionInfo newConnectionInfo = new ConnectionInfo();
        newConnectionInfo.setAttributes(new PropertyBag(connectionProperty));
        newConnectionInfo.setUserName(getLoginname());
        newConnectionInfo.setPassword(getPassword());
        //preserve subreport links
        SubreportController src = doc.getSubreportController();
        Map<String, SubreportLinks> linkMapper = new HashMap<String,SubreportLinks>();
        for(String subreportName : src.getSubreportNames()){
            linkMapper.put(subreportName,
                (SubreportLinks) src.getSubreportLinks(subreportName).clone(true));
        //If this connection needed parameters, we would use this field. 
        Fields<IParameterField> pFields = doc.getDataDefController().getDataDefinition().getParameterFields();
        replaceConnectionInfos(doc.getDatabaseController(), newConnectionInfo, pFields);
        IStrings strs = src.getSubreportNames();
        Iterator<String> it = strs.iterator();
        while (it.hasNext()) {
          String name = it.next();
          ISubreportClientDocument subreport = src.getSubreport(name);
          pFields = subreport.getDataDefController().getDataDefinition().getParameterFields();
          replaceConnectionInfos(subreport.getDatabaseController(), newConnectionInfo, pFields);
        //reconnect subreport links since when using replaceConnection links are erased
        for(String subreportName : src.getSubreportNames())
          src.setSubreportLinks(subreportName, linkMapper.get(subreportName));
    Edited by: Rizza Lynn Ponce on Jun 2, 2009 11:56 AM

    >
    Ted Ueda wrote:
    > Do you look at the report links you're saving before the connection changes, to see if it's being saved, and added back?  It'll be interesting what type of link it is.
    I've run the program in debug mode and inspected the following:
    src.getSubreportLinks(subreportName).getSubreportLink(0).getSubreportFieldName()
    src.getSubreportLinks(subreportName).getSubreportLink(0).getMainReportFieldName()
    src.getSubreportLinks(subreportName).getSubreportLink(0).getLinkedParameterName()
    before the change in connection and after the change in connection in both main and subreport and after adding back the links. The values monitored did not change.
    Am I looking at the correct things? Or is there another value I need to monitor?
    >
    > Is it possibly to a stored proc parameter that is no longer there in the subreport after the database change?
    I am not using any stored procs, I just formulated an SQL for retrieval in both main and subreport.
    >
    > If so, you'd need to redefine the link before applying.
    >
    > Sincerely,
    >
    > Ted Ueda
    What do you mean redefine?
    Additional info:
    The current template I'm using accepts the value from main report (FUNC_GROUP.id) which is in turn used as a parameter in the SQL command in the subreport. This throws an error when exporting via JRC.
    However, I tried some modifications in the SQL command in the subreport. I've included the Function Group ID in the select clause (select id, name, func_group_id from FUNC) instead of using it in the where clause. Then in the linking of the main and the subreport, I chose filter data in subreport by func_group_id matching FUNC_GROUP.id in main report. Exporting in JRC this report worked well and deliver the same data as the original template. The problem is I think it takes longer because all data in FUNC table is retrieved. And also as a framework developer, I prefer not limiting the developers regarding the style on how they connect main and subreport in CRW (I'd personally say I'm more fond of using the original template as I think the modified template retrieves unneeded data).

  • Two commands in the report using the same parameter - fail under Java

    I have a report that contains 2 SQL commands.
    Both of these commands use one parameter X of type Number in their 'WHERE' clause.
    When i'm viewing the report in CR 2008, i'm asked for a value of this parameter and all data is filled in the report - OK
    The problem occurs when the same report is printed through Crystal Java Runtime:
    Report is printed without data! - it's empty.
    What we noticed in the debug information thrown by the Crystal libraries is that parameter value is set only in one of these commands:
    Original statement 1:
    select a.something
    from ANM_T a
    where a.anmid = {?PARAMETER01Id}
    Original statement 2:
    SELECT * from ANM_T a
    WHERE  a.anmid={?PARAMETER01Id}
    OUTCOME of Statement 1:
    select a.something
    from ANM_T a
    where a.anmid = 0
    OUTCOME of Statement 2:
    SELECT * from ANM_T a
    WHERE  a.anmid=9825
    In above example we may see that crystal set the value only in the second statement - first one got 0 - i suspect its some default value.
    Parameter in the Java code is set in the right way. In case of using only one statement it works. If we use two separate parameters (whose values are equal ) it also works.
    // we have also the loop over the parameters
    ParameterFieldController paramFieldController =
                    report.getDataDefController().getParameterFieldController();
    paramFieldController.setCurrentValue( "", paramName, paramValue );
    What is strange for me is that Crystal Reports enables to use the same parameter in two commands but if you edit one of them you may change the type of this parameter for a command ( for example from Number to String) but the parameter type in the second command remains unchanged ( it's strange because in my opinion it is the same parameter). In the Field Explorer under the Parameter Fields i still see one parameter of type used in the second command.

    Hello all,
    We have prepared some sample code to illustrate the issue.
    We have modified the sample application (Link: [http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/c07fec3e-3e11-2c10-1991-8c0fb0b82b75]) to that it also changes the parameter value. Parameter is used in two commands saved in report.
    The code changing the parameters value looks like this:
    private static void changeParameters(ReportClientDocument reportClientDoc) throws ReportSDKException {
              DataDefController dataDefController = reportClientDoc.getDataDefController();
            Fields fields = dataDefController.getDataDefinition().getParameterFields();
            for( int i = 0; i < fields.size(); i++ ){
                Field field = (Field)fields.getField( i );
                if( field.getKind() == FieldKind.parameterField ){
                            setParameter( ((ParameterField)field).getName(), "9825" , reportClientDoc);          
    private static void setParameter( String paramName, String paramValue, ReportClientDocument document ) throws ReportSDKException {
         ParameterFieldController paramFieldController =
                    document.getDataDefController().getParameterFieldController();
         paramFieldController.setCurrentValue( "", paramName, paramValue );
    We have tried the following codes to change the connection info used in commands:
    Attempt 1
              Tables tables = databaseController.getDatabase().getTables();
              //Set the datasource for all main report tables.
              for (int i = 0; i < tables.size(); i++) {
                   ITable table = tables.getTable(i);
                   //Keep existing name and alias.
                   table.setName(table.getName());
                   table.setAlias(table.getAlias());
                   //Change connection information properties.
                   IConnectionInfo connectionInfo = table.getConnectionInfo();
                   //Set new table connection property attributes.
                   connectionInfo.setAttributes(propertyBag);
                   //Set database username and password.
                   //NOTE: Even if these the username and password properties don't change when switching databases, the
                   //database password is *not* saved in the report and must be set at runtime if the database is secured. 
                   connectionInfo.setUserName(DBUSERNAME);
                   connectionInfo.setPassword(DBPASSWORD);
                   connectionInfo.setKind(ConnectionInfoKind.SQL);
                   table.setConnectionInfo(connectionInfo);
                   //Update old table in the report with the new table.
                   databaseController.setTableLocation(table, tables.getTable(i));
                   //databaseController.setTableLocation(tables.getTable(i), table);
    Attempt 2
             newConnectionInfo.setAttributes(propertyBag);
             connectionInfo.setUserName(DBUSERNAME);
             connectionInfo.setPassword(DBPASSWORD);
             //preserve subreport links
             SubreportController src = doc.getSubreportController();
             Map<String, SubreportLinks> linkMapper = new HashMap<String,SubreportLinks>();
             for(String subreportName : src.getSubreportNames()){
                 linkMapper.put(subreportName,
                     (SubreportLinks) src.getSubreportLinks(subreportName).clone(true));
             //If this connection needed parameters, we would use this field. 
             Fields<IParameterField> pFields = doc.getDataDefController().getDataDefinition().getParameterFields();
             replaceConnectionInfos(doc.getDatabaseController(), newConnectionInfo, pFields);
             IStrings strs = src.getSubreportNames();
             Iterator<String> it = strs.iterator();
             while (it.hasNext()) {
               String name = it.next();
               ISubreportClientDocument subreport = src.getSubreport(name);
               pFields = subreport.getDataDefController().getDataDefinition().getParameterFields();
               replaceConnectionInfos(subreport.getDatabaseController(), newConnectionInfo, pFields);
             //reconnect subreport links since when using replaceConnection links are erased
             for(String subreportName : src.getSubreportNames())
               src.setSubreportLinks(subreportName, linkMapper.get(subreportName));
    private static void replaceConnectionInfos(DatabaseController aDc, IConnectionInfo aNewConnInfo, Fields<IParameterField> aParameterField) throws ReportSDKException {
             ConnectionInfos cis = aDc.getConnectionInfos(null);
             for (IConnectionInfo oldConnInfo : cis)
               aDc.replaceConnection(oldConnInfo, aNewConnInfo, aParameterField, DBOptions._useDefault
                   + DBOptions._doNotVerifyDB);
    In both cases, the observed problem occurred. In one query the parameter was set properly, while on the other it was set to 0 (or empty string in case of string parameters). What is more, no data appeared on the print.
    Do you happen to know the reason of this issue?How can we fix the problem?
    Best regards
    Mateusz Błaż

  • Unable to connect with new Data Source

    Hi everybody,
    After many developpment, I finally get my class to do what we need with crystal and webi report using Rebean and RAS SDK's.
    But, today we found a special case that I was thinking to solve following examples but the solutions given by the example do not work.
    Here is the case :
    We have Crystal report in BO using DSN file localted on the C:\ disk of the server. So, the Information for a such report founded in the IConnectionInfo object is :
    ConnectionInfo Kind = CRQE
    QE_DatabaseType = >ODBC (RDO)< (java.lang.String)
    SSO Enabled = >false< (java.lang.Boolean)
    Database DLL = >crdb_odbc.dll< (java.lang.String)
    QE_DatabaseName = >< (java.lang.String)
    QE_LogonProperties = >{FILEDSN=C:\path to DSN, UseDSNProperties=false, Trusted_Connection=false}< (com.crystaldecisions.sdk.occa.report.lib.PropertyBag)
    QE_SQLDB = >true< (java.lang.Boolean)
    QE_ServerDescription = >C:\path to DSN< (java.lang.String)
    Today, we had to import old crystal report in BO and for that report, the Data Source gives a DSN file on another disk R:\...
    So for the report where I found in a IConnectionInfo object a DSN file beginning by R:\, I have to change it by a new one pointing to the right DSN file on the C:\ disk. (The DSN file on the C:\ work perfectely because we can use it with other report).
    I follow this example : http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/e068eba5-1f57-2c10-10a0-91e111c98bc7
    And so I get the following code where I put all the parameter need for the correct DSN file on the C:\ :
    ConnectionInfos ci = (ConnectionInfos)dbcontroller.getConnectionInfos(null).clone();
                   IConnectionInfo ici = ci.getConnectionInfo(0);
                   // Create a new connection and start setting new properties
                   IConnectionInfo newConnectionInfo1 = new ConnectionInfo();
                   newConnectionInfo1.setKind(ConnectionInfoKind.CRQE);
                   newConnectionInfo1.setUserName("momtest");
                   newConnectionInfo1.setPassword("testmom");
                   PropertyBag newpb = new PropertyBag();
                   newpb.put(PropertyBagHelper.CONNINFO_CRQE_DATABASETYPE,"ODBC (RDO)");
                   newpb.put(PropertyBagHelper.CONNINFO_SSO_ENABLED,false);
                   newpb.put(PropertyBagHelper.CONNINFO_DATABASE_DLL,"crdb_odbc.dll");
                   newpb.put(PropertyBagHelper.CONNINFO_CRQE_DATABASENAME,"");
                   newpb.put(PropertyBagHelper.CONNINFO_CRQE_SQLDB,true);
                   newpb.put(PropertyBagHelper.CONNINFO_CRQE_SERVERDESCRIPTION,"path to DSN");
                   PropertyBag LogonProperties = new PropertyBag();
                   LogonProperties.put("FILEDSN","path to DSN");
                   LogonProperties.put("UseDSNProperties", false);
                   LogonProperties.put("Trusted_Connection","false");
                   newpb.put(PropertyBagHelper.CONNINFO_CRQE_LOGONPROPERTIES,LogonProperties);
                   newConnectionInfo1.setAttributes(newpb);
                   try {
                        dbcontroller.replaceConnection(ici, newConnectionInfo1, null, DBOptions._useDefault);
                   catch (ReportSDKServerException error)
                     System.out.println(error.getServerError());
                   System.out.println("--->" + dbcontroller.getServerNames());
                   System.out.println("Refreshing document...");
                   clientDoc.refreshReportDocument();
                   System.out.println("Document refreshed");
                   ByteArrayInputStream byteIS = (ByteArrayInputStream) clientDoc.getPrintOutputController().export(ReportExportFormat.PDF);
    When we arrived at line "ByteArrayInputStream byteIS = (ByteArrayInputStream) clientDoc.getPrintOutputController().export(ReportExportFormat.PDF);" we get a message that the logon failed.
    Someone have an idea?
    Edited by: jerome.vervier on Dec 29, 2011 4:23 PM

    Thanks Adam
    It ensure me that I get no usual error in my code and it confims me what I think.
    Thanks for help !

  • Improving the performance of Crystal Reports for Eclipse 2.0

    Hi,
    I am having some performance issues with displaying reports where it can take upto 30 seconds per user for each new session for the report to display. If we run this directly from the client (through Crystal 2008) it takes about 2 seconds.
    The product only has 4 different rpt files but are constantly viewed by the clients (although with diffferent parameters). The users tend to come onto the system browse a couple of reports and log-off. They will do this about 3 - 5 x a day.
    1) Can you cache the reports at an application level (rather than the session) (and is it recommended)
    2) Create a separate web-service just hosting the Crystal Reports
    3) Other mechanisms of calling the report (currently using addDiscreteParameterValue, replaceConnection, Logon [this replaceConnection and Logon is done for the master and every subreport], then using processHttpRequest
    Anyone got any advice , recommendations or pearls of wisdom?
    Probably have max 15 concurrent users which process these 4 reports.
    Kind regards
    Matt.

    CR4E 2.0 currently uses 5 CPLs - 5 concurrent process license, which means it services up to five concurrent report requests.  This isn't per-session, per-report, or per-user, but per-request (open report, next page, export).
    So having 15 simultaneous users may lead to some requests being queued till a license is free.
    For a more scalable solution, the recommendation is to go with a server-client solution like Crystal Reports Server Embedded or BusinessObjects Enterprise.
    But to tune your CR4E app to see how much you'll be able to service, what I recommend is turning on Log4J logging to see where the performance is going.
    Going from 2 sec to 30 sec between CR Designer (binary app) to CRJ (pure Java app) isn't out of performance expectations, but there may be ways to tune it.
    For example, if you're doing replaceConnection or setTableLocation, you may just want to do it once to the rpt file during deployment, so you'd not need to change the connection info every time the report is run.
    Saving to application context isn't something that CRJ is designed for - it's designed to have the ReportSource per-Session.
    Sincerely,
    Ted Ueda

  • Crystal Reports 13 VS2010 Report does not display new data

    The project is written in VS2010 connecting to an Access 2007 DB.  It is running on a local network.  All reports work fine from the standpoint that data is displayed on the reports HOWEVER, if a data table is updated the newley entered records do not show up on the report yet when I examine the database the records have been added to the table.
    I hit refresh and the new records still do not appear.  I've closed out the session and re-started the software and the records do not appear.  It's almost as if the DB is 'frozen'.  Suggestions?

    Hey Ludek,
    Problem with that sample is it hits the MDB directly and not the ODBC DSN. The Jet engine is being deprecated by MS so the solution is to use ODBC or OLE DB to any version of Access.
    I've posted this multiple times but here it is again:
    Try using the replace connection method to update the location of the DSN:
    private void ReplaceConnection_Click(object sender, EventArgs e)
    CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
    ISCDReportClientDocument rcd;
    rcd = rptClientDoc;
    rptClientDoc.DatabaseController.LogonEx("dwcb12003", "xtreme", "sb", "pw");
    //Create the logon propertybag for the connection we wish to use
    CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag logonDetails = new CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag();
    logonDetails.Add("Auto Translate", -1);
    logonDetails.Add("Connect Timeout", 15);
    logonDetails.Add("Data Source", "dwcb12003");
    logonDetails.Add("General Timeout", 0);
    logonDetails.Add("Initial Catalog", "Orders");
    logonDetails.Add("Integrated Security", "True");
    logonDetails.Add("Locale Identifier", 1033);
    logonDetails.Add("OLE DB Services", -5);
    logonDetails.Add("Provider", "SQLOLEDB");
    logonDetails.Add("Use Encryption for Data", 0);
    logonDetails.Add("Owner", "dbo"); // schema
    //Create the QE (query engine) propertybag with the provider details and logon property bag.
    CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag QE_Details = new CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag();
    QE_Details.Add("Database DLL", "crdb_ado.dll");
    QE_Details.Add("QE_DatabaseName", "Orders");
    QE_Details.Add("QE_DatabaseType", "OLE DB (ADO)");
    QE_Details.Add("QE_LogonProperties", logonDetails);
    QE_Details.Add("QE_ServerDescription", "dwcb12003");
    QE_Details.Add("QE_SQLDB", "True");
    QE_Details.Add("SSO Enabled", "False");
    QE_Details.Add("Owner", "dbo");
    CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo newConnInfo = new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
    CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo oldConnInfo;
    CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfos oldConnInfos;
    oldConnInfos = rcd.DatabaseController.GetConnectionInfos(null);
    for (int I = 0; I < oldConnInfos.Count; I++)
    oldConnInfo = oldConnInfos;
    newConnInfo.Attributes = QE_Details;
    newConnInfo.Kind = CrystalDecisions.ReportAppServer.DataDefModel.CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;
    rcd.DatabaseController.ReplaceConnection(oldConnInfo, newConnInfo, null, CrystalDecisions.ReportAppServer.DataDefModel.CrDBOptionsEnum.crDBOptionDoNotVerifyDB);
    See if that works for you. You'll have to change the info to ODBC from OLE DB. You can get the info from an app also, Ludek has a link to it, it will generate code to use RAS to set log on info...
    Don

  • Failed to load database information. Error in File temp_

    Our environment:
    Windows Server 2012 R2 Data-center Edition 64 bit
    Visual Studio Pro 2013 Version 12.0.3.30110.00 Update 1
    .Net 4.5.51641
    Crystal Reports for VS 2013 V13.0.9.1312
    Oracle ODAC 11.2.0
    We created a winform application to generate a form letter report that runs fine within the IDE. When we build the the exe and copy it from the project folder to a folder on the C:\drive of this same pc and try to execute it we get these error messages (partial list);
    CrystalDecisions.CrystalReports.Engine.DataSourceException: Failed to load database information.
    Error in File temp_d55286fc-26ee-4216-9062-3e32380313ab {B640FD39-66AC-4B6E-995D-7218BB48A992}.rpt:
    Failed to load database information. ---> System.Runtime.InteropServices.COMException: Failed to load database information.
    Error in File temp_d55286fc-26ee-4216-9062-3e32380313ab {B640FD39-66AC-4B6E-995D-7218BB48A992}.rpt:
    Failed to load database information.
       at CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.ReplaceConnection(Object oldConnection, Object newConnection, Object parameterFields, Object crDBOptionUseDefault)
       at CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val, Type type)
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
       --- End of inner exception stack trace ---
       at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)
       at cr3Test.Form1.Form1_Load(Object sender, EventArgs e)
    Here is the app:
    Imports System.Data.OleDb
    Imports System.Data
    Imports System
    Imports System.Windows.Forms
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Dim crReportDocument As New CrystalReport3()
            Dim DataSet1 As DataSet
            Dim adoOleDbConnection As OleDbConnection
            Dim adoOleDbDataAdapter As OleDbDataAdapter
            Dim connectionString As String = ""
            connectionString = "Provider=OraOLEDB.Oracle;"
            connectionString += "Data Source=ourdb;"
            connectionString += "User ID=ouruserid;Password=ourpsw"
            adoOleDbConnection = New OleDbConnection(connectionString)
            Dim sqlString As String = "select * from TEMP_FRI_LETTERS"
            adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection)
            DataSet1 = New DataSet()
            adoOleDbDataAdapter.Fill(DataSet1, "TEMP_FRI_LETTERS")
            'Dim xmlPath As String = "C:\Temp\test.xml" ' use these two statment s to verify dataset works
            'DataSet1.WriteXml(xmlPath, XmlWriteMode.WriteSchema)
            crReportDocument.SetDataSource(DataSet1)
            crReportDocument.PrintOptions.PrinterName = "HP_LaserJet_4350_PCL_5e_Info_Tech"
            crReportDocument.Refresh()
            crReportDocument.PrintToPrinter(1, False, 0, 0)
            DataSet1.Dispose()
            adoOleDbDataAdapter.Dispose()
            adoOleDbConnection.Close()
            adoOleDbConnection.Dispose()
            crReportDocument.Dispose()
            Me.Close()
        End Sub
    End Class
    Here is the app.config:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup useLegacyV2RuntimeActivationPolicy="true">
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    We have the CPU set to x86 as we are ultimately trying to generate a 32 bit app for XP and Win 7. We only installed the 32 bit run time on this pc because we have no intention of going to 64 bit apps on the clients. Are there additional dlls or something that has to be installed in the same folder as the exe on this development machine.
    Bruce

    Looking at the AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_myprograminfo led us to the last dll loaded being:
    LoadedModule[211]=C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\crdb_adoplus_res_en.dll
    State[0].Key=Transport.DoneStage1
    State[0].Value=1
    FriendlyEventName=Stopped working
    Scanning the community for "crdb_adoplus_res_en.dll" we got a hot on this issue again:
    Failed to load database information. Error in File temp_
    From the above we found this:
    1. the app.exe.config is all in one package which cannot be separated with the EXE file.
    2. the supporting component such as dll files, app.exe.config etc CANNOT be combined into the EXE file
    Adding the cr3Test.exe.config to the same folder as the cr3Test.exe RESOLVED the problem on Win 7. It also RESOLVED the problem on Server 2012 R2.
    We still need to test on Server 2008 R2 but we are hopeful when that time comes.
    Thanks.
    Bruce

  • Sub-reports DO NOT WORK in Crystal for Eclipse v2

    Hi,<br />
    <br />
    We have recently upgraded from Crystal JRC to CR4E 12.2.202. Our application updates the JDBC connections at runtime to supply credentials.<br />
    <br />
    Everything seems to be working except sub reports.  When using sub reports we get the error shown below.<br />
    <br />
    On reading other forum posts, the top error about PropertyResourceBundle just seems to be about trying <br/>
    to print an error message from the real exception, which is in the third stack trace below: <br/>
    <i>Error code:-2147217394 Error code name:missingParameterValueError</i><br />
    <br/>
    Any idea what has changed and how we can resolve this issue?<br />
    <br />
    Thanks for your help.<br />
    <br />
    <br />
    06-25@16:48:52 39545 [http-8280-3] ERROR com.crystaldecisions.reports.common  - Failed to load the resource 'InternalFormatterException' from the bundle java.util.PropertyResourceBundle@66afc4.
    java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key InternalFormatterException<br />
         at java.util.ResourceBundle.getObject(Unknown Source)
         at java.util.ResourceBundle.getString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResourcesFactory.getLocalizedMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalException.getLocalizedMessage(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(Unknown Source)
         at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.a(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ds.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
         at au.com.esriau.dekho.crystal.Report.export(Report.java:135)
         at au.com.esriau.dekho.crystal.CrystalService.exportReport(CrystalService.java:37)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
         at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
         at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
         at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
         at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Unknown Source)<br /><br />
    06-25@16:48:52 39545 [http-8280-3] ERROR com.crystaldecisions.reports.common  - Failed to load the resource 'InternalFormatterException' from the bundle java.util.PropertyResourceBundle@66afc4.
    java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key InternalFormatterException<br />
         at java.util.ResourceBundle.getObject(Unknown Source)
         at java.util.ResourceBundle.getString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResourcesFactory.getLocalizedMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalException.getLocalizedMessage(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(Unknown Source)
         at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.a(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ds.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
         at au.com.esriau.dekho.crystal.Report.export(Report.java:135)
         at au.com.esriau.dekho.crystal.CrystalService.exportReport(CrystalService.java:37)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
         at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
         at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
         at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
         at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Unknown Source)<br /><br />
    06-25@16:48:52 39545 [http-8280-3] ERROR au.com.esriau.dekho.crystal.CrystalService  - InternalFormatterException
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKParameterFieldException: InternalFormatterException---- Error code:-2147217394 Error code name:missingParameterValueError<br />
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
         at au.com.esriau.dekho.crystal.Report.export(Report.java:135)
         at au.com.esriau.dekho.crystal.CrystalService.exportReport(CrystalService.java:37)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
         at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
         at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
         at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
         at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Unknown Source)
    Edited by: pjoyce on Jul 7, 2009 6:00 AM
    Edited by: pjoyce on Jul 7, 2009 8:36 AM

    We raised a support issue on this and was given a work around.
    With Crystal for Eclipse, you can no longer use "dynamically" generated sub report parameters, you must manually add the parameter to the sub report and apply a record level selection formula.
    Steps for the work around:
    1. Open the sub report and manually add a parameter field in the field explorer.  You can call it whatever you want, but make sure the data type is correct.  It should match the datatype that will be passed in by the main report.
    2. Click Report -> Selection formula -> Record
    3. Enter in a formula like this: {MYTABLE.ID} = {?subreportparam}
    4. Save and close
    5. Go back to the main report
    6. Right click the sub report -> Change sub report links
    7. Drag a report field into the fields to link list
    7. In sub report parameter field to use, select you're newly created parameter and click OK

  • Subreport linking problem after upgrading to JRC 2.0

    Here's a little background of my environment before I get to the problem.  We have a suite of reports that were developed with CR4E ~v1.04 in Eclipse 3.3.1.  I only used the plugin for setting up the pojo data sources and then did the report development in the standalone Crystal Reports Designer XI, and would then import the report back into Eclipse.
    This week I installed the new 2.0 runtime jars and also update the eclipse plugin to version 1.07(we aren't in Eclipse 3.4 yet).  We have a few reports with multiple subreports for things such as agent totals, weekly totals etc.  A report layout might look like this.
    Agent 1
         Day1 info
         Day2 info
         Day3 info
         Agent 1 Total  (this would be a subreport)
    Agent 2
         Day1 info
         Day2 info
         Day3 info
         Agent 2 Total   (this would be a subreport)
    After the upgrade, when a report is generated, the subreports only work the first time they appear in the report.  So in the above example, 'Agent 1 Total' would be normal, but 'Agent 2 Total' would have no data.  Any non data related formatting will show up, so the subreport is there, it's just not able to get the right data from the subreport links.  I have verified the data is there both by debugging the services(which haven't changed) and removing the subreport links, thus having all the data show up for each subreport.  The fields that are used to link from the main report to the subreport have the correct value at the time the subreport is used.  I have tried both regular pojo fields and formulas fields to link the subreports, and the problem happens either way.  Please advise.
    Thanks,
    Cameron

    Similar problem from old version to new version(there isn't change in the changeDataSource method..): same report with 1 subreport in old version work well but with new version there is that error:
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKParameterFieldException: InternalFormatterException---- Error code:-2147217394 Error code name:missingParameterValueError
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at report.CRJ12.main
    i've use log4j to have better information about the error (that is the first part of the log)
    ERROR [main] (?:?) - Failed to load the resource 'InternalFormatterException' from the bundle java.util.PropertyResourceBundle@1cbf6bb.
    java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key InternalFormatterException
         at java.util.ResourceBundle.getObject(Unknown Source)
         at java.util.ResourceBundle.getObject(Unknown Source)
         at java.util.ResourceBundle.getString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadString(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResources.loadMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalResourcesFactory.getLocalizedMessage(Unknown Source)
         at com.crystaldecisions.reports.common.CrystalException.getLocalizedMessage(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(Unknown Source)
         at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.a(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ds.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at report.CRJ12.main(CRJ12.java:442)
    Edited by: Andrea Bonf on Feb 13, 2009 10:14 AM

  • Crystal Report JRC and JNDI problem

    I need to convert one of our internal web application from using Crystal Report Server 10 RAS to using Crystal Report XI Java Component (JRC). I found several examples from SAP/BusinessObjects but am stuck with a database connectivity problem.
    The basic enviornment info:
    JBoss 4.0.3 SP1
    Crystal Report JRC XI
    Windows XP/Server 2003
    JDK 1.5.x
    MS SQL Server 2005
    The error I am getting is "Error finding JNDI name (xxx)", although the application is already using the same JNDI and was able to display data on the web.
    I added debug code:
                    Context initialContext = null;
                    try {
                        initialContext = new InitialContext();
                        DataSource ds = (DataSource) initialContext.lookup("java:MYAPP");
                        String t = ds.toString();
                        log.debug(t);
                    } catch (NamingException e) {
                        log.error(e);
    I was able to get the data source successfully. The actual report file uses JDBC with JNDI named as "MYAPP". When I call the viewer, it gives
    Error finding JNDI name (MYAPP)
    message.
    Any comment or help would be appreciated.
    Thanks.

    How are you setting your connection info?
    This is what we do:
    IConnectionInfo connectionInfo = new ConnectionInfo();
    PropertyBag propertyBag = new PropertyBag();                    
    propertyBag.put("JNDI Datasource Name", reportJndiName);
    propertyBag.put("Database DLL", DATABASE_DLL); // required!!! (but we don't actually provide a DLL, or even run in windows)
    connectionInfo.setAttributes(propertyBag);
    connectionInfo.setKind(ConnectionInfoKind.SQL);
    ConnectionInfos connectionInfos = databaseController.getConnectionInfos(null);
    IConnectionInfo oldConnectionInfo = connectionInfos.getConnectionInfo(0);
    databaseController.replaceConnection(oldConnectionInfo, connectionInfo, null, DBOptions._useDefault );

  • Trying to change the data source for a Crystal Report.

    <p>The method below represents my best attempt to programatically change the data source of a Crystal Report. The goal is to have a routine that will update the data source for reports after they have been distributed to production servers. So far I have not been successful in saving the report back to the CMS. No exceptions are thrown, but when I view the Database Configuration of the report in the CMC nothing has changed.
    </p>
    <p>
    Am I missing a step, or is there another way to accomplish this?
    </p>
    <p>
    Thank you.
    </p>
    <hr />
    <pre>
    private void test(String reportName)
       throws SDKException, ReportSDKException, java.io.IOException
       IInfoObjects newInfoObjects;
       IInfoObject reportObj;
       ReportClientDocument clientDoc = new ReportClientDocument();
       DatabaseController dc;
       PropertyBag pBag;
       PropertyBag logonProps;
       ConnectionInfo newConInfo;
       ConnectionInfo oldConInfo;
       ConnectionInfos conInfos;
       int connOptions = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB; //0;
       Fields connFields = null;
       String queryStr = "Select * From CI_INFOOBJECTS " +
          "Where SI_NAME='wfr.rpt' AND SI_KIND='CrystalReport' AND SI_INSTANCE=0";
       newInfoObjects = getCms().executeQuery(queryStr);
       if(newInfoObjects.size() > 0)
          reportObj = (IInfoObject)newInfoObjects.get(0);
          try
             clientDoc = getCms().getReportAppFactory().openDocument(
                reportObj
                , OpenReportOptions._refreshRepositoryObjects
                , java.util.Locale.US);
             dc = clientDoc.getDatabaseController();
             conInfos = dc.getConnectionInfos(null);
             for(int i = 0; i < conInfos.size(); ++i)
                oldConInfo = (ConnectionInfo)conInfos.getConnectionInfo(i);
                newConInfo = (ConnectionInfo)oldConInfo.clone(true);
                pBag = newConInfo.getAttributes();
                pBag.putStringValue("QE_ServerDescription", "alio");
                logonProps = new PropertyBag();
                logonProps.putStringValue("Trusted_Connection", "false");
                logonProps.putStringValue("Server", "alio");
                pBag.put("QE_LogonProperties", logonProps);
                newConInfo.setUserName("admin");
                newConInfo.setPassword("password");
                dc.replaceConnection(
                   oldConInfo
                   , newConInfo
                   , connFields
                   , connOptions);
          catch(ReportSDKServerException Ex)
             String msg = "A server error occured while processing the " + reportObj.getKind()
                + " object, " + reportObj.getTitle() + " (" + reportObj.getCUID() + "), from the CMS.";
             Utility.errorOut(msg, Ex);
          catch(Exception Ex)
             String msg = "An error occured while processing the " + reportObj.getKind()
                + " object, " + reportObj.getTitle() + " (" + reportObj.getCUID() + "), from the CMS.";
             Utility.errorOut(msg, Ex);
          finally
             clientDoc.save();
             getCms().commitToInfoStore(newInfoObjects);
             clientDoc.close();
    </pre>
    Edited by: Mark Young on Sep 10, 2009 2:16 PM

    <style type="text/css">
    /<![CDATA[/
        body
            font-size: 1.125em;
              font-family: helvetica,arial,"sans-serif";
          .code{font-family: "courier new",courier,mono,monospace}
          .bi{font-style: italic; font-weight: bold;}
    /]]>/
    </style>
    <p>Justin,</p>
    <p>
    Thank you for the reply. Time constraints have not allowed me to post back to this tread
    till now. I will try your suggestion. My assumption is that <i>Save the report back to the
    info store</i> refers to <span class="code">IInfoStore.commit(IInfoObjects)</span>.
    </p>
    <p>
    I'm afraid that I do not understand why I don't want to change the report client document,
    or why <i>successfully exporting the report with the new login/password</i> is not what I
    want to do. Any explanation on that statement would be appreciated.
    </p>
    <p>
    I did find a way to accomplish my goal. It involved adding the SSOKEY property to the
    logon property bag. Below you'll see my revised code which modifies the report logon and
    server. I have no idea what
    this does, and SAP support has not been able to tell me why it works. However, what I
    discovered is that if I changed the report option, <b>Database Configuration -> When
    viewing report:</b>, in the CMS to <span class="bi">Use same database logon as when report
    is run</span> from <span class="bi">Prompt the user for database logon</span>, then the
    SSOKEY property had been added to the logon property bag having an empty string as its
    value. This allowed me to successfullyupdate and save the modified logon back to the CMS.
    </p>
    <p>
    So I took a chance and added code to always add the SSOKEY property with an empty string
    as its value, and I could then successfully modify and save the report's logon info
    and server. Again, I don't know what this means, but it has worked so far. If anyone has
    some insight or comments, either are welcome. Thank you in advance.
    </p>
    <br />
    <hr />
    <pre>
    private void changeDataSourceOfAWFCrystalReports()
       throws SDKException, ReportSDKException, java.io.IOException
       IInfoObjects newInfoObjects = null;
       IInfoObject reportObj = null;
       IReport curReport = null;
       ReportClientDocument clientDoc = new ReportClientDocument();
       DatabaseController dbController;
       PropertyBag pBag;
       PropertyBag logonProps;
       ConnectionInfo newConInfo;
       ConnectionInfo oldConInfo;
       ConnectionInfos conInfos;
       int connOptions = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
       Fields connFields = null;
       String outputStr;
       int numOfReports;
       int numOfQueryPages;
       double progressIncrementPerPage = 30;
       int progressIncrementPerReport = 0;
       // Path query to reports is in a .properties file.
       String queryStr = getAppSettingsFile().getWscAwfCrystalReportPathQuery();
       try
          // Executes IInfoStore.getPageingQuery() and generates a list of queries.
          getCms().setPathQueryQueries(queryStr, 100);
          numOfQueryPages = 0;
          // Gets a List&lt;String&gt; of the IPageResult returned from IInfoStore.getPageingQuery().
          if(getCms().getPathQueryQueries() != null)
             numOfQueryPages = getCms().getPathQueryQueries().size();
          if(numOfQueryPages &gt; 0)
             // Use 30% of progress bar for the following loop.
             progressIncrementPerPage = Math.floor(30.0/(double)numOfQueryPages);
          for(int queryPageIndex = 0; queryPageIndex &lt; numOfQueryPages; ++queryPageIndex)
             // Gets the IInfoObjects returned from the current page query
             newInfoObjects = getCms().getPathQueryResultSetPage(queryPageIndex);
             numOfReports = newInfoObjects.size();
             if(newInfoObjects != null && numOfReports &gt; 0)
                progressIncrementPerReport =
                   Math.round((float)Math.floor(progressIncrementPerPage/(double)numOfReports));
                for(int reportIndex = 0; reportIndex &lt; numOfReports; ++reportIndex)
                   reportObj = (IInfoObject)newInfoObjects.get(reportIndex);
                   curReport = (IReport)reportObj;
                   clientDoc = getCms().getReportAppFactory().openDocument(
                      reportObj
                      , OpenReportOptions._refreshRepositoryObjects
                      , java.util.Locale.US);
                   dbController = clientDoc.getDatabaseController();
                   conInfos = dbController.getConnectionInfos(null);
                   for(int conInfosIndex = 0; conInfosIndex &lt; conInfos.size(); ++conInfosIndex)
                      oldConInfo = (ConnectionInfo)conInfos.getConnectionInfo(conInfosIndex);
                      newConInfo = (ConnectionInfo)oldConInfo.clone(true);
                      pBag = newConInfo.getAttributes();
                      pBag.putStringValue(
                         "QE_ServerDescription"
                         ,getConfigFile().getDBDataSourceConnections());
                      logonProps = new PropertyBag();
                      logonProps.putStringValue("Trusted_Connection", "false");
                      <b>logonProps.putStringValue("SSOKEY", "");</b>
                      logonProps.putStringValue(
                         "Server"
                         ,getConfigFile().getDBDataSourceConnections());
                      pBag.put("QE_LogonProperties", logonProps);
                      newConInfo.setUserName(getConfigFile().getUNVConnectionUserName());
                      newConInfo.setPassword(getConfigFile().getUNVConnectionPasswordDecrypted());
                      dbController.replaceConnection(
                         oldConInfo
                         , newConInfo
                         , connFields
                         , connOptions);
                      newConInfo = (ConnectionInfo)conInfos.getConnectionInfo(conInfosIndex);
                   } // end for on conInfosIndex
                   clientDoc.save();
                } // end for on reportIndex
             } // end if on newInfoObjects
          } // end for on queryPageIndex
       } // end try
       catch(ReportSDKServerException Ex)
          // handle...
       catch(Exception Ex)
          // handle...
       finally
          getCms().commitToInfoStore(newInfoObjects);
          if(clientDoc != null)
             clientDoc.close();
    </pre>

  • RequestTimeout error while attempting to connect to the Crystal Server

    Hi Guys,
    We use Crystal Server 2008, along with an automated java tool that updates the JNDI name for the database. Both the java tool and the Crystal Server reside on the same box, and communicate via TCP/IP.
    Recently, we had some space added to the Crystal Server box (around 10 GB). Since then, I am seeing this problem when I invoke the java tool. It started off as an occasional problem, but now is consistent. I have attached the error below.
    Has anyone every come across anything like this? We had multiple pairs of eyes look into this problem, and all signs point to a Network Issue, even though both the client and the server are on the same box.
    Any help in this matter is much appreacited.
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: The request timed out because there has been no reply from the server for 600,000 milliseconds.---- Error code:-2147217385 Error code name:requestTimeout
            at com.crystaldecisions.sdk.occa.report.lib.ReportSDKException.throwReportSDKException(Unknown Source)
            at com.crystaldecisions.sdk.occa.managedreports.ras.internal.CECORBACommunicationAdapter.a(Unknown Source)
            at com.crystaldecisions.sdk.occa.managedreports.ras.internal.CECORBACommunicationAdapter.request(Unknown Source)
            at com.crystaldecisions.proxy.remoteagent.y.a(Unknown Source)
            at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
            at com.crystaldecisions.sdk.occa.report.application.cf.a(Unknown Source)
            at com.crystaldecisions.sdk.occa.report.application.DatabaseController.replaceConnection(Unknown Source)
            at com.americanwell.caretalks.reports.cr.CrystalReportServerAdminUtils.updateJndiAliasForRptFiles(Unknown Source)
            at com.americanwell.caretalks.reports.cr.CrystalReportServerAdminUtils.updateJndiDatasource(Unknown Source)
            at com.americanwell.caretalks.reports.cr.CrystalReportServerAdminUtils.updateJndi(Unknown Source)
            at com.americanwell.caretalks.reports.cr.CrystalReportServerAdminUtils.run(Unknown Source)
            at com.americanwell.caretalks.reports.cr.CrystalReportServerAdminUtils.main(Unknown Source)
    OK - Logoff from Crytal Reports Server
    Thanks a lot,
    Jayash

    What if you try to increase the request timeout? what happens.
    To do that you can copy the clientSDKOptions.xml file  located per default to the following location <BO install path>\Business Objects\common\4.0\java\lib to the classpath of your application then Open clientSDKOptions.xml and change CORBARequestTimeOut from 600000 to a value large enough to allow the report to render, for instance 1200000.
    Default vaule is 600000 (10 minutes)
    You can also trace your application based on the Java RAS SDK by doing the following:
    To enable RAS Java SDK trace, make the following modifications:
    1- In an entry module for your application, insert this line:
    System.setProperty("ras.config", configPath);
    ====================
    NOTE:
    " configPath is the path to the clientSDKOptions.xml file (for example, String configPath = "C:
    ====================
    2- Add the <RequestRecordingOptions> element to the clientSDKOptions.xml file as follows:
    <CrystalReports.ClientSDKOptions xmlns:xsi="HTTP://www.w3.org/1999/XMLSchema-instance" version="2" xsi:type="CrystalReports.ClientSDKOptions">
    <ServerInfos version="2" xsi:type="CrystalReports.ServerInfos" id="1">
    </ServerInfos>
    <RequestRecordingOptions version="1.0" xsi:type="CrystalReports.RequestRecordingOptions" id="3">
    <RecordRequests>true</RecordRequests>
    <RecordRequestsOutputDir>C:/</RecordRequestsOutputDir>
    <RecordSecurityContext>true</RecordSecurityContext>
    <RecordSucceededResultDetails>true</RecordSucceededResultDetails>
    </RequestRecordingOptions>
    </CrystalReports.ClientSDKOptions>
    Thanks

  • Error loading JDBC driver

    Hi,
    I have an rpt file developed in crystal report 2008. it connects to SQL Server using ODBC(RDO) connection. I have a jsp file that needs to change the datasource to use JDBC (JNDI). The scriptlet for changing datasource is given below. I have my sqljdbc.jar in the web-inf\lib folder of my application as well as in \server\{server_name}\lib folder. when I try to run the jsp it gives me error as follows :
    ERROR [com.businessobjects.reports.sdk.JRCCommunicationAdapter]  detected an exception: Error loading JDBC driver.  The class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' could not be found.
         at com.crystaldecisions.reports.queryengine.Connection.t1(Unknown Source)
         at com.crystaldecisions.reports.dataengine.dfadapter.DFAdapter.a(Unknown Source)
         at com.crystaldecisions.reports.dataengine.dfadapter.DFAdapter.for(Unknown Source)
         at com.crystaldecisions.reports.reportdefinition.ReportHelper.a(Unknown Source)
         at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.long(Unknown Source)
         at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(Unknown Source)
         at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.byte(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(Unknown Source)
         at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.a(Unknown Source)
         at com.businessobjects.sdk.erom.jrc.a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ds.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at ....
    <br>
    <br>
    Scriptlet :
    <%
    //Report can be opened from the relative location specified in the CRConfig.xml, or the report location
    //tag can be removed to open the reports as Java resources or using an absolute path (absolute path not recommended
    //for Web applications).
    final String DBUSERNAME = "sa";
    final String DBPASSWORD = "password";
    final String CONNECTION_STRING = "!com.microsoft.jdbc.sqlserver.SQLServerDriver!jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=;user=;password=";
    final String TRUSTEDCON = "false";
    final String PREQESERVERNAME = "jdbc:microsoft:sqlserver://localhost:1433";
    final String SERVERTYPE = "JDBC (JNDI)";
    final String DATABASE_DLL = "crdb_jdbc.dll";
    final String DATABASE = "bssc";
    final String DBCLASSNAME = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    final String USEJDBC = "true";
    final String DATABASE_NAME = "bssc";
    final String SERVERNAME = "jdbc:microsoft:sqlserver://localhost:1433";
    final String CONNECTIONURL = "jdbc:microsoft:sqlserver://localhost:1433";
    final String SERVER = "localhost";
    %>
    <%          
              final Logger logger = Logger.getLogger(ReportAction.class.getName());
              final String REPORT_NAME = "../reports/Krt.rpt";
    try {
              ReportClientDocument oReportClientDocument = new ReportClientDocument();
              oReportClientDocument.open(REPORT_NAME, 0);
         // Create the two connectioninfo objects to use
         IConnectionInfo oldConnectionInfo =  new ConnectionInfo();
         IConnectionInfo newConnectionInfo = new ConnectionInfo();
         // Assign the old Connection info to the reports current info
         DatabaseController dbController = oReportClientDocument.getDatabaseController();
         oldConnectionInfo = dbController.getConnectionInfos(null).getConnectionInfo(0);                                       
         // If this connection needed parameters, we would use this field.      
         Fields pFields = null;
         // Create a new propertybag for the new location
         PropertyBag boPropertyBag1 = new PropertyBag();
         // Set new table logon properties
         boPropertyBag1.put("JDBC Connection String", CONNECTION_STRING);
         boPropertyBag1.put("Trusted_Connection", TRUSTEDCON);
         boPropertyBag1.put("PreQEServerName", PREQESERVERNAME);
         boPropertyBag1.put("Server Type", SERVERTYPE);
         boPropertyBag1.put("Database DLL", DATABASE_DLL);
         boPropertyBag1.put("Database", DATABASE);
         boPropertyBag1.put("Database Class Name", DBCLASSNAME);
         boPropertyBag1.put("Use JDBC", USEJDBC);
         boPropertyBag1.put("Database Name", DATABASE_NAME);
         boPropertyBag1.put("Server Name", SERVERNAME);
         boPropertyBag1.put("Connection URL", CONNECTIONURL);
         boPropertyBag1.put("Server", SERVER);
         // Assign the properties to the connection info
         newConnectionInfo.setAttributes(boPropertyBag1);
         // Set the DB Username and Pwd
         newConnectionInfo.setUserName(DBUSERNAME);
         newConnectionInfo.setPassword(DBPASSWORD);
         // The Kind of connectionInfos is SQL
         newConnectionInfo.setKind(ConnectionInfoKind.SQL);
         // set the parameters to replace.
         // The 4 options are:
         // _doNotVerifyDB
         // _ignoreCurrentTableQualifiers
         // _mapFieldByRowsetPosition
         // _useDefault 
         int replaceParams = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
         // Now replace the connections      
         dbController.replaceConnection(oldConnectionInfo, newConnectionInfo, pFields, replaceParams);
    %>
    <%
    //Report can be opened from the relative location specified in the CRConfig.xml, or the report location
    //tag can be removed to open the reports as Java resources or using an absolute path (absolute path not recommended
    //for Web applications).
    final String DBUSERNAME = "sa";
    final String DBPASSWORD = "password";
    final String CONNECTION_STRING = "!com.microsoft.jdbc.sqlserver.SQLServerDriver!jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=;user=;password=";
    final String TRUSTEDCON = "false";
    final String PREQESERVERNAME = "jdbc:microsoft:sqlserver://localhost:1433";
    final String SERVERTYPE = "JDBC (JNDI)";
    final String DATABASE_DLL = "crdb_jdbc.dll";
    final String DATABASE = "bssc";
    final String DBCLASSNAME = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    final String USEJDBC = "true";
    final String DATABASE_NAME = "bssc";
    final String SERVERNAME = "jdbc:microsoft:sqlserver://localhost:1433";
    final String CONNECTIONURL = "jdbc:microsoft:sqlserver://localhost:1433";
    final String SERVER = "localhost";
    %>
    <%          
              final Logger logger = Logger.getLogger(ReportAction.class.getName());
              final String REPORT_NAME = "../reports/Krt.rpt";
    try {
              ReportClientDocument oReportClientDocument = new ReportClientDocument();
              oReportClientDocument.open(REPORT_NAME, 0);
         // Create the two connectioninfo objects to use
         IConnectionInfo oldConnectionInfo =  new ConnectionInfo();
         IConnectionInfo newConnectionInfo = new ConnectionInfo();
         // Assign the old Connection info to the reports current info
         DatabaseController dbController = oReportClientDocument.getDatabaseController();
         oldConnectionInfo = dbController.getConnectionInfos(null).getConnectionInfo(0);                                       
         // If this connection needed parameters, we would use this field.      
         Fields pFields = null;
         // Create a new propertybag for the new location
         PropertyBag boPropertyBag1 = new PropertyBag();
         // Set new table logon properties
         boPropertyBag1.put("JDBC Connection String", CONNECTION_STRING);
         boPropertyBag1.put("Trusted_Connection", TRUSTEDCON);
         boPropertyBag1.put("PreQEServerName", PREQESERVERNAME);
         boPropertyBag1.put("Server Type", SERVERTYPE);
         boPropertyBag1.put("Database DLL", DATABASE_DLL);
         boPropertyBag1.put("Database", DATABASE);
         boPropertyBag1.put("Database Class Name", DBCLASSNAME);
         boPropertyBag1.put("Use JDBC", USEJDBC);
         boPropertyBag1.put("Database Name", DATABASE_NAME);
         boPropertyBag1.put("Server Name", SERVERNAME);
         boPropertyBag1.put("Connection URL", CONNECTIONURL);
         boPropertyBag1.put("Server", SERVER);
         // Assign the properties to the connection info
         newConnectionInfo.setAttributes(boPropertyBag1);
         // Set the DB Username and Pwd
         newConnectionInfo.setUserName(DBUSERNAME);
         newConnectionInfo.setPassword(DBPASSWORD);
         // The Kind of connectionInfos is SQL
         newConnectionInfo.setKind(ConnectionInfoKind.SQL);
         // set the parameters to replace.
         // The 4 options are:
         // _doNotVerifyDB
         // _ignoreCurrentTableQualifiers
         // _mapFieldByRowsetPosition
         // _useDefault 
         int replaceParams = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
         // Now replace the connections      
         dbController.replaceConnection(oldConnectionInfo, newConnectionInfo, pFields, replaceParams);
    %>
    I am not sure why it is not able to get the Driver since the required jar is there in lib folder? Am I missing something ?
    Edited by: sb-onward on Jul 30, 2009 6:01 PM

    Hi,
    Make sure you have set the Classpath in CRConfig.xml for the jdbc jar.
    Place the CrConfig.xml  in the classes directory of your application.
    Please let me know the results.
    Regards,
    Neeraj

Maybe you are looking for

  • Light framework page

    Hi to all, i'm working to light framework page, to create an external facing portal. But i don't know where i can find the default light navigation iViews. Can someone tellme where i can find it? Thanks to all, Anna

  • Blue patterned dots in my .jpgs on Cinema Display

    All of a sudden I have blue dots in the darks in my .jpgs I view on my 10 year old Cinema Display. The Display is looped thru my MBP as a second monitor. It is like it's warning of the blacks being too dark??? Only shows in the blacks not highlights.

  • Pushing notifications to android emulator behind a proxy

    Hi Guys  I hope this is the correct place to ask this question - if not please direct me. I'm attempting to build an android app (in the emulator) that receives push notifications from Azure/gcm. I'm also using eclipse ADT in a windows 8.1 for the an

  • How to learn Report development techniques

    Hi experts,                I am a beginner to ABAP.                I want to enhance  my Report developing techniques.                How can i develop it.                Is there any site which will help.                I want to if there are any bo

  • Western Digital Duo and TM locking up.

    I have a Western Digital Duo.  I use it as a network storage, backup, and itunes library.  When I access itunes, all future timed TM backups are rejected with the message that the disk is in use even if I am out of itunes.  I have to reset the storag