Advantage Database Server
Introduction
What's New in Advantage 10
Effects of Upgrading to Version 10
What's New in Advantage 9
Effects of Upgrading to Version 9.1
Effects of Upgrading to Version 9.0
What's New in Advantage 8.1
Effects of Upgrading to Version 8.1
What's New in Advantage 8.0
Effects of Upgrading from a Version Prior to v8.0
Supported Operating Systems and Platforms
Advantage Database Server Overview
The Advantage Product Family
Advantage Data Architect
Important Notes
Known Problems
Installing the Advantage Database Server
System Requirements
Installing and Starting the Advantage Database Server for Windows
Installing and Loading the Advantage Database Server for NetWare
Installing and Starting the Advantage Database Server for Linux
Performing Silent Installs
Performing Simple Advantage Database Server Upgrades and Expansions
Installing and Running the Advantage Database Server on a Windows Cluster
Installing Multiple Instances on a Single Server
Advantage Database Server Configuration
Overview
Advantage Database Server Configuration for Windows
Advantage Database Server Configuration for NetWare
Advantage Database Server Configuration for Linux
Advantage Database Server Configuration Parameter Settings List
Advantage Management Information
Advantage Database Server NLM Screen
Advantage Database Server NLM Management Utility
Advantage Configuration Utility for Windows
Advantage Management Utility
Advantage Management API
Advantage Internet Server
Introduction and Initial Setup
Advantage Internet Server Overview
Advantage Internet Server System Requirements
Licensing
Setting up Advantage for the Internet
Client-Side Settings
Specifying the Advantage Internet Server Location
Connecting Clients Through the Internet to Advantage
Server-Side Settings
IP
Managing Internet Users
Watch Dog
Enabling Internet Access on a Per User Basis
Maximum Failed Login Attempts
Advantage Internet Server Security
Internet Security Levels
Denial of Service Attacks
Authentication
Performance Factors
General Performance Factors
Performance Factors Relative to Non-Client/Server
Advantage Concepts
Advantage Functionality
Client/Server Technology
Multi-Threading and Multiple Processors
Express Queue
Database Security
Advantage Locking Modes
Single Application Scalability
Advantage Data Dictionary
Advantage Data Dictionary Upgrades
Advantage Data Dictionary User Permissions
Effective Permissions vs Explicit Permissions
Communications Compression
Triggers
Full Text Search
Referential Integrity
Callback Functionality
Encryption
Reduced File Handle Usage
Advantage Optimized Filters
Read-Ahead Record Caching
Advantage Expression Engine
Transaction Processing System (TPS)
Advantage Transaction Processing System Overview
Advantage Transaction Processing System Features
Advantage Transaction Processing System Limitations
Unpredictable Results with TPS
Advantage TPS Error Conditions
Advantage TPS Behavioral Changes
Integrating TPS into Advantage Applications
Using Transactions in an Application
SQL Transaction Processing Statements
Nesting Transactions
Transaction-Free Tables
Disabling Database Logins
Case Insensitive Field Type
Temporary Tables
Server-Side Aliases
Network Attached Storage (NAS) Devices
Stored Procedures
DLL Caching
RowVersion and ModTime Field Types
SQL Debugger
Events (Notifications)
Database Roles
Temporary File Pooling
Table Data Caching
Unicode Support
Advantage Extended Procedures
Advantage Extended Procedures
What is an Advantage Extended Procedure?
Creating an Advantage Extended Procedure
Executing an Advantage Extended Procedure
Testing and Debugging an Advantage Extended Procedure
Tips and Tricks
AEP Interface Version Comparison
TDataSet Descendant Tutorial
Advantage Extended Procedures - TDataSet Descendant Tutorial
Task 1: Copy Test Data and Application
Task 2: Create Your AEP Source File
Task 3: Define Your AEP EntryPoint
Task 4: Add Startup and Shutdown Functions
Task 5: Implement Your Procedure Logic
Task 6: Register Your Procedure in the Data Dictionary
Task 7: Test Your Procedure
Visual Basic Tutorial
Advantage Extended Procedures - Visual Basic Tutorial
Task 1: Copy Test Data and Application
Task 2: Create Your AEP Project
Task 3: Define Your AEP Function
Task 4: Add Startup and Shutdown Functions
Task 5: Implement Your Procedure Logic
Task 6: Build and Register Your Procedure for COM Usage
Task 7: Register Your Procedure in the Data Dictionary
Task 8: Test Your Procedure
Backup
Online Backup
The adsbackup Utility
Backup and Restore Canned Procedures
Differential Backups
Backup and Restore Options
Backup and Restore Canned Procedure Result Sets
Replication
Replication Overview
Getting Started with Replication
Replication Scenarios
Replication Options
How Replication Works Internally
Connection Pooling Usage
Transactions and Replication
Referential Integrity and Replication
Triggers and Replication
Forwarding and Loop Detection
Offline Targets
Security
Auto-Updating Fields
Modifying Subscription Information
Replication and Deleted Records
Advantage Error Log and Replication
Frequently Asked Questions
Advantage Development Notes
Advantage Server Types
Index Page Size
ADS.INI File Support
Registry Settings that affect Advantage Communication
Null Field Values
Collation Support
Advantage Internet Connector
Advantage Linux Development Notes
Linux Shared Objects
Samba Configuration
Lock Offset Configuration
Linux Rights Checking
NFS Mounts
Linux Case Sensitivity
Log Files
Linux 6060 Errors
Linux ANSI/OEM Translations
Advantage ISAM Concepts
Indexed Sequential Access Method (ISAM) Overview
Advantage ISAM File Types
Movement Operations
Data Update Visibility
Filters
Relations (Master/Detail Relationships)
Types of Indexes
Binary Indexes
Index Scopes (Ranges)
Table Sharing Modes
ISAM Locking
Advantage File Formats
Advantage File Formats Overview
Xbase Format
Xbase File Format Specifications
Advantage Proprietary Format
Advantage Proprietary File Format Specifications
Choosing a File Format
Xbase File Format
Sharing Data with Non-Advantage Applications
Prefer to Use the Record Deletion Status as a Filter
Prefer Traditional Xbase Unique Index Behavior
Advantage Proprietary File Format
Long Field Names and Long Index Names
More Characters in Field Names and Index Names
Additional Field Data Types
True Unique Indexes for Primary Key Support
Deleted Records are Invisible and Automatically Reused
File Size Support Greater Than 4 Gigabytes
Data Type Independent Expression Concatenation Operator
More Efficient Memo Block Size
Better Performance for Certain Operations
More Suited for Future Enhancements
Support for NULL Values
Advantage SQL
Advantage SQL Engine
SQL Debugger
Supported SQL Grammar
Supported SQL Statements
Advantage SQL Grammar
SQL Literals
SQL Operators
Parameters in SQL Statements
SQL Statement Limits
Supported Data Types in the Advantage SQL Engine
Supported Aggregate (column) Functions
CASE
ROWID
Comments
Supported Scalar Functions
ROWNUM
Reserved Keywords
SQL Performance
Cursor Types
Indexes and SQL Performance
Limitations with Static Cursors
Indexing the Appropriate Fields
Limiting Records Read by the Client
Reusing Prepared Queries
Populating Static Cursors
Small Result Sets with Large Tables
Subqueries
SQL Functionality
NULL Values
Associating Indexes with Tables
Use of Non-Standard Characters in Names
Using Table Names with Paths
Using Tables from Multiple Data Dictionaries
Joins Across Servers
Memo Field Limitations
Indexes with Expressions
Views
Using the LIKE Operator
How the Advantage SQL Engine Differs from the BDE
Processing Heuristics
IOTA Table
Using Temporary Tables in SQL Statements
SQL Execution Plan
SQL Query Logging
USER DEFINED FUNCTION
System Variables
Exact Numeric vs Approximate Numeric
Limiting Query Results
Functions to Convert Hexadecimal Values
System Views
Using SQL to Retrieve Metadata
Views
System Views
system.columns
system.dictionary
system.effectivepermissions
system.fts
system.functions
system.indexes
system.indexfiles
system.links
system.objects
system.packages
system.permissions
system.publicationarticles
system.publications
system.relations
system.storedprocedures
system.subscriptions
system.tables
system.triggers
system.usergroups
system.usergroupmembers
system.users
system.views
System Procedures
Using SQL to Modify Data Dictionaries
Using SQL to Access Management Information
Using SQL to Manage Tables
Miscellaneous System Procedures
Procedures
sp_AddIndexFileToDatabase
sp_AddTableToDatabase
sp_AddUserToGroup
sp_BackupDatabase
sp_BackupFreeTables
sp_CancelQuery
sp_CreateArticle
sp_CreateEvent
sp_CreateGroup
sp_CreateIndex
sp_CreateLink
sp_CreatePublication
sp_CreateReferentialIntegrity
sp_CreateSubscription
sp_CreateUser
sp_DisableQueryLogging
sp_DisableTriggers
sp_DropAllEvents
sp_DropArticle
sp_DropEvent
sp_DropGroup
sp_DropLink
sp_DropPublication
sp_DropReferentialIntegrity
sp_DropSubscription
sp_DropUser
sp_EnableQueryLogging
sp_EnableTriggers
sp_GetApplicationID
sp_GetCollations
sp_GetColumns
sp_GetRecordCRC
sp_GetSQLKeywords
sp_GetSQLStatements
sp_GetTables
sp_IgnoreTransactions
sp_ModifyArticleProperty
sp_ModifyDatabase
sp_ModifyFieldProperty
sp_ModifyGroupProperty
sp_ModifyIndexProperty
sp_ModifyLink
sp_ModifyProcedureProperty
sp_ModifyPublicationProperty
sp_ModifySubscriptionProperty
sp_ModifyTableProperty
sp_ModifyUserProperty
sp_ModifyViewProperty
sp_MoveDDObjectFile
sp_PackTable
sp_ProcessReplicationQueues
sp_Reindex
sp_RemoveIndexFile
sp_RemoveUserFromGroup
sp_RenameDDObject
sp_RestoreDatabase
sp_RestoreFreeTables
sp_SetApplicationID
sp_SetRequestPriority
sp_SignalEvent
sp_ViewQueryLogging
sp_WaitForAnyEvent
sp_WaitForEvent
sp_ZapTable
sp_mgGetActivityInfo
sp_mgGetAllIndexes
sp_mgGetAllLocks
sp_mgGetAllTables
sp_mgGetCommStats
sp_mgGetConfigInfo
sp_mgGetConfigMemory
sp_mgGetConnectedUsers
sp_mgGetIndexUsers
sp_mgGetInstallInfo
sp_mgGetLockOwner
sp_mgGetServerType
sp_mgGetTableIndexes
sp_mgGetTableUsers
sp_mgGetUsageInfo
sp_mgGetUserIndexes
sp_mgGetUserLocks
sp_mgGetUserTables
sp_mgGetWorkerThreadActivity
sp_mgKillUser
sp_mgResetCommStats
SQL PSM (SCRIPT)
SQL Script Overview
DECLARE
Assignment
IF
WHILE
OPEN, CLOSE, FETCH
EXECUTE IMMEDIATE
TRY ... CATCH ... FINALLY ...
RAISE
RETURN
CACHE
Parameters
Using SQL Script to Write Stored Procedures
Debugging SQL Script
Debugging SQL Script Overview
SQL Debugging Statements
DEBUG BEGIN
DEBUG END
DEBUG DATABASE
DEBUG CONNECTION
DEBUG BREAK POINT
DEBUG WAIT
DEBUG RUN
DEBUG BREAK
DEBUG REMOVE BREAK POINT
SQL Debugging Tables
::DEBUG_CONNECTIONS
::DEBUG_STATEMENTS
::DEBUG_STACK
::DEBUG_BREAKS
::DEBUG_SOURCES
::DEBUG_VARIABLES
Tech Tips
Advantage Tech Tips
Best Practices
Online Backup Permissions
SQL
TDataSet Descendant (Delphi/C++Builder)
Visual Studio
Visual FoxPro
ADO and OLE DB
Using the OLE DB Provider with ADO
Performing Index Operations with OLE DB
Enhance Your Advantage ADO Application
Crystal Reports
Notifications/Events
Replication
Stored Procedures
Triggers
Visual FoxPro
Getting Started with Visual FoxPro
Remote Views
Cursor Adapters
SQL Pass Through
Troubleshooting and Technical Support
Troubleshooting
Advantage Troubleshooting Tools
Non-Advantage Troubleshooting Tools
Error and Diagnostic Logs
Automatic Version Checking
Avoiding ANSI Collation Mismatch Errors
Avoiding OEM Collation Mismatch Errors
www.AdvantageDatabase.com
Troubleshooting in the NetWare Environment
Troubleshooting in the Windows Environment
Troubleshooting in the Linux Environment
Installation of the Advantage ODBC Driver
Advantage CA-Visual Objects RDD Error Object
Advantage CA-Visual Objects RDD General Protection Faults
Advantage CA-Visual Objects RDD Run Time Problems
Troubleshooting Advantage Internet Server
adsdump Files
Replication: Frequently Asked Questions
Technical Support
Technical Support (U.S. and Canada)
www.AdvantageDatabase.com
Networking Issues
Networking Protocols Used by the Advantage Database Server
Advantage Database Server Discovery
Advantage Client Communication Layer
Advantage Communication Transport Layer
Advantage Communications Troubleshooting
Workstation Configuration
Advantage Client Engine
Introduction
Advantage Client Engine Architecture
System Requirements
Developing Advantage Client Engine Applications
File Requirements
Supported File Formats
Distributing an Advantage Client Engine-Enabled Application
Integrating the Advantage Client Engine Into Your Application
Using SQL with the Advantage Client Engine
Capturing Errors and Error Recovery
API Reference
API Conventions
Driver Functions
Table Functions
Data Manipulation Functions
SQL Functions
Advantage Data Dictionary Functions
Advantage Optimized Filter Functions
Advantage Encryption Functions
Advantage Management API Functions
Advantage Client Engine Transaction Processing APIs
Example Code
Examples
Advantage Client Engine API TPS Examples
Advantage Local Server Merge Module
Advantage Local Server Merge Module for Developers
Advantage TDataSet Descendant
Introduction and Installation
Product Overview
Installing the Advantage TDataSet Descendant
Installing the Advantage Database Server
Developing and Distributing Applications
Delphi Architecture Overview
Advantage TDataSet Descendant Architecture
Advantage Components for Delphi
Differences Between Advantage and Native Delphi Functionality
dbExpress and DataSnap Notes
Programmatically Selecting Advantage Server Types
Developing a Sample Advantage-Enabled Delphi Application
Task 1: Perform Data Conversion Using the Advantage Data Architect
Task 2: Create a Simple Browser
Task 3: Increase Insert/Edit Functionality
Task 4: Add Filter Functionality
Task 5: Add Search Functionality
Task 6: Add Active Index Selection
Task 7: Add Index Creation Capability
Task 8: Add Range Functionality
Task 9: Add FindKey/FindNearest Functionality
Best Advantage Programming Practices
Optimizing Performance
Database Aliases and the ADS.INI File
Distributing Advantage TDataSet Descendant Applications
How the Advantage TDataSet Descendant is Built into your Application
Transaction Processing with the Advantage TDataSet Descendant
Advantage Components
TAdsConnection
TAdsTable
TAdsQuery
TAdsStoredProc
TAdsSettings
TAdsEvent
TAdsEvent Properties
TAdsEvent.Active
TAdsEvent.AdsConnection
TAdsEvent.Events
TAdsEvent.EventTimeout
TAdsEvent.PollInterval
TAdsEvent Events
TAdsEvent.OnLog
TAdsEvent.OnNotification
TAdsBatchMove
EADSDatabaseError
TAdsBlobStream
TAdsStringField
TAdsBcdField
TAdsAEPSessionMgr
TAdsDictionary
Advantage Extended Methods
Advanced Property Editors
Overview
Create or Alter Table Editor
SQL Property Editor
Managing Multiple Versions
Overview
TDataSet Versions Supported
Overview of the Switch Process
Backup Functionality
Custom TDataSet Versions
Silent Mode
Troubleshooting
Converting Existing Delphi Applications
Advantage Data Architect
Data Conversion Using Advantage Data Architect
Converting Existing Delphi Applications to use the Advantage TDataSet Descendant
Record Locking Modes (pessimistic vs. optimistic)
Adding Management Capabilities
Management Capabilities Overview
Advantage Management APIs
Advantage Management API Examples
Directly Accessing the Advantage Client Engine
When to Make Direct Calls to the Advantage Client Engine
How to Use the Advantage Client Engine
Using the Advantage ODBC Driver with Delphi
Using the Advantage ODBC Driver with Delphi
Advantage Data Architect
Advantage Data Architect Overview
Quick Start
Redistributing Advantage Data Architect
Source Code
Tables
Opening Tables
Creating a New Table
Table Browser
Importing Data into the Advantage Tables
Exporting Table Data
Exporting Advantage Tables to Code
Schema Templates
Databases
Opening a Database
Creating or Modifying a Database
Deleting a Database
Database Aliases
Developing Databases Using the ER Diagramming Tool
Refreshing the Active Database
Adding Existing Tables to a Database
Removing Tables from a Database
Disabling Database Logins using ARC
Users
Creating or Modifying a User
Setting User Permissions
Deleting a User
Changing Password
Groups
Creating or Modifying a Group
Adding/Removing Users to/from a Group
Setting Group Permissions
Deleting a Group
Stored Procedures
Creating or Modifying a Stored Procedure
Deleting a Stored Procedure
Views
Creating or Modifying a View
Deleting a View
Referential Integrity (RI) Objects
Creating or Modifying an RI Object
Deleting an RI Object
Triggers
Creating or Modifying a Trigger
Deleting a Trigger
Links
Creating a Dictionary Link
User Defined Functions
Creating or Modifying a User Defined Function
Deleting a User Defined Function
Creating or Modifying a Package
Deleting a Package
Using SQL with Advantage Data Architect
SQL Utility
SQL Link Manager
Advantage Query Builder
Advantage Utilities
Advantage Environment Check Utility
Advantage Management Utility
Overview
Viewing Database Activity Information
Viewing Installation Information
Viewing Connected Users
Viewing Open Files
Viewing Configuration Parameters Affecting Memory
Viewing Configuration Parameters Not Affecting Memory
Viewing Communication Statistics
Viewing Active Queries
Manually Refreshing the Current View
Changing the Refresh Rate
SQL Debugger
Overview
Debugger Menu
Setting Breakpoints
Debugging a Script
Debugging a Database Object
Debugging an External Application
Controlling Script Execution
Modifying Database Objects in the Editor
Inspecting Variable Data
Inspecting the Call Stack
Changing Keyboard Shortcuts
Changing the Default Window Layout
Advantage Crystal Reports
Overview
Crystal Reports Overview
Requirements
Requirements
Using the Advantage Crystal Reports Driver
Defining a Database Alias for use with Crystal Reports
Creating a New Report
Creating a New Report in Crystal 6 and 7
Creating a New Report in Crystal 8
Creating a New Report in Crystal 9 and newer
Converting Existing Reports
Converting Existing ODBC Reports in Crystal 6 through 8
Converting Existing BDE Reports in Crystal 6 through 8
Changing a TCrpe Report Alias at Runtime
Changing a TCrpe Report Alias at Runtime
Providing an External Advantage Connection Handle
Providing an External Advantage Connection Handle to the Advantage Crystal Reports Driver
Configuring Crystal Reports at Runtime
Configuring Crystal Reports at Runtime
Configuration
Locking Mode
Character Type
Rights Checking Mode
Showing Deleted DBF Records
Server Type
Collation
Report Distribution
Report Distribution
Known Issues
Known Issues
Advantage Developer's Guide
About the Authors
Acknowledgements
Introduction
About This Book
Who Is This Book For
Important Notes
Part I - Advantage and Advantage Data Architect
Part I Advantage and the Advantage Data Architect
Chapter 1 - Introduction
Introduction to Advantage Database Server
Overview of Advantage Database Server
ADS Is High Performance
ADS Is Low Maintenance
ADS Is a Remote Database Server
Advantage Database Server Versus Advantage Local Server
Reducing Network Traffic
Improved Performance
Available Transactions
Improved Stability
When to Use the Advantage Local Server
Advantage Tools
The Advantage Configuration Utility
The AdsStamp Utility
Advantage Data Architect
Advantage ANSI Collation Utility
Building Database Applications Using Advantage
Creating the Database
Creating the Client Applications
Features Added in Advantage 8
Impressive Backwards Compatibility
Updated Advantage Data Architect
Online Backup
Replication Support
Enhanced SQL Scripts
Query Logging
User Defined Functions
General Improvements to Advantage SQL
Enhanced Security
Server-Side Aliases
Transaction Savepoints
New Field Types
Application Identification
Performance Improvements
Enhanced Support for .NET Development
Improved Visual Studio 2005 Integration
Updated Crystal Report Driver
TCP/IP Support for All Clients
Chapter 2 - Creating Tables
Creating Tables
ADS Supported Table Types
DBF Formats
The Advantage Proprietary (ADT) Format
Free Tables Versus Database Tables
Creating ADS Tables
Working with Tables
Opening a Previously Created Table
Navigating and Editing Data in a Table
Other Table Support Features
Data Security
Table Maintenance
Importing and Exporting Data
Exporting Table Structures As Code
Chapter 3 - Defining Indexes
Defining Indexes
Overview of Index Files
Why Create Indexes?
Types of Index Orders
Creating Indexes
Testing Indexes
Indexes and Performance
How Many Indexes Should You Define?
Scopes, Seeks, and AOFs
Full Text Search Indexes
Creating FTS Index Orders
Testing FTS Index Orders
Options for FTS Index Orders
Chapter 4 - Understanding Dictionaries
Understanding and Using Data Dictionaries
Data Dictionary Overview
Creating a Data Dictionary
Adding Tables to a Data Dictionary
Opening a Data Dictionary
Adding Existing Tables to a Data Dictionary
Removing a Table from a Data Dictionary
Data Dictionaries and Table Encryption
Enabling Table Encryption
Encrypting Database Tables
Binding Tables with Table Encryption Enabled
Implementing Security with Data Dictionaries
Defining Users and Groups
Adding Users
Checking User Rights
Understanding Groups
Using Access Rights and Groups
Changing Objects and Permissions
How Field-Level Permissions Are Enforced
Communication and Index Encryption
Internet Access and Security
Dictionary Links
Creating Dictionary Links
The SQL Link Manager
Other Dictionary Operations
Renaming and Moving Dictionary Objects
Comparing Data Dictionaries
Chapter 5 - Constraints and RI
Defining Constraints and Referential Integrity
Understanding Constraints
Alternatives to Constraints
Advantages of Constraints
Creating Constraints
Defining Field-Level Properties
Defining Table-Level Properties
Defining Referential Integrity Constraints
The RI Visual Designer
Comments About Constraints and Referential Integrity
Using Field-Level Constraints
Using Record-Level Constraints
Using Referential Integrity
Chapter 6 - Views
Working with Views
Overview of Views
Creating Editable Views
Testing a View
Making Views Accessible
Changing a View
Views That Use Views
Modularizing Operations with Views
Views As Temporary Tables
Selecting Record Subsets from Views
Views That Use Other Database Tables
Qualifying a Table Using a Dictionary Path
Qualifying a Table Using Data Dictionary Links
Chapter 7 - Stored Procedures
Creating Stored Procedures
Overview of Stored Procedures
Stored Procedures Versus Advantage Extended Procedures
The Structure of AEPs
The Structure of SQL Stored Procedures
Writing Stored Procedures
Creating and Installing SQL Stored Procedures
Creating AEPs Using Delphi
Creating AEPs Using C# with Visual Studio .NET
Creating AEPs Using VB.NET
Creating AEPs Using Visual Basic 6
Using Stored Procedures
Installing AEPs
Testing AEPs
Debugging Stored Procedures
Deploying Stored Procedures
Chapter 8 - Triggers
Defining Triggers
Overview of Triggers
BEFORE Triggers
INSTEAD OF Triggers
AFTER Triggers
ON CONFLICT Triggers
Creating Triggers
Triggers and Transactions
Trigger Priority
Triggers and Performance
Getting Started with Triggers
Example Triggers
Writing Triggers in SQL
Creating Triggers in Delphi
Creating Triggers in C# with Visual Studio .NET
Creating Triggers in VB.NET with Visual Studio .NET
Using Triggers
Creating the Sample Table
Registering Triggers
Testing the New Trigger
Updating and Deleting Triggers
Debugging Triggers
Deploying Triggers
Disabling Triggers
Chapter 9 - Backups
Backing Up and Restoring Data
What Gets Backed Up
Creating a Backup
Creating a Backup from the Advantage Data Architect
Creating a Backup Using System Stored Procedures
Creating a Backup Using AdsBackup.exe
The Backup Result Table
Restoring from a Backup
Restoring Data Using the Advantage Data Architect
Restoring Data Using the System Stored Procedures
Restoring Data Using the AdsBackup.exe Command-Line Utility
Chapter 10 - Replication
Implementing Replication
Overview of Advantage Replication
Basic Replication Strategies
Unidirectional Replication
Bi-Directional Replication
Hub and Spoke Replication
Configuring Replication
Creating the Publication
Customizing a Publication
Creating the Subscription
Replication Example
Additional Replication Issues
Configuring Replication Errors
Replication and Triggers
Replication and Connections
Part II - Advantage SQL
Advantage SQL
Chapter 11 - Introduction to Advantage SQL
Introduction to Using Advantage SQL
Overview of Advantage SQL Queries
Field Names and Table Names
Field Aliases and Table Aliases
Keywords
SQL Literals
Operators in SQL Statements
SQL Scalar Functions
Parameters in SQL Statements
User Defined Functions
Comments
SQL Scripts
Additional Advantage SQL Topics
SQL Statement Dimensions
Live Cursors Versus Static Cursors
Temporary Tables
Using Subqueries
Query Tools
The SQL Utility
The Query Builder
Query Logging
The SQL Execution Plan
Chapter 12 - SQL to Perform Common Tasks
Using SQL to Perform Common Database Operations
Creating and Modifying Objects
Creating Tables and Indexes
Selecting Data
Selecting and Expressions
Conditional Selection
Sorting Data
Grouping Data
Multitable Queries
Full Text Search Queries
Changing Data
Inserting Records
Updating Records
Deleting Records
Using Transactions
Transaction Savepoints
Automatic Transactions
Chapter 13 - SQL Scripting Language
The Advantage SQL Scripting Language
Writing SQL Scripts
Declaring Variables
Assignment
Flow Control
Using Cursors
Executing SQL Without a Cursor
Exception Handling
Caching Script Semantics
User Defined Functions
User Defined Functions and Packages
Creating a Package
Creating a User Defined Function
Calling a User Defined Function
Chapter 14 - System Management and Metadata
System Management and Metadata
System Tables
Getting Dictionary Information
Getting Table-Related Information
Getting User and Group Information
Getting Other Object Information
Other System Tables
Dictionary-Related SQL Statements
Creating a Data Dictionary
Granting Rights
Revoking Rights
System Stored Procedures
Executing Stored Procedures
Usage Information and Control
Data Dictionary Management
Table Information and Maintenance
General Information and Control
Part III - Accessing Advantage Data
Accessing ADS Data
Chapter 15 - Using Advantage from Delphi
Using Advantage from Delphi
Advantage and Delphi
Understanding the TDataSet Descendants
Performing Basic Tasks with Advantage and Delphi
Connecting to Data
Accessing an ADS Table
Reading and Writing Data
Executing a Query
Using a Parameterized Query
Calling a Stored Procedure
Navigational Actions with Advantage and Delphi
Setting an Index
Finding a Record Based on Data
Setting a Range
Setting a Filter
Scanning a Result Set
Administrative Operations with Advantage and Delphi
Creating a Table and Granting Rights to It
Changing a User Password
Chapter 16 - Advantage and Java
Advantage and Java
ADS and Java
Performing Basic Tasks with ADS and Java
Connecting to Data
Executing a Query
Using a Parameterized Query
Reading and Writing Data
Calling a Stored Procedure
Navigational Actions with ADS and Java
Scanning a Result Set
Administrative Operations with ADS and Java
Creating a Table and Granting Rights to It
Changing a User Password
Chapter 17 - MDAC, OLE DB, ADO
MDAC, OLE DB, ADO, Visual Basic, and Advantage
MDAC, OLE DB, ADO, Visual Basic, and Advantage
Performing Basic Tasks with Advantage and ADO
Connecting to Data
Executing a Query
Using a Parameterized Query
Reading and Writing Data
Calling a Stored Procedure
Navigational Actions with Advantage and ADO
Setting an Index
Finding a Record Based on Data
Setting a Filter
Scanning a Result Set
Administrative Operations with Advantage and ADO
Creating a Table and Granting Rights to It
Changing a User Password
Chapter 18 - The .NET Data Provider
Advantage and the Advantage .NET Data Provider
Advantage and ADO.NET
Making ADO.NET Better
Superior ADO.NET 1.1 Support
Full ADO.NET 2.0 Support
Advanced Visual Studio 2005 Integration
A Note About the Examples
Performing Basic Tasks with ADS and ADO.NET
Connecting to Data
Executing a Query
Using a Parameterized Query
Reading and Writing Data
Calling a Stored Procedure
Navigational Actions with Advantage and ADO.NET
Scanning a Result Set
Administrative Operations with ADS and ADO.NET
Creating a Table and Granting Rights to It
Changing a User Password
Chapter 19 - ODBC, PHP, DBI/Perl
Using Advantage with ODBC, PHP, and DBI/Perl
Accessing Advantage Using the Advantage ODBC Driver
Who Should Use the Advantage ODBC Driver
Connecting to Advantage Using the Advantage ODBC Driver
Accessing Advantage Using the Advantage PHP Extension
A Sample PHP Web Site
Connecting to Advantage Using PHP
Using Parameterized Queries in PHP
Getting Tables from Result Sets Using PHP
Editing Data
Scanning Result Sets
Calling a Stored Procedure
Accessing Data Using the Advantage DBI Driver (for Perl)
Appendixes
Appendix A - Installation
Installing Advantage Database Server and the Sample Database and Code
Downloading and Installing
Database and Code Samples
Downloading and Installing the Sample Database and Code
This Book's Errata Web Page
Appendix B - Troubleshooting and Other Issues
Troubleshooting and Other Issues
Getting Information About Advantage Error Codes
The Error Table
Exclusive Locks and Cursor Caching
Server-Side Aliases
Defining Server-Side Aliases
Changing AdsServer.Ini
Advantage .NET Data Provider
Introduction
Product Overview
Quick Start
System Requirements
Name Space
Class Summary
Referencing the Advantage .NET Data Provider
Transaction Support in the Advantage .NET Data Provider
Direct Table Access in ADO.NET
Important Notes
64-bit Notes
Known Problems
Installation and Distribution
Installing the Advantage .NET Data Provider
Distributing the Advantage .NET Data Provider
Registering the Advantage .NET Data Provider
Developing .NET Applications
Advantage .NET Data Provider Data Types
Advantage .NET Data Provider and Multi-Threading
Advantage .NET Data Provider and Connection Pooling
.NET Data Providers and Code Portability
Entity Framework Support
Entity Framework Support
Unsupported Entity Framework Functionality
Limitations of the Automated Entity Framework Tools
Entity Framework Quick Start
Entity Framework Quick Start Overview
Create Sample Database
Create an Entity Model
Display Records using LINQ
AdsCommand Class
Overview
AdsCommand Constructors
Overview
AdsCommand Constructor()
AdsCommand Constructor( string )
AdsCommand Constructor( string, AdsConnection )
AdsCommand Constructor( string, AdsConnection, AdsTransaction )
AdsCommand Properties
Overview
AdsCommand.Cancelled
AdsCommand.CommandText
AdsCommand.CommandTimeout
AdsCommand.CommandType
AdsCommand.Connection
AdsCommand.LastAutoinc
AdsCommand.Parameters
AdsCommand.Progress
AdsCommand.TimedOut
AdsCommand.Transaction
AdsCommand.UpdatedRowSource
AdsCommand Methods
Overview
AdsCommand.Cancel
AdsCommand.CreateParameter
AdsCommand.ExecuteExtendedReader
AdsCommand.ExecuteExtendedReader( CommandBehavior )
AdsCommand.ExecuteNonQuery
AdsCommand.ExecuteReader
AdsCommand.ExecuteReader( CommandBehavior )
AdsCommand.ExecuteScalar
AdsCommand.Prepare
AdsCommand.DeriveParameters
AdsCommand.VerifySQL
AdsCommand Events
AdsCommand.ProgressMessage
AdsCommandBuilder Class
Overview
AdsCommandBuilder Constructors
Overview
AdsCommandBuilder Constructor ()
AdsCommandBuilder Constructor( AdsDataAdapter )
AdsCommandBuilder Properties
Overview
AdsCommandBuilder.DataAdapter
AdsCommandBuilder.QuotePrefix
AdsCommandBuilder.QuoteSuffix
AdsCommandBuilder.RequirePrimaryKey
AdsCommandBuilder.UsePKOnlyInWhereClause
AdsCommandBuilder.UseRowversionOnlyInWhereClause
AdsCommandBuilder Methods
Overview
AdsCommandBuilder.DeriveParameters
AdsCommandBuilder.GetDeleteCommand
AdsCommandBuilder.GetInsertCommand
AdsCommandBuilder.GetUpdateCommand
AdsCommandBuilder.RefreshSchema
AdsConnection Class
Overview
AdsConnection Constructors
Overview
AdsConnection Constructor()
AdsConnection Constructor( string )
AdsConnection Properties
Overview
AdsConnection.ConnectionHandle
AdsConnection.ConnectionString
AdsConnection.ConnectionTimeout
AdsConnection.Database
AdsConnection.DataSource
AdsConnection.DateFormat
AdsConnection.DDVersionMajor
AdsConnection.DDVersionMinor
AdsConnection.Epoch
AdsConnection.IsConnectionAlive
AdsConnection.IsDictionaryConn
AdsConnection.ServerName
AdsConnection.ServerTime
AdsConnection.ServerType
AdsConnection.ServerVersion
AdsConnection.State
AdsConnection Methods
Overview
AdsConnection.BeginTransaction()
AdsConnection.BeginTransaction( IsolationLevel )
AdsConnection.ChangeDatabase
AdsConnection.Close
AdsConnection.CloseCachedTables
AdsConnection.CreateCommand
AdsConnection.EnlistTransaction
AdsConnection.FlushConnectionPool()
AdsConnection.FlushConnectionPool( string )
AdsConnection.GetDDObjects
AdsConnection.GetTableNames
AdsConnection.Open
AdsConnection.SetCursorCache
AdsConnection.SetTableCache
AdsConnection Enumerations
Overview
AdsConnection.AdsObjectType
AdsConnection Events
Overview
AdsConnection.InfoMessage
AdsConnection.StateChange
AdsConnectionStringBuilder Class
Overview
AdsConnectionStringBuilder Constructors
Overview
AdsConnectionStringBuilder Constructor()
AdsConnectionStringBuilder Constructor ( string )
AdsConnectionStringBuilder Properties
Overview
AdsConnectionStringBuilder.ConnectionString
AdsConnectionStringBuilder Data Source Properties
AdsConnectionStringBuilder Methods
Overview
AdsConnectionStringBuilder.Clear
AdsConnectionStringBuilder.Remove
AdsDataAdapter Class
Overview
AdsDataAdapter Constructors
Overview
AdsDataAdapter Constructor()
AdsDataAdapter Constructor( AdsCommand )
AdsDataAdapter Constructor( String, AdsConnection )
AdsDataAdapter Constructor( String, String )
AdsDataAdapter Properties
Overview
AdsDataAdapter.DeleteCommand
AdsDataAdapter.InsertCommand
AdsDataAdapter.MissingMappingAction
AdsDataAdapter.MissingSchemaAction
AdsDataAdapter.SelectCommand
AdsDataAdapter.UpdateCommand
AdsDataAdapter.TableMappings
AdsDataAdapter Methods
Overview
AdsDataAdapter.CreateRowUpdatedEvent
AdsDataAdapter.CreateRowUpdatingEvent
AdsDataAdapter.Fill
AdsDataAdapter.FillSchema
AdsDataAdapter.GetFillParameters
AdsDataAdapter.OnFillError
AdsDataAdapter.OnRowUpdated
AdsDataAdapter.OnRowUpdating
AdsDataAdapter.Update
AdsDataAdapter Events
Overview
AdsDataAdapter.FillError
AdsDataReader Class
Overview
AdsDataReader Properties
Overview
AdsDataReader.Depth
AdsDataReader.FieldCount
AdsDataReader.HasRows
AdsDataReader.IsClosed
AdsDataReader.IsStatic
AdsDataReader.Item
AdsDataReader.RecordsAffected
AdsDataReader.RecordCache
AdsDataReader Methods
Overview
AdsDataReader.Close
AdsDataReader.GetBoolean
AdsDataReader.GetByte
AdsDataReader.GetBytes()
AdsDataReader.GetBytes(int, long, byte[], int, int)
AdsDataReader.GetChar
AdsDataReader.GetChars
AdsDataReader.GetData
AdsDataReader.GetDataTypeName
AdsDataReader.GetDateTime
AdsDataReader.GetDecimal
AdsDataReader.GetDouble
AdsDataReader.GetFieldType
AdsDataReader.GetFloat
AdsDataReader.GetGuid
AdsDataReader.GetInt16
AdsDataReader.GetInt32
AdsDataReader.GetInt64
AdsDataReader.GetName
AdsDataReader.GetOrdinal
AdsDataReader.GetSchemaTable
AdsDataReader.GetString
AdsDataReader.GetTimeSpan
AdsDataReader.GetValue
AdsDataReader.GetValues
AdsDataReader.IsDBNull
AdsDataReader.NextResult
AdsDataReader.Read
AdsException Class
Overview
AdsException Properties
Overview
AdsException.Message
AdsException.Number
AdsException.State
AdsExtendedReader Class
Overview
AdsExtendedReader Properties
Overview
AdsExtendedReader.ActiveIndex
AdsExtendedReader.AdsActiveHandle
AdsExtendedReader.AdsHandle
AdsExtendedReader.BOF
AdsExtendedReader.EncryptionPassword
AdsExtendedReader.EOF
AdsExtendedReader.Filter
AdsExtendedReader.IndexCondition
AdsExtendedReader.IndexExpression
AdsExtendedReader.IsIndexCompound
AdsExtendedReader.IsIndexCustom
AdsExtendedReader.IsIndexDescending
AdsExtendedReader.IsIndexPrimaryKey
AdsExtendedReader.IsIndexUnique
AdsExtendedReader.Item
AdsExtendedReader.LastAutoinc
AdsExtendedReader.LogicalRecordNumber
AdsExtendedReader.PartialMatch
AdsExtendedReader.Progress
AdsExtendedReader.RecordNumber
AdsExtendedReader.RelativeKeyPosition
AdsExtendedReader Methods
Overview
AdsExtendedReader.AppendRecord
AdsExtendedReader.Cancel
AdsExtendedReader.ClearRange
AdsExtendedReader.CompareBookmarks
AdsExtendedReader.ConvertTable
AdsExtendedReader.CopyTable
AdsExtendedReader.CopyTableStructure
AdsExtendedReader.CreateIndex
AdsExtendedReader.DecryptTable
AdsExtendedReader.DeleteIndex
AdsExtendedReader.DeleteRecord
AdsExtendedReader.EncryptTable
AdsExtendedReader.GetBookmark
AdsExtendedReader.GetIndexNames
AdsExtendedReader.GetRecordCount
AdsExtendedReader.GotoBOF
AdsExtendedReader.GotoBookmark
AdsExtendedReader.GotoBottom
AdsExtendedReader.GotoTop
AdsExtendedReader.IsRecordDeleted
AdsExtendedReader.IsRecordLocked
AdsExtendedReader.IsTableLocked
AdsExtendedReader.LockRecord
AdsExtendedReader.LockTable
AdsExtendedReader.OpenIndex
AdsExtendedReader.PackTable
AdsExtendedReader.ReadPrevious
AdsExtendedReader.RecallAllRecords
AdsExtendedReader.RecallRecord
AdsExtendedReader.Reindex
AdsExtendedReader.Seek
AdsExtendedReader.SetBoolean
AdsExtendedReader.SetByte
AdsExtendedReader.SetBytes
AdsExtendedReader.SetChars
AdsExtendedReader.SetDateTime
AdsExtendedReader.SetDecimal
AdsExtendedReader.SetDouble
AdsExtendedReader.SetFloat
AdsExtendedReader.SetInt16
AdsExtendedReader.SetInt32
AdsExtendedReader.SetInt64
AdsExtendedReader.SetRange
AdsExtendedReader.SetString
AdsExtendedReader.SetTimeSpan
AdsExtendedReader.SetValue
AdsExtendedReader.UnlockRecord
AdsExtendedReader.UnlockTable
AdsExtendedReader.WriteRecord
AdsExtendedReader.ZapTable
AdsExtendedReader Enumerations
Overview
AdsExtendedReader.FilterOption
AdsExtendedReader.IndexOptions
AdsExtendedReader.SeekType
AdsExtendedReader.TableType
AdsExtendedReader Events
Overview
AdsExtendedReader.ProgressMessage
AdsFactory Class
Overview
AdsFactory Fields
Overview
AdsFactory.Instance
AdsFactory Methods
Overview
AdsFactory.CreateCommand
AdsFactory.CreateCommandBuilder
AdsFactory.CreateConnection
AdsFactory.CreateConnectionStringBuilder
AdsFactory.CreateDataAdapter
AdsFactory.CreateParameter
AdsParameter Class
Overview
AdsParameter Constructors
Overview
AdsParameter Constructor ()
AdsParameter Constructor ( int, object )
AdsParameter Constructor ( string, DbType )
AdsParameter Constructor ( string, DbType, int )
AdsParameter Constructor ( string, DbType, int, ParameterDirection, Boolean, Byte, Byte, st
AdsParameter Constructor ( string, DbType, int, string )
AdsParameter Constructor ( string, DbType, string, DataRowVersion )
AdsParameter Constructor ( string, object )
AdsParameter Properties
Overview
AdsParameter.DbType
AdsParameter.Direction
AdsParameter.Index
AdsParameter.IsNull
AdsParameter.IsNullable
AdsParameter.ParameterName
AdsParameter.Precision
AdsParameter.Scale
AdsParameter.Size
AdsParameter.SourceColumn
AdsParameter.SourceVersion
AdsParameter.Value
AdsParameterCollection Class
Overview
AdsParameterCollection Properties
Overview
AdsParameterCollection.Count
AdsParameterCollection.Item ( int )
AdsParameterCollection.Item ( string )
AdsParameterCollection Methods
Overview
AdsParameterCollection.Add( object )
AdsParameterCollection.Add( AdsParameter )
AdsParameterCollection.Add( string, DbType )
AdsParameterCollection.Add( string, object )
AdsParameterCollection.Add( string, DbType, int, string )
AdsParameterCollection.Add( int, object )
AdsParameterCollection.Clear
AdsParameterCollection.Contains
AdsParameterCollection.IndexOf
AdsParameterCollection.RemoveAt( int )
AdsParameterCollection.RemoveAt( string )
AdsTransaction Class
Overview
AdsTransaction Properties
Overview
AdsTransaction.Connection
AdsTransaction.IsolationLevel
AdsTransaction Methods
Overview
AdsTransaction.Commit
AdsTransaction.CreateSavepoint
AdsTransaction.Rollback
AdsInfoMessageEventArgs Class
Overview
AdsInfoMessageEventArgs Properties
Overview
AdsInfoMessageEventArgs.Message
AdsInfoMessageEventArgs.Number
Advantage Error Guide
Advantage Error Codes
1xxx Errors
Advantage 1xxx Error Codes
15xx Errors
Advantage 15xx Error Codes
2xxx Errors
Advantage 2xxx Error Codes
3xxx Errors
Advantage 30xx Error Codes
Advantage 31xx Error Codes
Advantage 32xx Error Codes
Advantage 33xx Error Codes
Advantage 34xx Error Codes
Advantage 35xx Error Codes
4xxx Errors
Advantage 4xxx Error Codes
5xxx Errors
Advantage 5xxx Error Codes
6xxx Errors
Advantage 60xx Error Codes
Advantage 61xx Error Codes
Advantage 62xx Error Codes
Advantage 63xx Error Codes
Advantage 64xx Error Codes
Advantage 66xx Error Codes
Advantage 67xx Error Codes
Advantage 68xx Error Codes
7xxx Errors
Advantage 7xxx Error Codes
8xxx Errors
Advantage 8xxx Error Codes
9xxx Errors
Advantage 9xxx Error Codes
Windows Server OS Errors
Windows Server OS Errors
NetWare Server OS Errors
NetWare Server OS Errors
Advantage JDBC Driver
Quick Start Guide Overview
Connecting to a Database
Setting the Classpath
Registering the Driver
Passing the Connection URL
About the JDBC Driver
Advantage JDBC Driver
Connecting Through the JDBC Driver Manager
Connection String Properties
Error Handling
Advantage JDBC Driver Directory Structure
Data Types
Result Sets
Supported Functionality
CallableStatement Object
Connection Object
DatabaseMetaData Object
Driver Object
PreparedStatement Object
ResultSet Object
ResultSetMetaData Object
Statement Object
Additional methods available to the ADSStatement object
Transaction Processing in JDBC
Unsupported Functionality
Unsupported Functionality
Advantage ODBC Driver
Introduction
Product Overview
System Requirements
Important Notes
Troubleshooting
Installation and Distribution
Installation on Windows
Data Source Setup for Windows
Data Source Setup for Linux
ODBC Data Source Entries for Windows
ODBC Data Source Entries for Linux
ODBC Data Source Keys
Distributing Advantage ODBC Applications
Using the Advantage ODBC Driver with SQL
Advantage ODBC Driver with SQL
Database Directory
Index Types
Locking
Deleted Records
Character Sets
Driver Boundaries
Index Optimizations
ODBC Driver SQL Grammar
API Special Characteristics
Data Type Mapping
ODBC API Conformance
Advantage OLE DB Provider (for ADO)
Introduction
Product Overview
System Requirements
Installation and Distribution
Installing the Advantage OLE DB Provider
Distributing the Advantage OLE DB Provider
Advantage Data Architect Utility
Installing the Advantage Database Server
Using the Advantage OLE DB Provider with ADO
Overview of Advantage OLE DB Provider with ADO
Connection String Parameters (Advantage OLE DB Provider)
Connection Object Information
Provider-Specific Connection Properties for ADO
Recordset Object Information
Provider-Specific Recordset Properties for ADO
Command Object Information
Programmatically Selecting Advantage Server Types
Setting the Date Format
Low Level OLE DB Information
Data Source Objects
Data Source Objects Overview
Supported Data Source Object Interfaces
Data Source Properties
Data Source Information Properties
Provider-Specific Data Source Information Properties
Initialization Properties (Advantage OLE DB Provider)
Provider-Specific Initialization Properties
Provider-Specific Initialization Properties for ADO
Sessions
Sessions Overview
Supported Session Object Interfaces
Session Properties
Provider-Specific Session Properties
Rowsets
Rowsets Overview
Creating a Rowset with IOpenRowset
Creating Rowsets with ICommand::Execute
Supported Rowset Object Interfaces
Rowset Properties
Provider-Specific Rowset Properties
Record Caching
Updating Data in Rowsets
Bookmarks
Indexes
Views (OLE DB)
Views Overview
View Properties
Supported View Object Interfaces
Commands
Commands Overview
Supported Command Object Interfaces
Command Syntax
Command Parameters
Preparing Commands
BLOBs and Storage Objects
Storage Objects Overview
Supported Storage Object Interfaces
Data Types
Data Types Overview
Data Type Mapping in Rowsets and Parameters
Transactions
Supporting Local Transactions
Errors
Errors Overview
Error Object Interfaces Supported
Return Codes
Schema Rowsets
Schema Rowsets Overview
Schema Rowset Support in the Advantage OLE DB Provider
Unsupported Functionality
Summary of Unsupported Functionality
Advantage PHP Extension
Product Overview
Important Notes
Linux Installation Notes
Windows Installation Notes
Working with Unicode
Extension Functions
Extension Functions
ads_autocommit
ads_close
ads_close_all
ads_commit
ads_connect
ads_cursor
ads_do
ads_error
ads_errormsg
ads_exec
ads_execute
ads_fetch_array
ads_fetch_into
ads_fetch_row
ads_field_len
ads_field_name
ads_field_num
ads_field_precision
ads_field_scale
ads_field_type
ads_free_result
ads_longreadlen
ads_num_fields
ads_num_rows
ads_pconnect
ads_prepare
ads_result
ads_result_all
ads_rollback
Advantage Visual Objects RDD
Introduction
Product Overview
File Requirements
Installing the Optional Advantage AEF Files
Distributing Advantage CA-Visual Objects Applications
Developing Visual Objects Applications
Advantage RDDs
Creating your Application with the Advantage Libraries
Using RDDSetDefault to Specify the Advantage RDD
Transaction Processing with Advantage Visual Objects
Connecting to an Advantage Data Dictionary with Visual Objects
Using the Advantage Local Server
Using the Advantage SQL Engine
Application Development Notes (for Visual Objects)
Advanced Functions
Overview
BLOB Functions
AX_AXSLocking()
AX_BLOB2File()
AX_File2BLOB()
AX_GetAceIndexHandle()
AX_GetAceTableHandle()
AX_GetAceStmtHandle()
AX_IsServerLoaded()
AX_PercentIndexed()
AX_RightsCheck()
AX_SetCollation
AX_SetConnectionHandle()
AX_SetExactKeyPos()
AX_SetPassword()
AX_SetServerType()
AX_SetSQLTablePasswords()
AX_SetSQLTimeout
AX_Transaction()
AX_UsingClientServer()
Directly Accessing the Advantage Client Engine
When to Make Direct Calls to the Advantage Client Engine
How to use the Advantage Client Engine
Using the Advantage AXSQL RDDs
Introduction
Unsupported Functionality
The AdsSQLServer Class
AXSQL Requirements
Static vs. Live Cursors
AXSQLNTX and Index Optimization
AXSQL Refresh Functionality
AX_GetAceTableHandle and AX_GetAceIndexHandle
Advantage with R&R ReportWorks
Introduction
Usage and Settings