The document provides instructions for installing and using the Advantage Crystal Reports Driver 7.0 to connect Crystal Reports to Advantage databases. Key points include: installing the driver DLL, creating new reports by selecting an Advantage alias, converting existing ODBC or BDE reports to use the driver, and notes on aliases, known issues, and frequently asked questions.
Headshots and Personal Branding by Julie King Photography
Readme
1. README.TXT Advantage Crystal Reports Driver 7.0
============ ================================== =============
Contents:
==========
1. What's New in v7.0
2. Requirements
3. Installation
4. Creating a New Report
5. Converting Existing ODBC Reports To Advantage
6. Converting Existing BDE Flat-File Reports To Advantage
7. SQL Issues (7200 errors)
8. Important Alias Notes
9. Known Problems
10. Frequently Asked Questions
1. What's New in v7.0
============================================
a) New Advantage functionality associated with the SQL engine:
* Added ability to execute SQL scripts via a semicolon delimited
list of SQL statements. Not only is executing scripts in this
fashion convenient, it can also increase performance, as the
statements are sent to the server in one request and processed
individually by the server. In low bandwidth situations, or when
executing a large script, this can result in a dramatic speed
increase. See the "Scripts" topic in the "Advantage SQL" |
"Supported Grammar" book in the Advantage Help file for details.
* Added transaction syntax support. BEGIN TRANSACTION, COMMIT WORK,
ROLLBACK WORK, and SET TRANSACTION statements are now supported.
* Added database permission GRANT and REVOKE statements.
* Added CREATE DATABASE and CREATE TRIGGER statements.
* All data dictionary metadata is now accessible through SQL system
tables and modifiable through system stored procedures. See the
"Advantage SQL" | "System Views" book in the Advantage Help file
for details.
* Added CAST scalar for precision data type conversions.
* Improved RAND scalar so that the number produced exhibits a
better "random" behavior.
* Added a virtual system table named iota. Iota is a table
with one logical (SQL_BIT) column named "iota" and has a single
row in the table with a NULL value in the "iota" column. The main
purpose of the IOTA table is to provide an efficient method for
evaluating an SQL expression on the server.
* Improved performance of some SQL operations that require temporary
sort files with larger data sets. For example, GROUP BY statement
performance may be more than 10 times faster on data sets of 1
million records and larger. In addition to GROUP BY statements,
this can improve the speed of UNION, DISTINCT, and ORDER BY
operations.
b) Miscellaneous new functionality:
* Added a highly optimized Full Text Search engine. It is possible
2. to search character, memo, and BLOB data using intuitive search
phrases constructed of words and logical operators. See the "Full
Text Search" topic in the Help file for details.
* Added support for compression of all network communications
between the client and the server. By default, compression is
only turned on for connections made over the Internet. See the
"Communications Compression" topic in the Advantage Help file
for details and to determine if turning on compression will help
your application's performance.
* Added support for triggers. A trigger is a piece of code (similar
to a stored procedure) that is executed on the server in response
to an insert, update, or delete operation. Triggers can provide a
very powerful means to maintain business rules at the database
level.
* Improved the performance of various database operations. For
example, one should expect performance improvements of 10% and
greater with insert/append operations, operations involving
Advantage Optimized Filters, and deleting of records when the
table contains one or more memo/BLOB fields.
* When creating new indexes on a table with many records or when
performing a reindex operation on a table with many records, the
creation of that index will be much faster in 7.0 than earlier
versions of Advantage Database Server. On tables with fewer than
100,000 records, the performance improvement may not be
significant. Tables with more than 100,000 records can expect up
to a 50% performance increase. Table with multiple millions of
records can expect even better performance increases, perhaps as
much as 300% faster. Increasing the Advantage Database Server
SORT_BUFFER configuration value can lead to even larger index
creation performance increases with very large tables.
* Added various Advantage Extended Procedure (AEP) Enhancements. A
new AEP interface has been developed, which includes the following
features:
- AEP is passed an active connection handle, as opposed to a
username and password. This active connection handle can be
used to perform all data operations; no additional
connections are required.
- AEPs can be called inside a transaction, and all operations
performed in the AEP using the active connection handle passed
to the AEP are included in the context of the transaction.
- Input and output parameters are passed through the virtual
tables __input and __output. No more parsing of input/output
table paths is necessary.
- An additional connection to read the input and output tables
is no longer necessary.
- An in-memory table (__error) can be used to return
descriptive error messages to the client application.
- The number of rows affected can be returned and used from the
client application just like it can with traditional SQL
INSERT/UPDATE/DELETE statements.
- New AEPs do not check user privileges when executing, which
allows you to hide tables from the user(s), but allow access
and modifications to those tables through AEPs that you
control.
- A combination of several of the above new features result in
overall better AEP performance than with earlier versions.
* Added new Money field data type for ADTs. This BCD-like field
allows for currency data stored internally as a 64-bit integer,
3. with 4 implied decimal digits from -922,337,203,685,477.5807 to
+922,337,203,685,477.5807. No precision will be lost when doing
calculations involving this data type.
* Added support for DBF memo and BLOB data encryption. If all
records in a DBF table are encrypted, all fields in the table will
be encrypted, including and memo and binary fields.
* Added support for fixed and keyset-driven Advantage Optimized
Filter (AOF) types in addition to the existing dynamic type when
used with the Advantage Database Server. These different AOF types
provide different levels of filter membership when used with
the Advantage Database Server (not Advantage Local Server). With
dynamic AOFs, filter membership is affected by modifications all
users make to record data. With keyset-driven AOFs, filter
membership is only affected by updates from the filter owner (the
table instance that set the filter). Updates made by other users
will not affect a record's membership in the filter. With fixed
AOFs, filter membership does not change. If other users modify
records, they will always remain visible within this fixed filter,
even if the changes have modified field values such that the
record no longer passes the original filter expression.
2. Requirements
============================================
a) Seagate Crystal Reports version 6,
Seagate Crystal Reports version 7 MR1 (Maintenance Release 1), or
Seagate Crystal Reports version 8
b) Advantage client DLLs version 7.0:
* P2SADS.DLL (Advantage Crystal Reports DLL)
* ACE32.DLL (Advantage Client Engine DLL)
* AXCWS32.DLL (Advantage Comm Layer DLL used when accessing the
Database Server)
* ADSLOC32.DLL (Advantage Local Server DLL)
c) Advantage Database Server or Advantage Local Server version 7.0
or greater
3. Installation
============================================
a) The Advantage Crystal Reports Driver consists of one DLL,
p2sads.dll. To install the driver, copy p2sads.dll into the
Windows Crystal DLL directory (e.g. - c:windowscrystal).
4. Creating a New Report
============================================
a) Crystal 6/7
To create a new report that uses the Advantage Crystal Reports
driver, create a new report as you normally would with Crystal.
When prompted to select the data you will be reporting on, choose
the 'SQL/ODBC' button. All Advantage alias entries will be shown
in the list in the format 'Advantage SQL - AliasName'. If you
have never configured an Advantage alias, see the 'Important
Alias Notes' section later in this readme for a description and
example ads.ini file. Select the desired Advantage entry in the
list and continue developing the report. This is the only
Advantage-specific selection you will have to make.
4. b) Crystal 8
To create a new report that uses the Advantage Crystal Reports
driver, create a new report as you normally would with Crystal.
When prompted to select the data you will be reporting on, choose
the 'Database' button. Expand the 'More Data Sources' tree item.
All Advantage alias entries will be shown in the list in the
format 'Advantage SQL - AliasName'. If you have never configured
an Advantage alias, see the 'Important Alias Notes' section later
in this readme for a description and example ads.ini file.
Select the desired Advantage entry in the list and continue
developing the report. This is the only Advantage-specific
selection you will have to make.
5. Converting Existing ODBC Reports To Advantage
================================================
To convert an existing ODBC report to use the Advantage driver
follow these steps:
a) Open the report
b) Choose 'Database' from the main menu
c) Choose 'Convert Database Driver...' from the Database menu
d) Check the 'Convert Database Driver on next Refresh'
checkbox
e) Find and select pdsads.dll in the drop-down list
f) Click OK
g) If the Advantage Alias dialog does not appear immediately
press the F5 key to force a refresh.
h) You will be prompted for an Advantage alias to use in this
report. Either select an existing alias from the list
provided, or click New to create a new alias.
NOTE - If converting from a Paradox ODBC datasource do not
check the 'Converting Report From BDE Driver' checkbox.
That checkbox is only for reports that were previously
using pdbbde.dll.
i) Click OK
j) Crystal may report that the base tables have changed and
ask you if you want to fix up the report. Click Yes for
each table.
k) If you have modified the original SQL statement in your report
for some reason (possibly to make it work with the Advantage
ODBC Driver, for example), it is best to
restore the statement to its original format. To do this:
1) Choose 'Database' from the main menu
2) Choose 'Show SQL Query...' from the Database menu
3) Click Reset
4) Refresh the report data (press F5)
6. Converting Existing BDE Flat-File Reports To Advantage
=========================================================
To convert an existing BDE report that is currently using
pdbbde.dll follow these steps:
a) Disable "smart" linking.
1) Choose 'File' from the main menu
2) Choose 'Options'
3) Select the 'Database' tab
4) Uncheck the 'Auto-SmartLinking' option
b) Open the report
c) Choose 'Database' from the main menu
d) Choose 'Convert Database Driver...' from the Database menu
e) Check the 'Convert Database Driver on next Refresh'
5. checkbox
f) Find and select pdsads.dll in the drop-down list
g) Click OK
h) If the Advantage Alias dialog does not appear immediately
press the F5 key to force a refresh.
i) You will be prompted for an Advantage alias to use in this
report. Either select an existing alias from the list
provided, or click New to create a new alias.
j) Check the 'Converting Report From BDE Driver' checkbox
k) Click OK
An informational dialog will be shown reminding you to
change each link in your report to the 'outer join' type.
See the note below for an explanation.
l) Crystal will report that the base tables have changed and
ask you if you want to fix up the report. Click Yes for
each table.
NOTE: All links in the report must be converted to the 'outer join'
link type in order to emulate the BDE flat file driver linking
behavior. The BDE flat file driver (pdbbde.dll) includes all
rows in a parent table in the result set, even if a matching
key value does not exist in the child table(s). This is
equivalent to an SQL left outer join. By default the Advantage
Crystal Driver uses standard SQL joins (inner joins) and will
not return rows unless they have matching keys in the child
table(s). For this reason, all links in a report previously
built using the pdbbde driver must be converted to left outer
join links in order to return the same results the original
report returned.
Follow these steps to change each link type:
a) Choose 'Database' from the main menu
b) Choose 'Visual Linking Expert...' from the Database menu
c) For each link in the report do the following:
1) Select the link by clicking on the link line
2) Click the 'Options...' button
3) Change the 'SQL Join Type' from 'Equal' to 'Left Outer'
d) Close the Visual Linking Expert
NOTE: Crystal Reports will leave the .db file extension on tables
referenced in the report, even after a database conversion
has been completed. The Advantage driver uses the table
basename in all instances, so this extension will not affect
the report generation or functionality.
7. SQL Issues (7200 errors)
============================================
If you have modified the original SQL statement in your report
for some reason (possibly to make it work with the Advantage
ODBC Driver, for example) and have problems with the native
Advantage driver parsing this SQL statement, it is best to
restore the statement to its original format. To do this:
a) Choose 'Database' from the main menu
b) Choose 'Show SQL Query...' from the Database menu
c) Click Reset
Try refreshing the report data (press F5). If problems still
persist post to the Advantage Crystal Driver newsgroup via
the Advantage Developer Zone Web site at
<http://Solutions.AdvantageDatabase.com>.
8. Important Alias Notes
6. ============================================
The Advantage Crystal Reports Driver utilizes Advantage aliases.
Advantage aliases are similar to the Delphi database alias.
Aliases are added to the [DATABASES] section in the ADS.INI file
located in the WINDOWS directory (by default). Advantage clients
use the search path to locate the ads.ini file, so this file can
be placed in your application's directory or anywhere in the search
path of the client machine. The key name is the name of the alias
and the value is the "Data Path", semi-colon, followed by the first
letter of the index type. For example, adding an alias name
"MyAlias" with a data path of "C:MYPATH" using index type ADT will
cause "MyAlias=C:MYPATH;A" to be written to the ADS.INI file under
the [DATABASES] section.
Example ADS.INI file:
[Settings]
ADS_SERVER_TYPE=2
[Databases]
ADS_ADT=x:MyAdtFiles;A
ADS_CDX=x:MyDbfFiles;C
ADS_DD=x:MyFilesmydiction.add;D
Explanation of the ADS_SERVER_TYPE key:
The ADS_SERVER_TYPE key in the ADS.INI file can be used to select
the Advantage server type(s) to use when obtaining an Advantage
server connection. The available Advantage Server types are
ADS_REMOTE_SERVER which is the Advantage Database Server,
ADS_AIS_SERVER which is the Advantage Internet Server, and
ADS_LOCAL_SERVER which is the Advantage Local Server. These
Advantage server type constants are defined in the ACE.H, ACE.PAS,
and ACE32.BAS files. ADS_REMOTE_SERVER has the value 2,
ADS_AIS_SERVER has the value 4, and ADS_LOCAL_SERVER has the
value 1. For example, if you wanted your Advantage application to
attempt to connect to all Advantage server types, if necessary, you
need to set the value for the ADS_SERVER_TYPE key to 7 (1 + 2 + 4
= 7). The default ADS_SERVER_TYPE value is to use ADS_REMOTE_SERVER
and ADS_AIS_SERVER, which is 6 (2 + 4 = 6).
9. Known Problems
============================================
a) "Disappearing Links" issue: Links that exist on a compound index
key are not preserved when converting BDE reports to the
Advantage Crystal Driver. The current work-around is to open
the Visual Linking Expert and manually restore any links that
were lost in the database conversion.
b) The compact date field type is not supported.
c) If, when converting a report from an existing database driver
to the native Advantage driver, you create a new Advantage alias
by hitting the 'New' button you may encounter problems retrieving
this new alias. If you override the default ini file location,
selections from this new ini file will not show up in the list on
the alias configuration dialog. To remedy this situation re-start
Crystal Reports and make sure the new ini file is located
somewhere in the search path (ahead of any other ads.ini file
that may exist on the machine).
10. Frequently Asked Questions
7. ============================================
a) How do I change the Advantage alias a report is currently using?
If a report is currently set up to use the Advantage Crystal
Reports Driver, and you need to change the alias it is using,
simply perform a database conversion over again. Follow the
steps provided in the 'Converting Existing Reports To Advantage'
section of this readme, and when prompted for the Advantage
alias to use, select the new alias. This will replace the old
alias specification, and the report will now utilize the new
alias.
b) How do I change the default Advantage locking mode?
The Advantage Crystal Reports Driver by default uses the
Advantage Proprietary Locking mode. If you have applications
accessing your data that are not also using this proprietary
mode, you will get a 7028 error (or some other
locking-related error) when attempting to open data files or
execute reports. To force the Advantage Crystal Reports Driver
to use the Advantage Compatible Locking mode, add the following
two lines to your ads.ini file:
[Crystal]
LockingMode=0 ; ADS_PROPRIETARY_LOCKING=1 ADS_COMPATIBLE_LOCKING=0
c) How do I change the default Advantage Character Type?
The Advantage Crystal Reports Driver by default uses the
ADS_ANSI character type. To force the Advantage Crystal Reports
Driver to use the ADS_OEM character type, add the following two lines
to your ads.ini file:
[Crystal]
CharType=0 ; ADS_ANSI=1 ADS_OEM=2
d) How do I change the default rights checking mode?
The Advantage Crystal Reports Driver by default uses the
ADS_CHECKRIGHTS option on all statements. To force the Advantage
Crystal Reports Driver to use the ADS_IGNORERIGHTS option, add the
following two lines to your ads.ini file:
[Crystal]
RightsChecking=1 ; ADS_CHECKRIGHTS=1 ADS_IGNORERIGHTS=2
e) Which files do I need to add to my report distribution?
The following Advantage-specific files must be included in your
report distribution:
p2sads.dll - Advantage Crystal Reports Driver
ads.ini - this is the most important file to note, as
Crystal will not detect this file as being
necessary for the report, so you must manually
add this file to your distribution.
ace32.dll
axcws32.dll (if using Advantage Database Server)
adsloc32.dll (if using Advantage Local Server)
adslocal.cfg (if using Advantage Local Server)
NOTE: These DLLs must be in the application folder or in the search
path.
f) Why can't I find my Advantage aliases in Crystal?
If your ads.ini file is configured correctly and you still don't see
8. any Advantage aliases in the Crystal Report designer there is most-
likely a version mismatch with the Advantage Client Engine (ACE). Verify
the following DLLs are all the same version: p2sads.dll, ace32.dll
axcws32.dll and adsloc32.dll.