If you have tried to use some of the code samples thus far, you might have found that your reports were failing to run when scheduled. One of the causes of this is a lack of database credentials. Keep in mind that Crystal Reports stores all the connection information for the database inside the report except the password. Therefore, this needs to be set at runtime. The easiest way to do this is to type it in manually in the Crystal Management Console and save it with the InfoObject (shown in Figure 35.4). However, sometimes there are many reports and this manual step becomes unrealistic. In this case, the reports credentials can be set programmatically.
To set a reports credentials, call the getReportLogons method of the IReport interface. This returns a Crystal Enterprise collection interface called ISDKList. The reason there is a collection of report credentials is that some reports point to multiple data sources that each have their own respective credentials. These reports are rare though, so assume a collection of only one element. Calling the get method returns an IReportLogon interface. Here you can call the setUserName and setPassword methods as shown in the following code:
IInfoObjects results = iStore.query("SELECT * FROM CI_INFOOBJECTS WHERE " + "SI_NAME=World Sales Report AND SI_INSTANCE=0"); IInfoObject infoObject = (IInfoObject) results.get(0); IReport report = (IReport) infoObject; ISDKList list = report.getReportLogons(); IReportLogon logon = (IReportLogon) list.get(0); logon.setUserName("username"); logon.setPassword("password"); ISchedulingInfo sched = infoObject.getSchedulingInfo(); iStore.schedule(results);
There are other methods available from the IReportLogon method such as setCustomServerName and setCustomerDatabaseName that enable you to point the report at a different database and server at schedule-time if required.
Part I. Crystal Reports Design
Creating and Designing Basic Reports
Selecting and Grouping Data
Filtering, Sorting, and Summarizing Data
Understanding and Implementing Formulas
Implementing Parameters for Dynamic Reporting
Part II. Formatting Crystal Reports
Fundamentals of Report Formatting
Working with Report Sections
Visualizing Your Data with Charts and Maps
Custom Formatting Techniques
Part III. Advanced Crystal Reports Design
Using Cross-Tabs for Summarized Reporting
Using Record Selections and Alerts for Interactive Reporting
Using Subreports and Multi-Pass Reporting
Using Formulas and Custom Functions
Designing Effective Report Templates
Additional Data Sources for Crystal Reports
Multidimensional Reporting Against OLAP Data with Crystal Reports
Part IV. Enterprise Report Design Analytic, Web-based, and Excel Report Design
Introduction to Crystal Repository
Crystal Reports Semantic Layer Business Views
Creating Crystal Analysis Reports
Advanced Crystal Analysis Report Design
Ad-Hoc Application and Excel Plug-in for Ad-Hoc and Analytic Reporting
Part V. Web Report Distribution Using Crystal Enterprise
Introduction to Crystal Enterprise
Using Crystal Enterprise with Web Desktop
Crystal Enterprise Architecture
Planning Considerations When Deploying Crystal Enterprise
Deploying Crystal Enterprise in a Complex Network Environment
Administering and Configuring Crystal Enterprise
Part VI. Customized Report Distribution Using Crystal Reports Components
Java Reporting Components
Crystal Reports .NET Components
COM Reporting Components
Part VII. Customized Report Distribution Using Crystal Enterprise Embedded Edition
Introduction to Crystal Enterprise Embedded Edition
Crystal Enterprise Viewing Reports
Crystal Enterprise Embedded Report Modification and Creation
Part VIII. Customized Report Distribution Using Crystal Enterprise Professional
Introduction to the Crystal Enterprise Professional Object Model
Creating Enterprise Reports Applications with Crystal Enterprise Part I
Creating Enterprise Reporting Applications with Crystal Enterprise Part II
Appendix A. Using Sql Queries In Crystal Reports
Creating Enterprise Reporting Applications with Crystal Enterprise Part II