Copyright: SQL Server Data Access Components, Copyright © 1998-2007 Core Lab


Overview
SQL Server Data Access Components

Overview

SQL Server Data Access Components (SDAC) is a library of components that provides access to Microsoft SQL Server databases. SDAC connects to SQL Server directly through OLE DB. The SDAC library is designed to help programmers develop faster and cleaner SQL Server database applications. SDAC is a complete replacement for standard SQL Server connectivity solutions and presents an efficient alternative to the Borland Database Engine for access to SQL Server.

The SDAC library is actively developed and supported by the Core Lab Team. If you have questions about SDAC, email the developers at sdac@crlab.com or visit SDAC online at http://www.crlab.com/sdac/.

Advantages of SDAC Technology

SDAC is a direct database connectivity wrapper built specifically for the SQL Server server. SDAC offers wide coverage of the SQL Server feature set, and emphasizes optimized data access strategies.

Wide Coverage of SQL Server Features

By providing access to the most advanced database functionality, SDAC allows developers to harness the full capabilities of the SQL Server and optimize their database applications. SDAC provides a complete support of working with SQL Server 2005 Compact Edition, SQL Server 2005 queuing and reliable messaging,IRowsetFastLoad interface, working with metadata information, MARS. Get a full list of supported SQL Server features in the Features topic.

Optimized Code

The goal of SDAC is to enable developers to write efficient and flexible database applications. The SDAC library is implemented using optimized code and advanced data access algorithms. Component interfaces undergo comprehensive performance tests and are designed to help you write efficient product data access layers. Find out more about how to use SDAC to optimize your database applications in Increasing Performance.

Compatibility with other Connectivity Methods

The SDAC interface retains compatibility with standard VCL data access components like BDE. Existing BDE-based applications can be easily migrated to SDAC and enhanced to take advantage of SQL Server-specific features. Project migration can be automated with the BDE/ADO Migration Wizard. Find out more about Migration Wizard in Using Migration Wizard.

Development and Support

SDAC is an SQL Server connectivity solution that is actively developed and supported. SDAC comes with full documentation, demo projects, and fast (usually within one business day) technical support by the SDAC development team. Find out more about how to get help or submit feedback and suggestions to the SDAC Development Team in the Getting Support topic.

A description of the SDAC components is provided in the Component List.

Key Features

•	Direct access to server data. Does not require installation of other data provider layers (such as BDE and ODBC)

•	VCL, VCL.NET, and CLX versions of library available

•	Full support of the latest Microsoft SQL Server versions, including Express and Compact editions

•	Support for all SQL Server data types

•	Disconnected Model with automatic connection control for working with data offline

•	Local Failover for detecting connection loss and implicitly reexecuting certain operations

•	All types of local sorting and filtering, including by calculated and lookup fields

•	Automatic data updating with TMSQuery, TMSTable, and TMSStoredProc components

•	Unicode support

•	Support for many SQL Server-specific features, such as messaging and bulk copy operations

•	Advanced script execution with TMSScript component

•	Support for using macros in SQL

•	Easy migration from BDE and ADO with Migration Wizard

•	Lets you use Professional Edition of Delphi and C++Builder to develop client/server applications

•	Included annual SDAC Subscription with Priority Support

•	Licensed royalty-free per developer, per team, or per site

The full list of SDAC features you can find in the Features topic.

Editions

SQL Server Data Access Components comes in three editions: SDAC Standard Edition, SDAC Professional Edition, and SDAC Trial Edition.

SDAC Standard Edition includes the SDAC basic connectivity components and the SDAC Migration Wizard. SDAC Standard Edition is a good choice for beginning SQL Server developers and a cost-effective solution for database application developers who only need basic connectivity functionality for SQL Server.

SDAC Professional Edition shows off the full power of SDAC, enhancing SDAC Standard Edition with support for SQL Server-specific functionality. SDAC Professional Edition is intended for serious application developers who want to take advantage of all the SQL Server-specific functionality support provided by SDAC.

SDAC Trial Edition is the evaluation version of SDAC. It includes all the functionality of SDAC Professional Edition with a trial limitation of 60 days. C++Builder and supported .NET IDEs have additional trial limitations*.

You can get source code of all the component classes in SDAC by purchasing the special SDAC Professional Edition with Source Code**.

For more information about how to get the SDAC edition you want, visit the How to Order section.

SDAC Edition Matrix

__________________________________________________________________________________

Feature                                       |Professional**| Standard  | Trial

______________________________________________|______________|___________|________

Base Components                               |       +      |     +     |   +

(TMSConnection, TMSQuery, TMSSQL, TMSTable,   |              |           |
 TMSStoredProc, TMSUpdateSQL, TMSSQLMonitor,  |              |           |
 TMSConnectDialog, TMSScript, TMSDataSource,  |              |           |
 TCRDBGrid, TVirtualTable, MSDataAdapter)     |              |           |

______________________________________________|______________|___________|________

Additional Components                         |       +      |           |   +

(TMSLoader, TMSDump, TMSServiceBroker,        |              |           |
 TMSMetadata, TCRBatchMove)                   |              |           |

______________________________________________|______________|___________|________

Design-time features, including component     |       +      |     +     |   +

editors and property editors                  |              |           |

______________________________________________|______________|___________|________

DataSet Manager***                            |       +      |           |   +

______________________________________________|______________|___________|________

Migration Wizard***                           |       +      |     +     |   +

______________________________________________|______________|___________|________

Trial limitations*                            |              |           |   +

______________________________________________|______________|___________|________

* Trial Edition is a fully working version of SDAC Professional Edition for a trial period of 60 days on most supported IDEs. After the trial period expires you must either register or uninstall SDAC. SDAC Trial Edition requires the IDE to be launched on the target workstation when testing .NET applications and applications written on C++Builder. For more information about trial limitations see the Ordering topic.

** Professional edition with source code is available. Migration Wizard, DataSet Manager source code is not distributed.

*** Not available for C++Builder and Delphi 8.


Getting Started
SQL Server Data Access Components

Getting Started

This page contains a quick introduction to setting up and using the SQL Server Data Access Components library. It gives a walkthrough for each part of the SDAC usage process and points out the most relevant related topics in the documentation.

What is SDAC?

How does SDAC work?

Installing SDAC.

Working with the SDAC demo projects.

Compiling and deploying your SDAC project.

Using the SDAC documentation.

How to get help with SDAC.

What is SDAC?

SQL Server Data Access Components (SDAC) is a component library which provides direct connectivity to SQL Server for Delphi, Delphi for .NET and C++Builder, and helps you develop fast SQL Server-based database applications with these environments.

Many SDAC classes are based on VCL, VCL for .NET, and CLX classes and interfaces. SDAC is a replacement for the Borland Database Engine, provides native database connectivity, and is specifically designed as an interface to the SQL Server database.

An introduction to SDAC is provided in the Overview section.

A list of the SDAC features you may find useful is listed in the Features section.

An overview of the SDAC component classes is provided in the Components List section.

How does SDAC work?

SDAC uses OLE DB directly through a set of COM-based interfaces to connect to server. SDAC is designed to be lightweight and consists of a minimal layer between your code and SQL Server databases.

In comparison, the Borland Database Engine (BDE) uses several layers to access SQL Server, and requires additional data access software to be installed on client machines.

The BDE data transfer protocol is shown below.

BDE Connection Protocol

SDAC works directly through OLE DB, which is a native SQL Server interface. Applications with SDAC components access server directly:

SDAC Connection Flow

Installing SDAC

To install SDAC, complete the following steps.

1.	Choose and download the version of the SDAC installation program that is compatible with your IDE. For instance, if you are installing SDAC 4.00, you should use the following files:

For BDS 2006 and Turbo - sdac400d10.exe

For Delphi 7 - sdac400d7.exe

   For more information, visit the the SDAC download page.

2.	Close all running IDEs.

3.	Launch the SDAC installation program you downloaded in the first step and follow the instructions to install SDAC.

By default, the SDAC installation program should install compiled SDAC libraries automatically on all IDEs.

To check SDAC has been installed properly, launch your IDE and make sure that an SQL Server Access page has been added to the Component palette and that an SQL Server menu was added to the Menu bar.

If you have bought SDAC Professional Edition with Source Code, you will be able to download both the compiled version of SDAC and the SDAC source code. The installation process for the compiled version is standard, as described above.The SDAC source code must be compiled and installed manually. Consult the supplied ReadmeSrc.txt file for more details.

To find out what gets installed with SDAC or to troubleshoot your SDAC installation, visit the Installation topic.

Working with the SDAC demo projects

The SDAC installation package includes a number of demo projects that demonstrate SDAC capabilities and use patterns. The SDAC demo projects are automatically installed in the SDAC installation folder.

To quickly get started working with SDAC, launch and explore the introductory SDAC demo project, SdacDemo, from your IDE. This demo project is a collection of demos that show how SDAC can be used. The project creates a form which contains an explorer panel for browsing the included demos and a view panel for launching and viewing the selected demo.

SdacDemo Walkthrough

1.	 Launch your IDE.

2.	 Choose File | Open Project from the menu bar

3.	Find the SDAC directory and open the SdacDemo project. This project should be located in the Demos\SdacDemo folder.

    For example, if you are using Borland Developer Studio 2006, the demo project may be found at

\Program Files\CoreLab\Sdac for Delphi 2006\Demos\Win32\SdacDemo\SdacDemo.bdsproj

4.	Select Run | Run or press F9 to compile and launch the demo project. SdacDemo should start, and a full-screen SDAC Demo window with a toolbar, an explorer panel, and a view panel will open. The explorer panel will contain a list of all the demo sub-projects included in SdacDemo, and the view panel will contain an overview of each included demo.

At this point, you will be able to browse through the available demos, read their descriptions, view their source code, and see the functionality provided by each demo for interacting with SQL Server. However, you will not be able to actually retrieve data from SQL Server or execute commands until you connect to the database.

5.	Click on the "Connect" button in the SdacDemo toolbar. A Connect dialog box will open. Enter the connection parameters you use to connect to your SQL Server server and click "Connect" in the dialog box.

Now you have a fully functional interface to your SQL Server server. You will be able to go through the different demos, to browse tables, create and drop objects, and execute SQL commands.

Warning!  All changes you make to the database you are connected to, including creating and dropping objects used by the demo, will be permanent. Make sure you specify a test database in the connection step.

6.	Click on the "Create" button to create all the objects that will be used by SdacDemo. If some of these objects already exist in the database you have connected to, the following error message will appear.

 An error has been occured: There is already an object named 'SDAC_Long_char' in the database.

You can manually create objects required for demo by using the following file: %SDAC%\Demos\InstallDemoObjects.sql

%SDAC% is the SDAC installation path on your computer.

Ignore this exception?

This is a standard warning from the object execution script. Click "Yes to All" to ignore this message. SdacDemo will create the SdacDemo objects on the server you have connected to.

7.	Choose a demo that demonstrates an aspect of working with SQL Server that you are interested in, and play with the demo frame in the view window on the right. For example, to find out more about how to work with SQL Server tables, select the Table demo from the "Working with Components" folder. A simple SQL Server table browser will open in the view panel which will let you open a table in your database by specifying its name and clicking on the Open button.

8.	Click on the "Demo source" button in the SdacDemo toolbar to find out how the demo you selected was implemented. The source code behind the demo project will appear in the view panel. Try to find the places where SDAC components are used to connect to the database.

9.	Click on the "Form as text" button in the SdacDemo toolbar to view the code behind the interface to the demo. Try to find the places where SDAC components are created on the demo form.

10.	 Repeat these steps for other demos listed in the explorer window. The available demos are organized in three folders.

Working with components

A collection of projects that show how to work with the basic SDAC components.

General demos

A collection of projects that show off the SDAC technology and demonstrate some ways to work with data.

SQL Server-specific demos

A collection of projects that demonstrate how to incorporate SQL Server features in database applications.

11.	 When you are finished working with the project, click on the "Drop" button in the SdacDemo toolbar to remove all the schema objects added in Step 6.

Other SDAC demo projects

SDAC is accompanied by a number of other demo projects. A description of all the SDAC demos is located in the Demo Projects topic.

Compiling and deploying your SDAC project

Compiling SDAC-based projects

By default, to compile a project that uses SDAC classes, your IDE compiler needs to have access to the SDAC dcu (obj) files. If you are compiling with runtime packages, the compiler will also need to have access to the SDAC bpl files. All the appropriate settings for both of these scenarios should take place automatically during installation of SDAC. You should only need to modify your environment manually if you are using SDAC Professional Edition with Source Code.

You can check that your environment is properly configured by trying to compile one of the SDAC demo projects. If you have no problem compiling and launching the SDAC demos, your environment has been properly configured.

For more information about which library files and environment changes are needed for compiling SDAC-based projects, consult the Installation topic.

Deploying SDAC-based projects

To deploy an application that uses SDAC, you will need to make sure the target workstation has access to the following files.

•	The SDAC bpl files, if compiling with runtime packages.

•	The SDAC assembly files, if are using VCL for .NET components.

If you are evaluating deploying projects with SDAC Trial Edition, you will also need to deploy some additional bpl files with your application even if you are compiling without runtime packages. As another trial limitation for C++Builder, applications written SDAC Trial Edition for C++Builder will only work if the C++Builder IDE is launched. More information about SDAC Trial Edition limitations is provided here.

A list of the files which may need to be deployed with SDAC-based applications is included in the Deployment topic.

Using the SDAC documentation

The SDAC documentation describes how to install and configure SDAC, how to use SDAC Demo Projects, and how to use the SDAC libraries.

The SDAC documentation includes a detailed reference of all the SDAC components and classes. Many of the SDAC components and classes inherit or implement members from other VCL, VCL for .NET, CLX classes and interfaces. The product documentation also includes a summary of all members within each of these classes. To view a detailed description of a particular component, look it up in the Components List section. To find out more about a specific standard VCL/CLX class an SDAC component is inherited from, see the corresponding topic in your IDE documentation.

At install time, the SDAC documentation is integrated into your IDE. It can be invoked from the SQL Server menu added to the Menu Bar, or by pressing F1 in an object inspector or on a selected code segment.

How to get help with SDAC

There are a number of resources for finding help on using SDAC classes in your project.

•	If you have a question about SDAC installation or licensing, consult the Licensing and FAQ sections.

•	You can get community assistance and SDAC technical support on the SDAC Forum.

•	To get help through the SDAC Priority Support program, send an email to the SDAC development team at sdac@crlab.com.

•	If you have a question about ordering SDAC or any other Core Lab product, contact sales@crlab.com.

For more information, consult the Getting Support topic.


Features
SQL Server Data Access Components

Features

General usability:

•	Direct access to server data. Does not require installation of other data provider layers (such as BDE and ODBC)

•	Interface compatible with standard data access methods, such as BDE and ADO

•	VCL and VCL for .NET versions of library available

•	Separated run-time and GUI specific parts allow you to create pure console applications such as CGI

•	Unicode support

Network and connectivity:

•	Disconnected Model with automatic connection control for working with data offline

•	Local Failover for detecting connection loss and implicitly reexecuting certain operations

•	Connection string support

•	Ability to search for installed SQL Server databases in a local network

Compatibility:

•	Full support of the latest Microsoft SQL Server versions, including Express and Compact editions

•	Support for all SQL Server data types

•	Compatible with Delphi 5 through 8, Delphi 2005, BDS 2006, Delphi 2007 for Win32, C++Builder 5, 6, and 2007, and Borland Turbos

•	Wide reporting component support, including support for InfoPower, ReportBuilder, and FastReport

•	Wide support of all standard Borland and third-party visual data-aware controls

•	Allows you to use Professional Edition of Delphi and C++Builder to develop client/server applications

SQL Server technology support:

•	TMSLoader component for improving record insertion performance

•	TMSServiceBroker component for SQL Server 2005 queuing and reliable messaging

•	Possibility to change application name for a connection

•	Possibility to change workstation identifier for a connection

•	Configuration of OEM/ANSI character translation

Performance:

•	High overall performance

•	Fast controlled fetch of large data blocks

•	Optimized string data storing

•	Advanced connection pooling

•	Incredible performance of applying updates in CachedUpdates mode

•	Caching of calculated and lookup fields

•	Fast Locate in a sorted DataSet

•	Preparing of user-defined update statements

Local data storage operations:

•	Database-independent data storage with TVirtualTable component

•	CachedUpdates operation mode

•	Local sorting and filtering, including by calculated and lookup fields

•	Local master/detail relationship

•	Master/detail relationship in CachedUpdates mode

Data access and data management automation:

•	Automatic data updating with TMSQuery, TMSTable and TMSStoredProc components

•	Automatic record refreshing

•	Automatic query preparing

•	Support for ftWideMemo field type in Delphi 2006 and higher

Extended data access functionality:

•	Separate component for executing SQL statements

•	Simplified access to table data with TMSTable component

•	Ability to retrieve metadata information with TMSMetaData component

•	BLOB compression support

•	Support for using macros in SQL

•	FmtBCD fields support

•	NonBlocking mode allows background executing and fetching data in separate threads

•	Ability to customize update commands by attaching external components to TMSUpdateSQL objects.

•	Deferred detail DataSet refresh in master/detail relationships

•	MIDAS technology support

•	MSDataAdapter component for WinForms and ASP.NET applications.

Data exchange:

•	Transferring data between all types of TDataSet descendants with TCRBatchMove component

•	Data export and import to/from XML (ADO format)

•	Ability to synchronize positions in different DataSets

Script execution:

•	Advanced script execution features with TMSScript component

•	Support for executing individual statements in scripts

•	Support for executing huge scripts stored in files with dynamic loading

•	Optimized multi-statement script execution

SQL execution monitoring:

•	Extended SQL tracing capabilities provided by TMSSQLMonitor component and DBMonitor

•	Borland SQL Monitor support

•	Ability to send messages to DBMonitor from any point in your program

Visual extensions:

•	Includes source code of enhanced TCRDBGrid data-aware grid control

•	Customizable connection dialog

•	Cursor changes during non-blocking execution

Design-time enhancements:

•	DataSet Manager tool to control DataSet instances in the project

•	Advanced design-time component and property editors

•	Automatic design-time component linking

•	Easy migration from BDE and ADO with Migration Wizard

•	More convenient data source setup with the TMSDataSource component

•	Syntax highlighting in design-time editors

Product clarity:

•	Complete documentation sets

•	Printable documentation in PDF format

•	A large amount of helpful demo projects

Error handling:

•	Multiple error processing support

•	Unicode error messages support

Licensing and support:

•	Included annual SDAC Subscription with Priority Support

•	Licensed royalty-free per developer, per team, or per site


What's New
SQL Server Data Access Components

What's New

12-Jun-07 New Features in SQL Server Data Access Components 4.10:

•	C++Builder 2007 supported

22-Mar-07 New Features in SQL Server Data Access Components 4.00:

New functionality:

•	Delphi 2007 for Win32 supported

•	Implemented Disconnected Model for working offline and automatically connecting and disconnecting

•	Implemented Local Failover for detecting connection loss and implicitly re-executing some operations

•	Added DataSet Manager to control project datasets

•	New TMSScript component for easy execution of multistatement scripts with the following features added:

•	Support for executing individual statements in scripts

•	Support for executing huge scripts stored in files with dynamic loading

•	Support for using standard SQL Server client tool syntax

•	New TMSServiceBroker component for SQL Server 2005 queuing and reliable messaging added

•	New TCRBatchMove component for transferring data between all types of TDataSet descendants added

•	New TMSDump component for loading data to and from the server added

•	Support for data export and import to/from XML

•	WideMemo field type in Delphi 2006 supported

•	Support for sending messages to DBMonitor from any point in your program added

•	Added asynchronous execute and fetch modes

•	Compressed BLOB support

Support for more SQL Server server functionality:

•	SQL Server Compact Edition supported

•	Multiple Active Result Sets (MARS) supported

•	Support for new data types, including XML, varchar(MAX), nvarchar(MAX), varbinary(MAX) added

•	Improved record insertion performance with new TMSLoader component

•	Added support for a new level of transaction isolation added

•	Support for more server objects in TMSMetaData added

•	Stored procedure parameters with default values supported

Extensions and improvements to existing functionality:

•	General performance improved

•	Master/detail functionality extensions:

•	Local master/detail relationships support added

•	Master/detail relationships in CachedUpdates mode support added

•	Working with calculated and lookup fields improvements:

•	Local sorting and filtering added

•	Record location speed increased

•	Improved working with lookup fields

•	Greatly increased performance of applying updates in CachedUpdates mode

•	Connection pool functionality improvements:

•	Efficiency significantly improved

•	API for draining the connection pool added

•	Ability to customize update commands by attaching external components to TMSUpdateSQL objects added

•	Support for DefaultValues on record insertion added

•	Some performance improvements achieved:

•	NUMERIC fields fetching

•	Improved performance of executing Update commands while editing a dataset

•	DataSet refreshing

•	Record refreshing after updates and inserts

•	Support for selecting database name in TMSConnectDialog component

Usability improvements:

•	Syntax highlighting in design-time editors added

•	Completely restructured and clearer demo projects

•	Added a FAQ section

28-Aug-06 New Features in SQL Server Data Access Components 3.80:

•	Professional editions of Turbo Delphi, Turbo Delphi for .NET, Turbo C++ supported

26-Jan-06 New Features in SQL Server Data Access Components 3.70:

•	Support for Delphi 2006 added

•	Support for MS SQL Server 2005 added

30-May-05 New Features in SQL Server Data Access Components 3.55:

•	Ability of automatic preparing query with TCustomDADataSet.Options.AutoPrepare property added

•	Ability to synchronize position at different DataSets with TCustomDADataSet.GotoCurrent method added

•	Optimized MSSQLMonitor BLOB parameters processing

•	Improved behavior on editing master key on Master/Detail relation

24-Jan-05 New Features in SQL Server Data Access Components 3.50:

•	Support for Delphi 2005 added

•	Support for MS SQL Server 2005 beta 2 added

•	Guid fields support for VirtualTable added

21-Oct-04 New Features in SQL Server Data Access Components 3.00:

•	Support for Delphi 8 added

•	Local sorting ability with TMemDataSet.IndexFieldNames added

•	Connection pooling support

•	TCRDBGrid sources in Standard edition

•	MSDataAdapter component added

•	.NET Windows Forms demo project added

•	ASP.NET demo project added

•	TMSConnection.GetStoredProcNames, GetTableNames, GetDatabaseNames added

•	TMSConnection.ClientVersion, ServerVersion added

•	Milliseconds support added

27-Jul-04 New Features in SQL Server Data Access Components 2.45.2:

•	Methods TMSSQL.BreakExec and TCustomMSDataSet.BreakExec added

•	Property TMSConnection.Options.AutoTranslate added

•	Method ExecSQL in TMSConnection added

•	Methods GetTableNames and GetDatabaseNames in TMSConnection added

•	Unicode support for Locate on Win9x added

02-Oct-03 New Features in SQL Server Data Access Components 2.45:

•	Property MSConnection.Options.WorkstationID added

•	Performance to insert large BLOBs improved

•	Performance significantly improved

•	Event TMSConnection.OnInfoMessage added

•	Multiple Errors support added

•	Property MSConnection.Options.ApplicationName added

•	Property TBlob.AsWideString added

•	Parameters parsing improved. Symbol ':' in string literals is ignored

•	Network error processing improved

•	Performance demo added

04-Apr-03 New Features in SQL Server Data Access Components 2.40:

•	WideString support added

•	Property MSDataSet.Options.QuoteNames added

•	Property MSConnection.Options.KeepDesignConnected added

•	Property MSConnectDialog.StoreLogInfo published

24-Feb-03 New Features in SQL Server Data Access Components 2.35:

•	Speed optimization for opening small queries

•	MSConnection.Options added

•	Limited MSConnection.ConnectString support added

•	Output string and (var)bytes parameters are now obtained from the server with the maximum length not depending on set Param.Size

•	DBMonitor client implementation moved to COM server

26-Dec-02 New Features in SQL Server Data Access Components 2.30:

•	Delphi 7 supported

•	New memory management model for ftString and ftVarBytes types added

•	Support for blob fields in CachedUpdates mode added

09-Aug-02 New Features in SQL Server Data Access Components 2.05:

•	DBMonitor support

18-Jul-02 New Features in SQL Server Data Access Components 2.00:

•	Server cursors supported

•	Queries with Multiple Result Sets supported

•	Performance improved

•	Opening queries without fetching all rows to client (FetchAll = False) supported

•	UniDirectional support added

•	Quick getting Identity value

•	Refresh supported for StoredProc

•	FullRefresh supported

•	Check for old row values while executing Update and Delete added

•	Changed behavior on close connection with open transaction from Commit to Rollback

21-Mar-02 New Features in SQL Server Data Access Components 1.30:

•	C++Builder 6 supported

08-Nov-01 New Features in SQL Server Data Access Components 1.20:

•	Added TMSParam class to represent parameters

•	Query Analyzer and Enterprise Manager integration added

•	Accelerated getting identity value on refresh


Demo Projects
SQL Server Data Access Components

Demo Projects

SDAC includes a number of demo projects that show off the main SDAC functionality and development patterns.

The SDAC demo projects consist of one large project called SdacDemo with demos for all the main SDAC components, use cases, and data access technologies, and a number of smaller projects on how to use SDAC in different IDEs and how to integrate SDAC with third-party components.

Most demo projects are built for Delphi and Borland Developer Studio. There are only two SDAC demos for C++Builder. However, the C++Builder distribution includes source code for all the other demo projects as well.

Where are the SDAC demo projects located?

In most cases all the SDAC demo projects are located in "%Sdac%\Demos\".

In Delphi 2007 for Win32 under Windows Vista all the SDAC demo projects are located in "My Documents\CoreLab\Sdac for Delphi 2007\Demos", for example "C:\Documents and Settings\All Users\Documents\CoreLab\Sdac for Delphi 2007\Demos\".

The structure of the demo project directory depends on the IDE version you are using.

For most new IDEs with .NET support, the structure will be as follows.

 Demos

|—dotNet

|  |—SdacDemo [.NET version of the main SDAC demo project]

|  |—TechnologySpecific

|  |  |— MSSQLCompact [.NET version of the demo, using SQL Server 2005 Compact Edition]

|  |—Miscellaneous

|     |— [Some other .NET demo projects]

|-Win32

|—SdacDemo [Win32 version of the main SDAC demo project]

|—ThirdParty

|  |— [A collection of demo projects on integration with third-party components]

|—TechnologySpecific

|  |— MSSQLCompact [Win32 version of the demo, using SQL Server 2005 Compact Edition]

|—Performance [Demo project, that compares performance of SDAC with another components (BDE, ADO, dbExpress)]

|—Miscellaneous

   |— [Some other Win32 demo projects on design technologies]

In Delphi 5, 6, 7, and C++Builder 5, 6, .NET is not supported, and the root directories is omitted. For these IDEs you will see the following structure.

 Demos

|—SdacDemo [The main SDAC demo project]

|—TechnologySpecific

|  |— MSSQLCompact [Win32 version of the demo, using SQL Server 2005 Compact Edition]

|—ThirdParty

|  |— [A collection of demo projects on integration with third-party components]

|—Performance [Demo project, that compares performance of SDAC with another components (BDE, ADO, dbExpress)]

|—Miscellaneous

   |— [Some other demo projects on design technologies]

SdacDemo is the main demo project that shows off all the SDAC functionality. The other directories contain a number of supplementary demo projects that describe special use cases. A list of all the samples in the SDAC demo project and a description for the supplementary projects is provided in the following section.

Note:  This documentation describes ALL the SDAC demo projects. The actual demo projects you will have installed on your computer depends on your SDAC version, SDAC edition, and the IDE version you are using. The integration demos may require installation of third-party components to compile and work properly.

Instructions for using the SDAC demo projects

To explore an SDAC demo project,

1.	 Launch your IDE.

2.	 In your IDE, choose File|Open Project from the menu bar.

3.	Find the directory you installed SDAC to and open the Demos folder.

4.	Browse through the demo project folders located here and open the project file of the demo you would like to use.

5.	Compile and launch the demo. If it exists, consult the ReadMe.txt file for more details.

The included sample applications are fully functional. To use the demos, you have to first set up a connection to SQL Server. You can do so by clicking on the "Connect" button.

Many demos may also use some database objects. If so, they will have two object manipulation buttons, "Create" and "Drop". If your demo requires additional objects, click "Create" to create the necessary database objects. When you are done with a demo, click "Drop" to remove all the objects used for the demo from your database.

Note:  The SDAC demo directory includes two sample SQL scripts for creating and dropping all the test schema objects used in the SDAC demos. You can modify and execute this script manually, if you would like. This will not change the behavior of the demos.

You can find a complete walkthrough for the main SDAC demo project in the Getting Started topic. The other SDAC demo projects include a ReadMe.txt file with individual building and launching instructions.

Demo project descriptions

SdacDemo

 SdacDemo is one large project which includes three collections of demos.

Working with components

A collection of samples that show how to work with the basic SDAC components.

General demos

A collection of samples that show off the SDAC technology and demonstrate some ways to work with data.

SQL Server-specific demos

A collection of samples that demonstrate how to incorporate SQL Server features in database applications.

SdacDemo can be opened from %Sdac%\Demos\SdacDemo\SdacDemo.dpr (.bdsproj). The following table describes all the demos contained in this project.

Name	Description

Working with Components

ConnectDialog	Demonstrates how to customize the SDAC connect dialog. Changes the standard SDAC connect dialog to two custom connect dialogs. The first customized sample dialog is inherited from the TForm class, and the second one is inherited from the default SDAC connect dialog class.

CRGrid	Demonstrates how to work with the TCRDBGrid component. Shows off the main TCRDBGrid features, like filtering, searching, stretching, using compound headers, and more.

Loader	Uses the TMSLoader component to quickly load data into a server table. This demo also compares the two TMSLoader data loading handlers: GetColumnData and PutData.

Query	Demonstrates working with TMSQuery, which is one of the most useful SDAC components. Includes many TMSQuery usage scenarios. Demonstrates how to execute queries in both standard and NonBlocking mode and how to edit data and export it to XML files. Note: This is a very good introductory demo. We recommend starting here when first becoming familiar with SDAC.

Sql	Uses the TMSSQL component to execute SQL statements. Demonstrates how to work in a separate thread, in standard mode, in NonBlocking mode, and how to break long-duration query execution.

StoredProc	Uses the TMSStoredProc component to access an editable recordset from an  SQL Server stored procedure in the client application.

Table	Demonstrates how to use TMSTable to work with data from a single table on the server without manually writing any SQL queries. Performs server-side data sorting and filtering and retrieves results for browsing and editing.

UpdateSQL	Demonstrates using the TMSUpdateSQL component to customize update commands. Lets you optionally use TMSSQL and TMSQuery objects for carrying out insert, delete, query, and update commands.

VirtualTable	Demonstrates working with the TVirtualTable component. This sample shows how to fill virtual dataset with data from other datasets, filter data by a given criteria, locate specified records, perform file operations, and change data and table structure.

General Demos

CachedUpdates	Demonstrates how to perform the most important tasks of working with data in CachedUpdates mode, including highlighting uncommitted changes, managing transactions, and committing changes in a batch.

FilterAndIndex	Demonstrates SDAC's local storage functionality. This sample shows how to perform local filtering, sorting, and locating by multiple fields, including by calculated and lookup fields.

MasterDetail	Uses SDAC functionality to work with master/detail relationships. This sample shows how to use local master/detail functionality. Demonstrates different kinds of master/detail linking, inluding linking by SQL, by simple fields, and by calculated fields.

Pictures	Uses SDAC functionality to work with BLOB fields and graphics. The sample demonstrates how to retrieve binary data from SQL Server database and display it on visual components. Sample also shows how to load and save pictures to files and to the database.

StoredProcUpdates	Demonstrates updating a recordset using stored procedures. Update events are tied to stored procedure calls in design time, and every recordset change causes the corresponding stored procedure call to be performed. The commands to call stored procedures are stored in the SQLInsert, SQLDelete, SQLUpdate properties of TMSQuery.

Threads	Demonstrates how SDAC can be used in multithreaded applications. This sample allows you to set up several threads and test SDAC's performance with multithreading.

SQL Server-specific Demos

LongStrings	Demonstrates SDAC functionality for working with long string fields ( fields that have more than 256 characters). Shows the different ways they can be displayed as memo fields and string fields.

ServerCursors	Compares performance of opening a large recordset with different cursor types: client cursor in FetchAll=True mode, client cursor in FetchAll=False mode, and server cursor.

Text	Uses SDAC functionality to work with text. The sample demonstrates how to retrieve text data from SQL Server database and display it on visual components. Sample also shows how to load and save text to files and to the database.

Supplementary Demo Projects

SDAC also includes a number of additional demo projects that describe some special use cases, show how to use SDAC in different IDEs and give examples of how to integrate it with third-party components. These supplementary SDAC demo projects are sorted into subfolders in the %Sdac%\Demos\ directory.

Location	Name	Description

dotNet/	[folder appears only for IDEs with support for .NET]

Miscellaneous	AspNet	Uses MSDataAdapter to create a simple ASP .NET application. This application creates an ASP.NET application that lets you connect to a database and execute queries. Shows how to display query results in a DataGrid and send user changes back to the database.

WinForms	Shows how to use SDAC to create a WinForm application. This demo project creates a simple WinForms application and fills a data grid from an MSDataAdapter data source.

SdacDemo	SdacDemo	[.NET version of the main SDAC demo project - see above]

TechnologySpecific	MSSQLCompact	Demonstrates how to create applications that work with Microsoft SQL Server Compact Edition. Demo connects to a database and opens a table. If the specified database does not exists, it will be created automatically. User must have SQL Server 2005 Compact Edition installed to test this demo. This is the .NET version of the project.

Win32/	[folder appears only for IDEs with support for .NET. For all other IDEs contents appear in root]

ThirdParty	FastReport	Demonstrates how SDAC can be used with FastReport components. This project consists of two parts. The first part is several packages that integrate SDAC components into the FastReport editor. The second part is a demo application that lets you design and preview reports with SDAC technology in the FastReport editor.

InfoPower	Uses InfoPower components to display recordsets retrieved with SDAC. This demo project displays an InfoPower grid component and fills it with the result of an SDAC query. Shows how to link SDAC data sources to InfoPower components.

IntraWeb	A collection of sample projects that show how to use SDAC components as data sources for IntraWeb applications. Contains IntraWeb samples for setting up a connection, querying a database and modifying data and working with CachedUpdates and MasterDetail relationships.

QuickReport	Lets you launch and view a QuickReport application based on SDAC. This demo project lets you modify the application in design-time.

ReportBuilder	Uses SDAC data sources to create a ReportBuilder report that takes data from SQL Server database. This demo project shows how to set up a ReportBuilder document in design-time and how to integrate SDAC components into the Report Builder editor to perform document design in run-time.

Miscellaneous	CBuilder	A general demo project about how to create SDAC-based applications with C++Builder. Lets you execute SQL scripts and work with result sets in a grid. This is one of the two SDAC demos for C++Builder.

Dll	Demonstrates creating and loading DLLs for SDAC-based projects. This demo project consists of two parts - an MS_Dll project that creates a DLL of a form that sends a query to the server and displays its results, and an MS_Exe project that can be executed to display a form for loading and running this DLL. Allows you to build a dll for one SDAC-based project and load and test it from a separate application.

FailOver	Demonstrates the recommended approach to working with unstable networks. This sample lets you perform transactions and updates in several different modes, simulate a sudden session termination, and view what happens to your data state when connections to the server are unexpectedly lost. Shows off CachedUpdates, LocalMasterDetail, FetchAll, Pooling, and different Failover modes.

Midas	Demonstrates using MIDAS technology with SDAC. This project consists of two parts: a MIDAS server that processes requests to the database and a thin MIDAS client that displays an interactive grid. This demo shows how to build thin clients that display interactive components and delegate all database interaction to a server application for processing.

Performance	Measures SDAC performance on several types of queries. This project lets you compare SDAC performance to BDE, ADO, and dbExpress. Tests the following functionality: Fetch, Master/Detail, Stored Procedure Call, Multi Executing, and Insert/Post.

VirtualTableCB	Demonstrates working with the TVirtualTable component. This sample shows how to fill virtual dataset with data from other datasets, filter data by a given criteria, locate specified records, perform file operations, and change data and table structure. This is one of the two demo projects for C++Builder

TechnologySpecific	MSSQLCompact	Demonstrates how to create applications that work with Microsoft SQL Server Compact Edition. Demo connects to a database and opens a table. If the specified database does not exists, it will be created automatically. User must have SQL Server 2005 Compact Edition installed to test this demo. This is the Win32 version of the project.

SdacDemo	SdacDemo	[Win32 version of the main SDAC demo project - see above]


Component List
SQL Server Data Access Components

Component List

This topic presents a brief description of the components included in the SQL Server Data Access Components library. Click on the name of each component for more information. These components are added to the SQL Server Access page of the Component palette except for TCRBatchMove and TVirtualTable components. TCRBatchMove and TVirtualTable components are added to the Data Access page of the Component palette. Basic SDAC components are included in all SDAC editions. SDAC Professional Edition components are not included in SDAC Standard Edition.

Basic SDAC components

TMSConnection	Lets you set up and control connections to SQL Server.

TMSQuery	Uses SQL statements to retrieve data from SQL Server table or tables and supply it to one or more data-aware components through TDataSource component. Provides flexible update of data.

TMSSQL	Executes SQL statements and stored procedures, which do not return rowsets.

TMSTable	Lets you retrieve and update data in a single table without writing SQL statements.

TMSStoredProc	Executes stored procedures and functions.

TMSUpdateSQL	Lets you tune update operations for a DataSet component.

TMSDataSource	Provides an interface between a SDAC dataset components and data-aware controls on a form.

TMSScript	Executes sequences of SQL statements.

TMSSQLMonitor	Interface for monitoring dynamic SQL execution in SDAC-based applications.

TMSConnectDialog	Is used on client side to supply username, password and server name.

TVirtualTable	Provides dataset functionality for data that has no real database connection. This component is placed on the Data Access page of the Component palette, not on the SQL Server Access page.

MSDataAdapter	.NET component, uses TDataSet as data source for retrieving and saving data to System.Data.DataSet

SDAC Professional Edition components

TMSMetadata	Retrieves embracing metadata on specified SQL object.

TMSLoader	Provides quick loading data to SQL Server database.

TMSDump	Serves to store a database or its parts as a script and also to restore database from received script.

TMSServiceBroker	Lets you send and receive messages using the SQL Server 2005 Service Broker system.

TCRBatchMove	Transfers data between all types of TDataSets descendants. This component is placed on the Data Access page of the Component palette, not on the SQL Server Access page.


Hierarchy Chart
SQL Server Data Access Components

Hierarchy Chart

Many SDAC classes are inherited from standard VCL/CLX classes. The inheritance hierarchy chart for SDAC is shown below. The SDAC classes are represented by hyperlinks that point to their description in this documentation. A description of the standard classes can be found in the documentation of your IDE.

TObject

|—TPersistent

|—TComponent

|—TCustomConnection

|   |—TCustomDAConnection

|       |—TMSConnection

|—TDataSet

|   |—TMemDataSet

|       |—TCustomDADataSet

|       |   |—TCustomMSDataSet

|       |       |—TMSQuery

|       |       |—TCustomMSTable

|       |       |   |—TMSTable

|       |       |—TCustomMSStoredProc

|       |       |   |—TMSStoredProc

|       |       |—TMSMetaData

|       |—TVirtualTable

|—TDataSource

|   |—TCRDataSource

|       |—TMSDataSource

|—TCustomDASQL

|   |—TMSSQL

|—TCustomDASQLMonitor

|   |—TMSSQLMonitor

|—TCustomConnectDialog

|   |—TMSConnectDialog

|—TDALoader

|   |—TMSLoader

|—TDADump

|   |—TMSDump

|—TDAScript

|   |—TMSScript

|—DADataAdapter

|   |—MSDataAdapter

|—TCRBatchMove

|—TMSServiceBroker

|—TField

    |—TMSXMLField


Requirements
SQL Server Data Access Components

Requirements

SDAC requires OLE DB installed on workstation.

Note:

In current versions of Microsoft Windows, as Windows 2000, OLE DB is already included as standard package. But it's highly recommended to download latest version (newer than 2.5) of Microsoft Data Access Components (MDAC) at http://www.microsoft.com/data

If you are working with SQL Server 2005 Compact Edition, you should have it installed. You can download SQL Server 2005 Compact Edition from http://www.microsoft.com/sql/editions/compact/default.mspx. For more information visit Working with SQL Server 2005 Compact Edition.


Compatibility
SQL Server Data Access Components

Compatibility

SQL Server compatibility

SDAC supports SQL Server 2005 (including Express and Compact editions), SQL Server 2000, SQL Server 7 and MSDE.

IDE compatibility

SDAC can be used with the following integrated development environments:

•	CodeGear C++Builder 2007

•	CodeGear Delphi 2007 for Win32

•	Turbo Delphi Professional

•	Turbo Delphi for .NET Professional

•	Turbo C++ Professional

•	Borland Developer Studio 2006 including support of Delphi for Win32, Delphi for .NET and C++Builder Personality

•	Borland Delphi 2005

•	Borland Delphi 8

•	Borland Delphi 7

•	Borland Delphi 6

•	Borland Delphi 5

•	Borland C++Builder 6

•	Borland C++Builder 5

Only Architect, Enterprise, and Professional editions are supported.


Installation
SQL Server Data Access Components

Installation

This topic contains the environment changes made by the SDAC installer. If you are having problems with using SDAC or compiling SDAC-based products, check this list to make sure your system is properly configured.

Compiled versions of SDAC are installed automatically by the SDAC Installer for all supported IDEs. Versions of SDAC with Source Code must be installed manually. Installation of SDAC from sources is described in the supplied ReadMeSrc.txt file.

Before installing SDAC ...

Two versions of SDAC cannot be installed in parallel for the same IDE, and, since the Core Lab Data Access Components products have some shared bpl files, newer versions of SDAC may be incompatible with older versions of MyDAC, IBDAC, and ODAC.

So before installing a new version of SDAC, uninstall any previous version of SDAC you may have, and check if your new install is compatible with other Core Lab Data Access Components products you have installed. For more information please see Using several products in one IDE. If you run into problems or have any compatibility questions, please email sdac@crlab.com

Note: You can avoid performing SDAC uninstallation manually when upgrading to a new version by directing the SDAC installation program to overwrite previous versions. To do this, execute the installation program from the command line with a /force parameter (Start | Run and type sdacXX.exe /force, specifying the full path to the appropriate version of the installation program).

Installed packages

The SDAC package libraries are divided into Win32 project files and .NET project files.

Note: %SDAC% denotes the path to your SDAC installation directory.

Delphi/C++Builder Win32 project packages

Name	Description	Location

dacXX.bpl	DAC run-time package	Windows\System32

dcldacXX.bpl	DAC design-time package	Delphi\Bin

dacvclXX.bpl*	DAC VCL support package	Delphi\Bin

sdacXX.bpl	SDAC run-time package 	Windows\System32

dclsdacXX.bpl	SDAC design-time package	Delphi\Bin

sdacvclXX.bpl*	VCL support package	Delphi\Bin

crcontrolsXX.bpl	TCRDBGrid component	Delphi\Bin

* Not included in Borland Delphi 5 and C++Builder 5. In these IDEs this functionality is distributed among the other packages.

Delphi for .NET project packages

Name	Description	Location

CoreLab.Dac.dll	DAC run-time package 	Global Assembly Cache

CoreLab.Dac.Design.dll	DAC design-time package	%SDAC%\Bin

CoreLab.Dac.AdoNet.dll	Data provider core package	Delphi\Bin

CoreLab.Sdac.dll	SDAC Delphi for .NET run-time package 	Global Assembly Cache

CoreLab.Sdac.Design.dll	SDAC design-time package	%SDAC%\Bin

CoreLab.Vcl.dll	TCRDBGrid component	Global Assembly Cache

CoreLab.Sdac.AdoNet.dll	Data provider for SQL Server package	Global Assembly Cache

Additional packages for using SDAC managers and wizards

Name	Description	Location

datasetmanagerXX.bpl 	DataSet Manager package 	Delphi\Bin

msmigwizardXX.dll	SDAC BDE Migration wizard	%SDAC%\Bin

Additional .NET packages for using SDAC managers and wizards

Name	Description	Location

CoreLab.Dac.DsManager.dll	DataSet Manager Assembly 	Global Assembly Cache

CoreLab.Sdac.MigWizard.dll*	SDAC BDE Migration wizard Assembly 	Global Assembly Cache

* Included in Borland Delphi 8 only

Environment Changes

To compile SDAC-based applications, your environment must be configured to have access to the SDAC libraries. Environment changes are IDE-dependent.

For all instructions, replace %SDAC% with the path to your SDAC installation directory

Delphi

•	%SDAC%\Lib should be included in the Library Path accessible from Tools | Enviroment options | Library.

 The SDAC Installer performs Delphi environment changes automatically for compiled versions of SDAC.

Delphi for .NET

•	CoreLab.Dac and CoreLab.Sdac should be included in the Namespace prefixes.

•	%SDAC%\Lib  should be included in the Library Path accessible from Tools | Options | Library - NET.

•	%SDAC%\Bin  should be included in the Library Path accessible from Tools | Options | Library - NET.

•	%SDAC%\Bin  should be included in the Component | Installed .NET components | Assembly Search Path.

 The SDAC Installer performs Delphi for .NET environment changes automatically for compiled versions of SDAC.

C++Builder

C++Builder 5, 6:

•	$(BCB)\SDAC\Lib should be included in the Library Path of the Default Project Options accessible from Project | Options | Directories/Conditionals.

•	$(BCB)\SDAC\Include  should be included in the Include Path of the Default Project Options accessible from Project | Options | Directories/Conditionals.

C++Builder 2006, 2007:

•	$(BCB)\SDAC\Lib should be included in the Library search path of the Default Project Options accessible from Project | Default Options | C++Builder | Linker | Paths and Defines.

•	$(BCB)\SDAC\Include  should be included in the Include search path of the Default Project Options accessible from Project | Default Options | C++Builder |  C++ Compiler | Paths and Defines.

 The SDAC Installer performs C++Builder environment changes automatically for compiled versions of SDAC.

To check that your environment has been properly configured, try to compile one of the demo projects included with SDAC. The SDAC demo projects are located in %SDAC%/Demos.

Installation of Additional Components and Add-ins

DBMonitor

DBMonitor is a an easy-to-use tool to provide visual monitoring of your database applications. It is provided as an alternative to Borland SQL Monitor which is also supported by SDAC. DBMonitor is intended to hamper application being monitored as less as possible. For more information, visit the DBMonitor page online.


Deployment
SQL Server Data Access Components

Deployment

SDAC requires OLE DB to be installed on workstation. In current versions of Microsoft Windows, as Windows 2000, OLE DB is already included as standard package. But it's highly recommended to download latest version (newer than 2.5) of Microsoft Data Access Components (MDAC) at http://www.microsoft.com/data

SDAC applications can be built and deployed with or without run-time libraries. Using run-time libraries is managed with the "Build with runtime packages" check box in the Project Options dialog box.

Deploying Win32 applications built without run-time packages

You can check your application does not require run-time packages by making sure the "Build with runtime packages" check box is not selected in the Project Options dialog box.

Trial Limitation Warning

If you are evaluating deploying Win32 applications with SDAC Trial Edition, you will need to deploy the following BPL files and their dependencies (required IDE BPL files) with your application, even if it is built without run-time packages:

dacXX.bpl	always

sdacXX.bpl	always

Deploying Win32 applications built with run-time packages

You can set your application to be built with run-time packages by selecting the "Build with runtime packages" check box in the Project Options dialog box before compiling your application.

In this case, you will also need to deploy the following BPL files with your Win32 application:

dacXX.bpl 	always

sdacXX.bpl	always

dacvclXX.bpl	if your application uses the SdacVcl unit

sdacvclXX.bpl	if your application uses the SdacVcl unit

crcontrolsXX.bpl	if your application uses the CRDBGrid component

Deploying .NET applications

By default you should deploy the following assemblies with your SDAC .NET application:

CoreLab.Dac.dll	always

CoreLab.Sdac.dll	always

CoreLab.Dac.AdoNet.dll	If your application uses MSDataAdapter component

CoreLab.Sdac.AdoNet.dll	If your application uses MSDataAdapter component

If you remove the names of these assemblies from the References list of your project, these files will not be required on the target computer.


Licensing and Subscriptions
SQL Server Data Access Components

Licensing and Subscriptions

SQL Server Data Access Components are licensed, not sold. Please carefully read the end-user license agreement (EULA) before using the product. You can find the EULA in the License.rtf file in the SDAC installation folder.

Licensing

There are three types of full licenses for SDAC: Single Licenses, Team Licenses, and Site Licenses.

Single Licenses must be purchased for each developer working on a project that uses SDAC.

Purchasing a Team License automatically gives four developers a Single License.

Purchasing a Site License automatically gives all developers in a company a Single License.

For evaluation purposes only, you may also use SDAC Trial Edition under a temporary Evaluation License, which allows you to test SDAC Trial Edition for a period of 60 days, after which you must either remove all files associated with SDAC or purchase a full license.

Licenses can be purchased for the following editions of SDAC: SDAC Standard Edition, SDAC Professional Edition, and SDAC Professional Edition with Source Code. An edition comparison chart can be found here.

To purchase a license for SDAC, please visit www.crlab.com/sdac/ordering.html.

If you have any questions regarding licensing, please contact sales@crlab.com.

Editions

Full licenses can be purchased for the following editions of SDAC: SDAC Standard Edition, SDAC Professional Edition, and SDAC Professional Edition with Source Code.

Users can evaluate SDAC with SDAC Trial Edition under the Evaluation License.

A comparison chart can be found here.

Subscriptions

The SDAC Subscription program is an annual maintenance and support service for SDAC users.

Users with a valid SDAC Subscription get the following benefits:

•	Product support through the SDAC Priority Support program

•	Access to new versions of SDAC when they are released

•	Access to all SDAC updates and bug fixes

•	Notification of new product versions

If you have any questions regarding licensing or subscriptions, please see the FAQ or contact sales@crlab.com.

Trial Limitations

The SDAC Evaluation License lets you try SDAC Trial Edition for a period of 60 days.

There are no functionality limitations in SDAC Trial Edition during the trial period for most supported IDEs, except the following:

•	 .NET applications and applications written in C++Builder require the corresponding IDE to be launched on the client workstation if they use SDAC Trial Edition

•	If you are deploying a project built with SDAC Trial Edition, you will need to include the SDAC library files in your application deployment package. For more information, consult the Deployment topic.


Getting Support
SQL Server Data Access Components

Getting Support

This page lists several ways you can find help with using SDAC and describes the SDAC Priority Support program.

Support Options

There are a number of resources for finding help on installing and using SDAC.

•	You can find out more about about SDAC installation or licensing by consulting the Licensing and FAQ sections.

•	You can get community assistance and technical support on the SDAC Community Forum.

•	You can get advanced technical assistance by SDAC developers through the SDAC Priority Support program.

If you have a question about ordering SDAC or any other Core Lab product, please contact sales@crlab.com.

SDAC Priority Support

SDAC Priority Support is an advanced product support service for getting expedited individual assistance with SDAC-related questions from the  SDAC developers themselves. Priority Support is carried out over email and has a two business day response policy. Priority Support is available for users with an active SDAC Subscription.

To get help through the SDAC Priority Support program, please send an email to sdac@crlab.com describing the problem you are having.  Make sure to  include the following information in your message:

•	The version of Delphi or C++Builder you are using.

•	Your SDAC Registration number.

•	Full SDAC edition name and version number. You can find both of these in the About sheet of TMSConnection Editor or from the SQL Server | About menu.

•	Versions of the SQL Server server and client you are using.

•	A detailed problem description.

•	If possible, a small test project that reproduces the problem. It is recommended to use Northwind objects only. Please include definitions for all objects of other schemas and avoid using third-party components.


FAQ
SQL Server Data Access Components

Frequently Asked Questions

This page contains a list of Frequently Asked Questions for SQL Server Data Access Components.

If you have encounter a question with using SDAC, please browse through this list first. If this page does not answer your question, refer to the Getting Support page.

Installation and Deployment

I'm having a problem with installing SDAC or compiling SDAC-based projects...

What software should be installed on the client computer so that my applications that use SDAC can run?

Licensing and Subscriptions

Am I entitled to distribute applications written with SDAC?

Can I create components using SDAC?

What licensing changes can I expect with SDAC 4.00?

What do the SDAC 4.00 Edition Levels correspond to?

I have a registered version of SDAC. Will I need to pay to upgrade to future versions?

What are the benefits of the SDAC Subscription Program?

Can I use my version of SDAC after my Subscription expires?

I want a SDAC Subscription! How can I get one?

Does this mean that if I upgrade to SDAC 4 from SDAC 3, I'll get an annual SDAC Subscription for free?

How do I upgrade to SDAC 4.00?

Performance

How productive is SDAC?

Why does the Locate function work so slowly the first time I use it?

How To

How can I enable syntax highlighting in SDAC component editors at design time?

How can I find out which version of SDAC I am using ?

How can I stop the cursor from changing to an hour glass during query execution?

How can I execute a query saved in the SQLInsert, SQLUpdate, SQLDelete, or SQLRefresh properties of a SDAC dataset?

How can I get a list of the databases on the server?

How can I get a list of the tables list in a database?

Some questions about the visual part of SDAC

General Questions

I would like to develop an application that works with SQL Server. Should I use SDAC or DbxSda?

What are the advantages of SDAC over Delphi ADO components for accessing SQL Server?

On connect I get error "OLE DB error occured. Code 800401F0h. CoInitialize has not been called." What can I do?

Are the SDAC connection components thread-safe?

When editing a DataSet, I get an exception with the message 'Update failed. Found %d records.' or 'Refresh failed. Found %d records.'

Some questions with using TCustomDADataSet.FetchAll=False mode

Installation and Deployment

1.	I'm having a problem with installing SDAC or compiling SDAC-based projects...

You may be having a compatibility issue that shows up in one or more of the following forms:

•	Get a "Setup has detected already installed DAC packages which are incompatible with current version" message during SDAC installation.

•	Get a "Procedure entry point ... not found in ... " message when starting IDE.

•	Get a "Unit ... was compiled with a different version of ..." message on compilation.

You can have such problems if you installed incompatible SDAC, ODAC, MyDAC or IBDAC versions. All these products use common base packages. The easiest way to avoid the problem is to uninstall all installed DAC products and then download from our site and install the last builds. For more information, see Using several DAC products in one IDE.

2.	What software should be installed on the client computer so that my applications that use SDAC can run?

SDAC requires OLE DB installed on the workstation. In current versions of Microsoft Windows, such as Windows 2000, OLE DB is already included as part of the standard installation. But it is highly recommended to download the latest version (newer than 2.5) of Microsoft Data Access Components (MDAC)

Licensing and Subscriptions

1.	Am I entitled to distribute applications written with SDAC?

If you have purchased a full version of SDAC, you are entitled to distribute pre-compiled programs created with its use. You are not entitled to propagate any components inherited from SDAC or using SDAC source code. For more information see the License.rtf file in your SDAC installation directory.

2.	Can I create components using SDAC?

You can create your own components that are inherited from SDAC or that use the SDAC source code. You are entitled to sell and distribute compiled application executables that use such components, but not their source code and not the components themselves.

3.	What licensing changes can I expect with SDAC 4.00?

The basic SDAC license agreement will remain the same. With SDAC 4.00, the SDAC Edition Matrix will be reorganized and a new SDAC Subscription program will be introduced.

4.	What do the SDAC 4.00 Edition Levels correspond to?

SDAC 4.00 will come in three editions: Standard Edition, Professional Edition, and Trial Edition. SDAC Professional Edition can be acquired with Source Code.

When you upgrade to the new version, your Edition Level will be automatically updated using the following Edition Correspondence Table.

Edition Correspondence Table for Upgrading to SDAC 4.00

Old Edition Level	New Edition Level
- No Correspondence -	SDAC Standard Edition
SDAC Standard Edition	SDAC Professional Edition
SDAC Professional Edition	SDAC Professional Edition with Sources
SDAC Trial Edition	SDAC Trial Edition

The feature list for each edition can be found here.

5.	I have a registered version of SDAC. Will I need to pay to upgrade to future versions?

After SDAC 4.00, all upgrades to future versions are free to users with an active SDAC Subscription.

Users that have a registration for versions of SDAC prior to SDAC 4.00 will have to first upgrade to SDAC 4.00 to jump in on the Subscription Program.

6.	What are the benefits of the SDAC Subscription Program?

The SDAC Subscription Program is an annual maintenance and support service for SDAC users.

Users with a valid SDAC Subscription get the following benefits:

•	Access to new versions of SDAC when they are released

•	Access to all SDAC updates and bug fixes

•	Product support through the SDAC Priority Support program

•	Notification of new product versions

Priority Support is an advanced product support program which offers you expedited individual assistance with SDAC-related questions from the SDAC developers themselves. Priority Support is carried out over email and has a guaranteed two business day response policy.

The SDAC Subscription Program is available for registered users of SDAC 4.00 and higher.

7.	Can I use my version of SDAC after my Subscription expires?

Yes, you can. SDAC version licenses are perpetual.

8.	I want a SDAC Subscription! How can I get one?

An annual SDAC Subscription is included when ordering or upgrading to any registered (non-Trial) edition of SDAC 4.00 or higher.

You can renew your SDAC Subscription on the SDAC Ordering Page. For more information, please contact sales@crlab.com.

9.	Does this mean that if I upgrade to SDAC 4 from SDAC 3, I'll get an annual SDAC Subscription for free?

Yes.

10.	How do I upgrade to SDAC 4.00?

To upgrade to SDAC 4.00, you can get a Version Update from the SDAC Ordering Page. For more information, please contact sales@crlab.com.

Performance

1.	How productive is SDAC?

SDAC uses the lowest documented protocol level (OLE DB) to access the database server. This allows SDAC to achieve high performance. From time to time we compare SDAC with other products, and SDAC always takes first place.

2.	Why does the Locate function work so slowly the first time I use it?

Locate is performed on the client. So if you had set FetchAll to False when opening your dataset, cached only some of the rows on the client, and then invoked Locate, SDAC will have to fetch all the remaining rows from the server before performing the operation. On subsequent calls, Locate should work much faster.

If the Locate method keeps working slowly on subsequent calls or if you are working with FetchAll=True, try the following. Perform local sorting by a field that is used in the Locate method. Just assign corresponding field name to the IndexFieldNames property.

How To

1.	How can I enable syntax highlighting in SDAC component editors at design time?

To enable syntax highlighting for SDAC, you should download and install the freeware SynEdit component set

2.	How can I find out which version of SDAC I am using?

You can determine your SDAC version number in several ways:

•	During installation of SDAC, consult the SDAC Installer screen.

•	After installation, see the history.html file in your SDAC installation directiory.

•	At design-time, select SQL Server | About SDAC from the main menu of your IDE.

•	At run-time, check the value of the SdacVersion and DACVersion constants.

3.	How can I stop the cursor from changing to an hour glass during query execution?

Just set the DBAccess.ChangeCursor variable to False anywhere in your program. The cursor will stop changing after this command is executed.

4.	How can I execute a query saved in the SQLInsert, SQLUpdate, SQLDelete, or SQLRefresh properties of a SDAC dataset?

The values of these properties are templates for query statements, and they cannot be manually executed. Usually there is no need to fill these properties because the text of the query is generated automatically.

In special cases, you can set these properties to perform more complicated processing during a query. These properties are automatically processed by SDAC during the execution of the Post, Delete, or RefreshRecord methods, and are used to construct the query to the server. Their values can contain parameters with names of fields in the underlying data source, which will be later replaced by appropriate data values.

For example, you can use the SQLInsert template to insert a row into a query instance as follows.

•	Fill the SQLInsert property with the parametrized query template you want to use.

•	Call Insert.

•	Initialize field values of the row to insert.

•	Call Post.

The value of the SQLInsert property will then be used by SDAC to perform the last step.

Setting these properties is optional and allows you to automatically execute additional SQL statements, add calls to stored procedures and functions, check input parameters, and/or store comments during query execution. If these properties are not set, the SDAC dataset object will generate the query itself using the appropriate insert, update, delete, or refresh record syntax.

5.	How can I get a list of the databases on the server?

Use the TCustomDAConnection.GetDatabaseNames method.

6.	How can I get a list of the tables list in a database?

Use the TCustomDAConnection.GetTableNames method.

7.	Some questions about the visual part of SDAC

The following questions usually arise from the same problem:

•	I set the Debug property to True but nothing happens!

•	While executing a query, the screen cursor does not change to an hour-glass.

•	Even if I have LoginPromp set to True, the connect dialog does not appear.

To fix this problem, you should add the SdacVcl unit to the uses clause of your project.

General Questions

1.	I would like to develop an application that works with SQL Server. Should I use SDAC or DbxSda?

DbxSda is our dbExpress driver for SQL Server. dbExpress technology serves for providing a more or less uniform way to access different servers (SQL Server, MySQL, Oracle and so on). It is based on drivers that include server-specific features. Like any universal tool, in many specialized cases dbExpress providers lose some functionality. For example, the dbExpress design-time is quite poor and cannot be expanded.

SDAC is a specialized set of components for SQL Server, which has advanced server-specific design-time and a component interface similar to that of BDE.

We tried to include maximal support of SQL Server-specific features in both DbxSda and SDAC. However, the nature of dbExpress technology has some insurmountable restrictions. For example, Unicode fields cannot be passed from a driver to dbExpress.

SDAC and DbxSda use the same kernel and thus have similar performance. In some cases dbExpress is slower because data undergoes additional conversion to correspond to dbExpress standards.

To summarise, if it is important for you to be able to quickly adapt your application to a database server other than SQL Server, it is probably better to use DbxSda. In other cases, especially when migrating from BDE or ADO, you should use SDAC.

2.	What are the advantages of SDAC over Delphi ADO components for accessing SQL Server?

ADO is a universal data access technology, while SDAC is specialized for Microsoft SQL Server, so SDAC implements more server-specific features.

SDAC has much better performance (5-10 times in different tests) because it works directly through OLE DB, which is a native SQL Server interface.

Also, SDAC has advanced design-time editors.

3.	On connect I get error "OLE DB error occured. Code 800401F0h. CoInitialize has not been called." What can I do?

Because SDAC uses OLE DB, it is necessary to initialize OLE by calling CoInitialize before a new connection is established. Usually, VCL does this automatically. SDAC does not call to the CoInitialize and CoUninitialize functions itself, as this may cause unexpected problems if OLE is used in the program by someone else.

4.	Are the SDAC connection components thread-safe?

Yes, SDAC is thread-safe but there is a restriction. But the same TCustomMSConnection object descendant cannot be used in several threads. So if you have a multithreaded application, you should have a TCustomMSConnection object descendant for each thread that uses SDAC.

5.	When editing a DataSet, I get an exception with the message 'Update failed. Found %d records.' or 'Refresh failed. Found %d records.'

This error occurs when the database server is unable to determine which record to modify or delete. In other words, there are either more than one record or no records that suit the UPDATE criteria. Such situation can happen when you omit the unique field in a SELECT statement (TCustomDADataSet.SQL) or when another user modifies the table simultaneously. This exception can be suppressed. Refer to TCustomDADataSet.Options topic in SDAC help for more information.

6.	Some questions with using TCustomDADataSet.FetchAll=False mode.

Common issues when using FetchAll=False:

•	I have problems working with temporary tables.

•	I have problems working with transactions.

•	Sometimes my application hangs on applying changes to database.

Usage of FetchAll=False mode has many advantages; however, it also has some restrictions since it requires an additional connection to server to be created for data fetching. The additional connection is created to prevent the main connection from blocking.

These problems can be avoided by setting the FetchAll property to True. Please see description of the FetchAll propery and the CreateConnection option in SDAC help for more information.

One more way to solve these problems is to use the Multiple Active Result Sets (MARS) feature. This feature lets you keep more than one unfetched record set within a single connection. To enable MARS, set the MultipleActiveResultSets option of TMSConnection to True.

Note: To use MARS, you will need to have SQL Server 2005 and SQL Native Client installed.


Updating data with SDAC dataset components

SDAC components that are descendants from TCustomDADataSet provide different means for reflecting local changes to the server.

The first approach is to use automatic generation of update SQL statements. Using this approach you should provide a SELECT statement, everything else will be made by SDAC automatically. In case when a SELECT statement uses multiple tables, you can use UpdatingTable property to specify which table will be updated. If UpdatingTable is blank, the table, that corresponds to the first field in the dataset, is used. This approach is the most preferable and is used in most cases.

Another approach is to set update SQL statements using SQLInsert, SQLUpdate and SQLDelete properties. Set them with SQL statements which will perform corresponding data modifications on behalf of the original statement whenever insert, update or delete operation is called. This is useful when there is no possibility to generate correct statement or you need to execute some specific statements. For example update operations should be made with stored procedure calls.

You may also assign UpdateObject property with the TMSUpdateSQL class instance which holds all updating SQL statements in one place. You can generate all these SQL statements using SDAC design time editors. For the more careful customization of data update operations you can use InsertObject, ModifyObject and DeleteObject properties of TMSUpdateSQL component.

See Also

TMSQuery

TMSStoredProc

TMSTable

TMSUpdateSQL


Working with master/detail relationships

Master/detail (MD) relationship between two tables is a very widespreaded one. So it is very important to provide easy way for database application developer to work with it. Lets examine how SDAC implements this feature.

Suppose we have classic MD relationship between "Region" and "Territories" tables.

"Region" table has two following fields: RegionID and RegionDescription, where is RegionID is a primary key.

"Territories" table has following fields: TerritoryID, TerritoryDescription and RegionID. TerritoryID is a primary key and RegionID is a foregin key that binds "Region" to "Territories".

It is necessary to display and edit these tables.

SDAC provides two ways to bind tables. First code example shows how to bind two TCustomMSDataSet components (TMSQuery, TMSTable or even TMSStoredProc) into MD relationship via parameters.

procedure TForm1.Form1Create(Sender: TObject);

var

  Master, Detail: TMSQuery;

  MasterSource: TDataSource;

begin

  ...

  // create master dataset

  Master := TMSQuery.Create(Self);

  Master.SQL.Text := 'SELECT * FROM Region';

  Master.Connection := MSConnection;

  // create detail dataset

  Detail := TMSQuery.Create(Self);

  Detail.SQL.Text := 'SELECT * FROM Territories WHERE RegionID = :RegionID';

  Detail.Connection := MSConnection;

  // connect detail dataset with master via TDataSource component

  MasterSource := TDataSource.Create(Self);

  MasterSource.DataSet := Master;

  Detail.MasterSource := MasterSource;

  // open master dataset and only then detail dataset

  Master.Open;

  Detail.Open;

  ...

end;

Pay attention to one thing: parameter name in detail dataset SQL must be equal to field name in master dataset that is used as foreign key for detail table. After opening detail dataset always holds records with RegionID field value equal to one in current master dataset record.

There is an additional feature: when inserting new records to detail dataset it automatically fills foreign key fields with values taken from master dataset.

Now suppose that detail table "Region" foregin key field is named RegionLink but not RegionID. In such case detail dataset described in above code example will not autofill RegionLink field with current "Region".RegionID value on insert. This issue is solved in second code example.

procedure TForm1.Form1Create(Sender: TObject);

var

  Master, Detail: TMSQuery;

  MasterSource: TDataSource;

begin

  ...

  // create master dataset

  Master := TMSQuery.Create(Self);

  Master.SQL.Text := 'SELECT * FROM Region';

  Master.Connection := MSConnection;

  // create detail dataset

  Detail := TMSQuery.Create(Self);

  Detail.SQL.Text := 'SELECT * FROM Territories';

  Detail.Connection := MSConnection;

  // setup MD

  Detail.MasterFields := 'RegionID';   // primary key in Region

  Detail.DetailFields := 'RegionLink'; // foreign key in Territories

  // connect detail dataset with master via TDataSource component

  MasterSource := TDataSource.Create(Self);

  MasterSource.DataSet := Master;

  Detail.MasterSource := MasterSource;

  // open master dataset and only then detail dataset

  Master.Open;

  Detail.Open;

  ...

end;

In this code example MD relationship is set up using MasterFields and DetailFields properties. Also note that there are no WHERE clause in detail dataset SQL.

To defer refreshing of detail dataset while master dataset navigation you can use DetailDelay option.

Such MD relationship can be local and remote, depending on TCustomDADataSet.Options.LocalMasterDetail option. If this option is set to True, dataset uses local filtering for establishing master-detail relationship and does not refer to the server. Otherwise detail dataset performs query each time when record is selected in master dataset. Using local MD relationship can reduce server calls number and save server resources. It can be useful for slow connection. CachedUpdates mode can be used for detail dataset only for local MD relationship. Using local MD relationship is not recommended when detail table contains too many rows, because in remote MD relationship, only records that correspond to the current record in master dataset are fetched, that can decrease network traffic in some cases.

See Also

TCustomDADataSet.Options

TMemDataSet.CachedUpdates


Migration from BDE

On SDAC developing BDE users interests were taken in consideration so conversion from using BDE into SDAC can be passed without difficulties even for complex projects. Moreover, SDAC does not have problems appropriated BDE with LiveQuery and compatibility of different programs which were developed using different BDE version and so on.

Refusal from using BDE gives one more important advantage - affect on performance. Instead of complex BDE - ODBC drivers system it is used the fastest access way - direct to Microsoft SQL server.

SDAC provides special Wizard to simplify conversion of already existent projects. This wizard replaces BDE-components at the specified project (dfm-and pas-files) to SDAC. BDE-components to be replaced:

•	TDatabase -> TMSConnection

•	TQuery -> TMSQuery

•	TTable -> TMSTable

•	TStoredProc -> TMSStoredProc

•	TUpdateSQL -> TMSUpdateSQL

To run wizard call from "SDAC" menu "BDE/ADO Migration Wizard" menu item and follow the instructions. This Wizard is available only for Delphi IDE.

Note: wizard serves only to simplify routine operations and after the conversion project might be uncompiled.

Below a list of properties and methods which cannot be converted automatically. Here you can find hints for users to simplify manual replacement.

TDatabase

•	AliasName	- BDE-specific property. Not supported by SDAC.

•	DatabaseName	- has a different sense in BDE and SDAC. At SDAC it is understood as SQL Server database. See TMSConnection for details.

•	Locale	- not supported by SDAC.

•	KeepConnection	- not supported by SDAC.

•	Params	- see TMSConnection properties.

•	Session, SessionAlias, SessionName	- SDAC does not need global management of a group of database connections in an application. So these properties are not supported.

•	Temporary	- has no sense in SDAC. Additional connections are created but not available for the user. See TCustomDADataSet.FetchAll = False for details.

•	TraceFlags	- see TCustomDASQLMonitor.TraceFlags.

•	TransIsolation	- see IsolationLevel.

•	Execute	- use ExecSQL(SQL, [Null]) instead of this method.

•	FlushSchemaCache	- not supported by SDAC.

•	GetFieldNames	- not supported by SDAC.

•	IsSQLBased	- not supported by SDAC. For SQL Server must be always True.

•	ApplyUpdates	- parameters are not supported. To update only specified DataSets use TMemDataset.ApplyUpdates. Update is performed within a transaction.

TBDEDataSet

•	BlockReadSize	- see TCustomDADataSet.FetchRows.

•	CacheBlobs	- SQL Server does not provide service of suspended BLOB loading.

•	KeySize	- BDE-specific property. Not supported by SDAC.

TDBDataSet

•	AutoRefresh 	- supported through TCustomDADataSet.RefreshOptions.

•	DBFlags, DBHandle, DBLocate, DBSession, Handle	- BDE-specific property. Not supported by SDAC.

•	SessionName 	- not supported by SDAC.

•	UpdateMode 	- not supported by SDAC. By default, the behaviour corresponds upWhereKeyOnly. To change this behaviour see TCustomDADataSet.SQLUpdate, TCustomDADataSet.SQLDelete, TCustomDADataSet.SQLRefresh, and TCustomMSDataSet.Options.CheckRowVersion.

TQuery

•	Constrained 	- BDE-specific property. Not supported by SDAC.

•	DataSource 	- see TCustomDADataSet.MasterSource.

•	Local 	- BDE-specific property. Not supported by SDAC.

•	RequestLive 	- almost all query result sets are updatable. See TMSQuery.UpdatingTable, TCustomDADataSet.ReadOnly, CanModify, TCustomDADataSet.SQLInsert, TCustomDADataSet.SQLUpdate, TCustomDADataSet.SQLDelete.

•	Text	- BDE-specific property. Not supported by SDAC.

TTable

•	DefaultIndex	- not used in SDAC. If you need to sort a table by any field see TCustomMSTable.OrderFields, TMemDataSet.IndexFieldNames.

•	Exists, CreateTable, AddIndex, DeleteIndex, StoreDefs, Deletetable, TableType	- SDAC does not allow to create tables by using TTable. If you need to create a table execute 'CREATE TABLE ...' query or use any special third-party tools.

•	IndexFieldNames     - a list of fields for local sorting. See TMemDataSet.IndexFieldNames.

•	IndexDefs, IndexFieldCount, IndexFields, IndexFiles, IndexName, GetIndexNames, GetIndexInfo	- Not supported by SDAC.

•	KeyExclusive	- not supported by SDAC. Use SELECT ... FROM .. WHERE ... to get requested result .

•	KeyFieldCount	- not supported by SDAC as key fields are not used for searching on client side.

•	TableLevel	- BDE-specific property. Not supported by SDAC.

•	ApplyRange, CancelRange, EditRangeStart, EditRangeEnd, SetRange	- SDAC does not support Range.

•	BatchMove	- has no sense in SQL Server. Use SELECT ... INTO ... syntax to copy records onto server side.

•	FindKey, FindNearest, GotoCurrent, GotoKey, GotoNearest, EditKey, SetKey	- use TMemDataSet.Locate and TMemDataSet.LocateEx.

•	GetDetailLinkFields	- use TCustomDADataSet.DetailFields, TCustomDADataSet.MasterFields.

•	RenameTable	- use 'RENAME TABLE ...' script.

•	ConstraintCallBack, ConstraintsDisabled, DisableConstraints, EnableConstraints	- has no sense in SQL Server.

•	FlushBuffers	- not supported by SDAC.

•	Translate	- use AnsiToNative and so on functions.

TSession

SDAC does not need global management of a group of database connections in an application.

TUpdateSQL

A complete analog to TMSUpdateSQL.


Migration from ADO

As far as possible, SDAC behaviour approaches to the behaviour of ADO, so this migration should not cause any serious difficulties.

It is necessary to note that ADO provides an universal data access and as many universal tools loses any specialized one. First of all, it affects on performance. You can see Performance project from SDAC\Demos\Performance to find out yourself - ADO loses SDAC at different tests from 1.5 to 20 times. Beside that, SDAC interface (run-time and design-time) is focused on work with specific features of SQL Server.

SDAC offers special Wizard to simplify conversion of already existent projects. This wizard replaces ADO-components at the specified project (dfm- and pas-files) to SDAC. ADO-components to be replaced:

•	TADOConnection -> TMSConnection

•	TADOCommand -> TMSSQL

•	TADOTable -> TMSTable

•	TADOQuery -> TMSQuery

•	TADOStoredProc -> TMSStoredProc

To run wizard call from "SDAC" menu "BDE/ADO Migration Wizard" menu item and follow the instructions. This Wizard is available only for Delphi IDE.

Note: wizard serves only to simplify routine operations and after the conversion project might be uncompiled.

Below a list of properties and methods which cannot be converted automatically. Here you can find hints for users to simplify manual replacement.

TADOConnection

•	Attributes	- not supported by SDAC. After execution TCustomDAConnection.Commit or TCustomDAConnection.Rollback, Connection is valid.

•	CommandCount, Commands	- not supported by SDAC.

•	CommandTimeout	- must be set separately for each TMSSQL and TCustomMSDataSet. See TMSSQL.CommandTimeout and TCustomMSDataSet. CommandTimeout.

•	ConnectionObject	- not supported by SDAC.

•	ConnectionString	- SDAC has similar property named ConnectString.

•	ConnectOptions	- not supported by SQL OLE DB provider. Connection is always settled synchronously.

•	CursorLocation	- must be set separately for each TCustiomMSDataSet. See TCustomMSDataSet.CursorType.

•	DefaultDatabase	- SDAC has similar property named Database. The value of Database is always the same to ConnectString.

•	Errors	- not supported by SDAC. Use TMSConnection.OnInfoMessage and EOLEDBError handling to obtain the requested information.

•	KeepConnection	- not supported by SDAC. Behaviour is similar to TADOConnection.KeepConnection = True.

•	Mode	- not supported by SDAC.

•	Properties	- not supported by SDAC.

•	Provider	- has no sense to SDAC, as only SQL Server is supported.

•	State	- not supported by SDAC.

•	Version	- to determine SDAC version use global variable SDACVersion. To get version of the server and client use TMSConnection.ServerVersion and TMSConnection.ClientVersion.

•	BeginTrans	- use TCustomDAConnection.StartTransaction instead.

•	Cancel	- not supported by SDAC, as SQL OLE DB provider does not support asynchronous setting of connections.

•	CommitTrans	- use TCustomDAConnection.Commit instead.

•	Execute	- use TCustomDAConnection.ExecSQL instead.

•	GetProcedureNames	- use TCustomDAConnection.GetStoredProcNames instead.

•	GetFieldNames	- not supported by SDAC, use TMSMetadata instead.

•	OpenSchema	- not supported by SDAC, use TMSMetadata instead.

•	RollbackTrans	- use TCustomDAConnection.Rollback instead.

•	OnBeginTransComplete, OnCommitTransComplete, OnConnectComplete, OnDisconnect, OnExecuteComplete, OnRollbackTransComplete, OnWillConnect, OnWillExecute	- not supported by SDAC.

TADOCommand

•	CommandObject	- not supported by SDAC.

•	CommandText	- use TCustomDASQL.SQL.Text.

•	CommandType	- not supported by SDAC, the behaviour is similar to cmdText.

•	ConnectionString	- use TMSConnection.ConnectionString instead.

•	ExecuteOptions	- SQL OLE DB provider does not support asynchronous execution of the commands. If you need to break an execution the query from another thread use TMSSQL.BreakExec.

•	Parameters	- use TCustomDASQL.Params.

•	Prepared	- use TCustomDASQL.Prepare/TCustomDASQL.Unprepare.

•	Properties, States	- not supported by SDAC.

•	Cancel	- use TMSSQL.BreakExec call from another thread.

TADOQuery, TADODataSet

•	BlockReadSize, CacheSize	- use TCustomDADataSet.FetchRows instead.

•	ConnectionString	- use TMSConnection.ConnectString instead.

•	DesignerData	- not supported by SDAC.

•	EnableBCD	- use TCustomMSDataSet.Options.EnableBCD.

•	ExecuteOptions	- SQL OLE DB provider  does not support asynchronous execution of the commands. If you need to break an execution the query from another thread use TMSSQL.BreakExec.

•	FilterGroup	- not supported by SDAC.

•	Indexname	- a list of fields for local sorting. See TMemDataSet.IndexFieldNames.

•	IndexFieldCount, IndexFields	- not supported by SDAC.

•	LockType	- not supported by SQL Server.

•	MarshalOptions	- not supported by SQL Server.

•	MaxRecords	- not supported by SQL Server.

•	Parameters	- use TCustomDADataSet.Params.

•	Prepared	- use TCustomDADataSet.Prepare/TMemDataSet.UnPrepare.

•	Properties	- not supported by SDAC.

•	RecordSet, RecordSetState	- not supported by SDAC.

•	RecordSize	- not supported by SDAC.

•	RecordStatus	- use TMemDataSet.UpdateStatus .

•	Sort	- use TMemDataSet.IndexFieldNames.

•	ExecSQL	- use TCustomDADataSet.Execute instead.

•	CancelBatch	- not supported by SDAC.

•	Clone	- not supported by SDAC.

•	DeleteRecords	- not supported by SDAC.

•	FilterOnBookmark	- use Filter, FilterSQL instead.

•	GetBlobFieldData	- not supported by SDAC.

•	GetDetailLinkFields	- use TCustomDADataSet.DetailFields.

•	IsSequenced	- not supported by SDAC.

•	LoadFromFile, SaveToFile	- not supported by SDAC.

•	NextRecordset	- use TCustomMSDataSet.OpenNext.

•	Requery	- TDataSet.Refresh.

•	Seek	- not supported by SQL OLE DB provider.

•	Supports	- not supported by SDAC.

•	UpdateBatch	- not supported by SDAC.

•	OnEndOfRecordset, OnFetchComplete, OnFetchProgress, OnFieldChangeComplete, OnMoveComplete, OnRecordChangeComplete, OnRecordsetChangeComplete, OnRecordsetCreate, OnWillChangeField, OnWillChangeRecord, OnWillChangeRecordset, OnWillMove	- ADO specific, not supported by SDAC.

TADOStoredProc

•	ProcedureName	- use TCustomMSStoredProc.StoredProc.

TADOTable

•	TableDirect - not supported by MS OLE DB provider.


Working with SQL Server 2005 Compact Edition

SDAC supports SQL Server 2005 Compact Edition. SQL Server Compact Edition is an easy to install server for using by applications that do not require multi-user work with server. As an example, SQL Server Compact Edition can be used on the local computers if there is no permanent connection to the main database, for money access machines, automatic cash desks, different electronic facilities and so on. Please refer to SQL Server Compact Edition Books Online for more details about features and usage of this server edition.

To work with SQL Server 2005 Compact Edition you should change the Provider property of the connection options to prCompact.

Database filename should be assigned to the Database property. If the file does not exists, it will be automatically created on the connection opening. The Password property is used to connect or create a database.

Use the Encrypt option to specify if a database will be created encrypted. If this option is set to True, the Password property must be assigned.

The TMSStoredProc component can not work with the SQL Server Compact Edition because this server edition does not support stored procedures.

Not all of the values ObjectType property are supported by TMSMetaData component with the SQL Server Compact Edition.

Please refer to MSSQLCompact Demo to sample.

See Also

MSSQLCompact Demo

TMSConnection.Options


Performance of obtaining data

If you need to get and update data received as result of query execution on the client side then the size of data to transfer has the main priority. Suppose, you need to reflect at Grid and enable user to modify a result of some query. Usually, the result is not too big, as it is hard any user to process the table with more that 1000 records. In this case the better way is to use default SDAC behavior - CursorType set to ctDefaultResultSet, and FetchAll set to True.

You should use the same settings not depending on the data volume if the result of query execution is used as a reference for Lookup fields.

If you consider time of execution Open method under the previous specified way too large you can set FetchAll property to False or use server cursors. Both these methods momentary opens a query due to tiny data transfer. However if you need to retrieve missing records it requires additional access to server.

Below brief description of main advantages and imperfections of each method:

•	CursorType = ctDefaultResultSet, FetchAll = True (default SDAC behavior)

Slow opening DataSet, quick navigation and editing. All data caches on client side.

•	CursorType = ctDefaultResultSet, FetchAll = False

Prompt opening DataSet, data retrieves from the server on request. This way has several restrictions, for example transaction conflict and possible deadlocks. For details refer to TCustomDADataSet.FetchAll description. All data caches on client side on retrieving.

•	CursorType in [ctStatic, ctKeyset, ctDynamic]

Quick opening and low storage requirement due to slow navigation. Only data that now reflected caches on client side.

If you need to return only several values, for example number of records, it is more effective instead of

SELECT COUNT(*) FROM ...

use query like to

SET :Cnt = (SELECT COUNT(*) FROM ...)

Note:

The only cursor type that allows to execute batches is ctDefaultResultSet.

See also:

FetchAll

CursorType

The ServerCursors demo in the SDAC General demo

The FetchAll demo in the SDAC General demo


Working in an unstable network

The following settings are recommended for working in an unstable network:

TCustomDAConnection.Options.LocalFailover = True

TCustomDAConnection.Options.DisconnectedMode = True

TDataSet.CachedUpdates = True

TCustomDADataSet.FetchAll = True

TCustomDADataSet.Options.LocalMasterDetail = True

These settings minimize the number of requests to the server. Using TCustomDAConnection.Options.DisconnectedMode allows DataSet to work without an active connection. It minimizes server resource usage and reduces connection break probability. I. e. in this mode connection automatically closes if it is not required any more. But every explicit operation must be finished explicitly. That means each explicit connect must be followed by explicit disconnect. Read Working with Disconnected Mode topic for more information.

Setting FetchAll property to True allows to fetch all data after cursor opening and to close connection. If you are using master/detail relationship, we recommend to set LocalMasterDetail option to True.

It is not recommended to prepare queries explicitly. Use CachedUpdates mode for DataSet data editing. Use TCustomDADataSet.Options.UpdateBatchSize property to reduce the number of requests to the server.

If a connection breaks, a fatal error occurs, and OnConnectionLost event will be raised if the following conditions are fulfilled:

•	There are no active transactions;

•	There are no opened and not fetched datasets;

•	There are no explicitly prepared datasets or SQLs.

If the user does not refuse suggested RetryMode parameter value (or does not use OnConnectionLost event handler), SDAC can implicitly perform the following operations:

  Connect;

  DataSet.ApplyUpdates;

  DataSet.Open;

I.e. when the connection breaks, implicit reconnect is performed and the corresponding operation is reexecuted. We recommend to wrap other operations in the transactions and to fulfill their reexecuting yourself.

Pooling using in Disconnected Mode allows to speed up most of the operations because of connecting duration reducing.

See Also

FailOver demo

Working with Disconnected Mode

TCustomDAConnection.Options

TCustomDAConnection.Pooling


Working with Disconnected Mode

In disconnected mode a connection opens only when it is required. After performing all server calls connection closes automatically until next server call is required. Datasets remain open when connection closes. Disconnected mode may be useful to save server resources and operate in unstable or expensive network. Drawback of using disconnected mode is that each connection establishing requires some time for authorization. If connection is often closed and opened it can slow down application work. We recommend to use pooling to solve this problem. For additional information see TCustomDAConnection.Pooling.

To enable disconnected mode set TCustomDAConnection.Options.DisconnectedMode to True.

In disconnected mode a connection is opened for executing requests to the server (if it was not already opened) and is closed automatically if it is not required any more. If the connection was explicitly opened (Connect method was called or Connected property was explicitly set to True), it does not close until Disconnect method will be called or Connected property will be explicitly set to False.

Following settings are recommended to use for working in disconnected mode:

TDataSet.CachedUpdates = True

TCustomDADataSet.FetchAll = True

TCustomDADataSet.Options.LocalMasterDetail = True

These settings minimize the number of requests to the server.

Disconnected mode features

If you perform a query with FetchAll option set to true, connection closes when all data are fetched if it is not used by someone else. If FetchAll option is set to false, connection does not close until all data blocks are fetched.

If explicit transaction is started, connection does not close until the transaction will be committed or rolled back.

If the query was prepared explicitly, connection does not close until the query will be unprepared or its SQL text will be changed.

See Also

TCustomDAConnection.Options

TCustomDADataSet.FetchAll

TCustomDAConnection.Pooling

TCustomDAConnection.Connect

TCustomDAConnection.Disconnect

Working in unstable network


Increasing performance

This topic considers basic stages of working with DataSet and ways to increase performance on each of these stages.

Connect

If your application performs Connect/Disconnect operations frequently, additional performance can be gained with using pooling mode (TCustomDAConnection.Pooling = True). It reduces connection reopening time greatly (hundreds times). Such situation usually occurs in web applications.

Execute

If your application executes the same query several times, you can use TCustomDADataSet.Prepare method or set the TDADataSetOptions.AutoPrepare property to increase performance. For example it can be enabled for Detail dataset in Master/Detail relationship or for update objects in TDAUpdateSQL. The performance gain achieved in this way can be anywhere from several percent to several times, depending on the situation.

To execute SQL statements TMSSQL component is more preferable than TMSQuery. It can give additional several percent performance gain.

If TCustomDADaataSet.Options.StrictUpdate option is set to False, RowsAffected property is not calculated and becomes equal zero. This can improve performance of query executing, so if you need to execute many data updating statements at once and you  don't mind affected rows count set this option to false.

Fetch

In some situation you can increase performance a bit with using TCustomDADataSet.Options.CompressBlobMode.

You can also tweak your application performance by using following properties of TCustomDADataSet descendants:

FetchRows

Options.FlatBuffers

Options.LongStrings

UniDirectional

See description of these properties for more details and recommendations.

Navigate

Locate function works faster when dataset is locally sorted on KeyFields fields. Local dataset sorting can be set

with IndexFieldNames property. Performance gain can be large if the dataset contains a large number of rows.

Lookup fields works faster when lookup dataset is is locally sorted on lookup Keys.

Setting TDADataSetOptions.CacheCalcFields property can improve performance when locally sorting and locating on calculated and lookup fields. It can be also useful when calculated field expressions contains complicated calculations.

Setting TDADataSetOptions.LocalMasterDetail option can greatly improve performance by avoiding server requests on detail refreshes. Setting TDADataSetOptions.DetailDelay option can be useful to avoid detail refreshes when switching master DataSet records frequently.

Update

If your application update datasets in CachedUpdates mode then setting TCustomDADataSet.Options.UpdateBatchSize option more than 1 can improve performance several hundred times more by reducing the number of requests to the server.

You can also increase the data sending performance a bit (several percents) with using Dataset.UpdateObject.ModifyObject, Dataset.UpdateObject, etc. A little additional performance improvement can be reached with setting AutoPrepare property for these objects.

Insert

If you are about to insert a large number of records into a table, you should use the TMSLoader component instead of Insert/Post methods, or execution of the INSERT commands multiple times in a cycle. Sometimes usage of TMSLoader improves performance in several times.

See Also

Performance of obtaining data


Using connection pooling

Connection pooling enables an application to use a connection from a pool of connections that do not need to be reestablished for each use. Once a connection has been created and placed in a pool, an application can reuse that connection without performing the complete connection process.

Using a pooled connection can result in significant performance gains, because applications can save the overhead involved in making a connection. This can be particularly significant for middle-tier applications that connect over a network or for applications that repeatedly connect and disconnect, such as Internet applications.

To use connection pooling set the Pooling property of the TCustomDAConnection component to True. Also you should set the PoolingOptions of the TCustomDAConnection. These options include the MinPoolSize, MaxPoolSize, Validate, ConnectionLifeTime. Connections belong to the same pool if they have identical values for parameters: MinPoolSize, MaxPoolSize, Validate, ConnectionLifeTime, Server, Username, Password, Database, IsolationLevel, Authentication, QuotedIdentifier, Provider, Language, Encrypt, PersistSecurityInfo, AutoTranslate, NetworkLibrary, ApplicationName, WorkstationID, PacketSize.  When a connection component disconnects from the database the connection actually remains active and it is placed into the pool. When this or another connection component connects to the database it takes a connection from the pool. Only when there is no connections in the pool, new connection is established.

Connections in the pool are validated to be sure that a broken connection will not be returned for the TCustomDAConnection component when it connects to the database. The pool validates connection when it is placed to pool (e. g. when the TCustomDAConnection component diconnects). If connection is broken it is not placed to the pool. Instead the pool frees this connection. Connections that is holded in the pool are validated every 30 seconds. All broken conections are freed. If you set the PoolingOptions.Validate to True, a connection also will be validated when the TCustomDAConnection component connects and takes the connection from the pool. When some network problem occurs all connections to database can be broken. Therefore the pool validates all connections before it will be used by a TCustomDAConnection component if a fatal error is detected on one connection.

The pool frees connections that are holded in pool during long time. If no new connections is placed to the pool it becomes empty after approximately 4 minutes. This pool behaviour is intended to save resources when count of connections in the pool exceeds the count that is needed by application. If you set the PoolingOptions.MinPoolSize property to a non-zero value, this prevents the pool from freeing all pooled connections. When connection count in the pool will decrease to MinPoolSize value, remaining connection will not be freed except they is broken.

The PoolingOptions.MaxPoolSize property limit the count of connections that can be active at the same time. If maximum connections is active and some TCustomDAConnection component try to connect it will wait until another TCustomDAConnection disconnects. Maximum wait time is 30 seconds. If active connections count does not decrease during 30 seconds, the TCustomDAConnection component will not connect and an exception will be raised.

You can limit the time that a connection can live by setting the PoolingOptions.ConnectionLifeTime property. When the TCustomDAConnection component diconnects its internal connection will be freed instead of placing to the pool if this connection is active during a time longer than a value of the PoolingOptions.ConnectionLifeTime property. This property is designed to make load balancing work with the connection pool.

To force connection be freed when the TCustomDAConnection component disconnects the RemoveFromPool method of TCustomDAConnection can be used. You can also free all connection in the pool with the class procedures Clear or AsyncClear of TMSConnectionPoolManager. These procedures can be usefull when you know that all connections will be broken for some reason.

It is recomnended to use connection pooling with the DisconnectMode option of the TCustomDAConnection component set to True. In this case internal connections can be shared between TCustomDAConnection components. When some operation is performed on the TCustomDAConnection component (for example, excution of SQL statement) this component will connect using pooled connection and after performing operation it will disconnect. When a operation is performed on another TCustomDAConnection component it can use the same connection from the pool.

See Also

TCustomDAConnection.Pooling

TCustomDAConnection.PoolingOptions

Working with Disconnected Mode


Working with macros

Macros help you to change SQL statements dynamically. They allow partial replacement of the query statement by user-defined text. Macros are identified by their names which are then refered from SQL statement to replace their occurrences for associated values.

First step is to assign macros with their names and values to a dataset object.

Then modify SQL statement to include macro names into desired insertion points. Prefix each name with & ("at") sign to let SDAC discriminate them at parse time. Resolved SQL statement will hold macro values instead of their names but at right places of their occurrences. For example, having the following statement with TableName macro name

SELECT * FROM &TableName

You may later assign any actual table name to macro value property leaving your SQL statement intact.

Query1.SQL.Text := 'SELECT * FROM &TableName';

Query1.MacroByName('TableName').Value := 'Dept';

Query1.Open;

SDAC replaces all macro names with their values and sends SQL statement to SQL Server when SQL execution is requested.

Note that there is a difference between using TMacro properties AsString and Value. If you set macro with AsString property, it will be quoted. For example the following statements will result in the same result Query1.SQL property value.

Query1.MacroByName('StringMacro').Value := '''A string''';

Query1.MacroByName('StringMacro').AsString := 'A string';

Macros can be especially useful in scripts that perform similar operations on different objects. You can use macros that will be replaced with an object name. It allows you to have the same script text and to change only macro values.

You may also consider using macros to construct adaptable conditions in WHERE clauses of your statements.

See Also

TMacro

TCustomDADataSet.MacroByName

TCustomDADataSet.Macros


Using several DAC products in one IDE

ODAC, SDAC, MyDAC, and IBDAC components use common base packages (for Win32) and assemblies (for .NET) listed below:

Packages:

•	dacXX.bpl

•	dacvclXX.bpl

•	dcldacXX.bpl

Assemblies:

•	CoreLab.Dac.dll

•	CoreLab.Vcl.dll

•	CoreLab.Dac.Design.dll

•	CoreLab.Dac.AdoNet.dll

Note that product compatibility is provided for the current build only. In the other words, if you upgrade one of the installed products, it may conflict with older builds of other products. In order to continue using the products simultaneously, you should upgrade all of them at the same time.


Working with DataSet Manager

DataSet Manager window

The DataSet Manager window displays the datasets in your project. You can use the DataSet Manager window to create a user interface (consisting of data-bound controls) by dragging items from the window onto forms in your project. Each item has a drop-down control list where you can select the type of control to create prior to dragging it onto a form. You can customize the control list with additional controls, including controls that you have created.

Using the DataSet Manager window, you can:

•	Create forms that display data by dragging items from the DataSet Manager window onto forms.

•	Customize the list of controls available for each data type in the DataSet Manager window.

•	Choose which control should be created when dragging an item onto a form in your Windows application.

•	Create and delete TField objects in the DataSets of your project.

Opening the DataSet Manager window

You can display the DataSet Manager window by clicking DataSet Manager on the Tools menu. You can also use IDE desktop saving/loading to save DataSet Manager window position and restore it during the next IDE loads.

Observing project DataSets in the DataSet Manager Window

By default DataSet Manager shows DataSets of currently open forms. It can also extract DataSets from all the forms in the project. To use this, click Extract DataSets from all forms in project button. This settings is remembered. Note, that using this mode can slow down opening of the large projects with plenty of forms and DataSets. Opening of such projects can be very slow in Borland Delphi 2005 and Borland Developer Studio 2006 and can take up to several tens of minutes.

DataSets can be grouped by form or connection. To change DataSet grouping click the Grouping mode button or click a down. You can also change grouping mode by selecting required mode from the DataSet Manager window popup menu.

Creating Data-bound Controls

You can drag an item from the DataSet Manager window onto a form to create a new data-bound control. Each node in the DataSet Manager window allows you to choose the type of control that will be created when you drag it onto a form. You must choose between a Grid layout, where all columns or properties are displayed in a TDataGrid component, or a Details layout, where all columns or properties are displayed in individual controls.

To use grid layout drag the dataset node on the form. By default TDataSource and TDBGrid components are created. You can choose the control to be created prior to dragging by selecting an item in the DataSet Manager window and choosing the control from the item's drop-down control list.

To use Details layout choose Details from the DataSet node drop-down control list in the DataSet Manager window. Then select required controls in the drop-down control list for each DataSet field. DataSet fields must be created. After setting required options you can drag the DataSet to the form from the DataSet wizard. DataSet Manager will create TDataSource component, and a component and a label for each field.

Adding custom controls to the DataSet Manager window

To add custom control to the list click the Options button on the DataSet Manager toolbar. A DataSet Manager - Customize controls dialog will appear. Using this dialog you can set controls for the DataSets and for the DataSet fields of different types. To do it, click DataSets node or the node of field of required type in DB objects groups box and use Add and Remove buttons to set required control list. You can also set default control by selecting it in the list of assigned DB controls and pressing Default button.

The default configuration can easily be restored by pressing Reset button in the DataSet Manager - Options dialog.

Working with TField objects

DataSet Manager allows you to create and remove TField objects. DataSet must be active to work with its fields in the DataSet Manager. You can add fields, based on the database table columns, create new fields, remove fields, use drag-n-drop to change fields order.

To create a field based on the database table column right-click the Fields node and select Create Field from the popup menu or press <Insert>. Note that after you add at least one field manually, DataSet fields corresponding to data fields will not be generated automatically when you drag the DataSet on the form, and you can not drag such fields on the form. To add all available fields right-click the Fields node and select Add all fields from the popup menu.

To create new field right-click the Fields node and select New Field from the popup menu or press <Ctrl+Insert>. The New Field dialog box will appear. Enter required values and press OK button.

To delete fields select these fields in the DataSet Manager window and press <Delete>.

DataSet Manager allows you to change view of the fields displayed in the main window. Open the Customize controls dialog, and jump to the Options page.

You can chose what information will be added to names of the Field and Data Field objects in the main window of DataSet Manager. Below you can see the example.


Using DBMonitor

To extend monitoring capabilities of SDAC applications there is an additional tool called DBMonitor. It is provided as an alternative to Borland SQL Monitor which is also supported by SDAC.

DBMonitor is an easy-to-use tool to provide visual monitoring of your database applications.

DBMonitor has following features:

•	multiple client processes tracing;

•	SQL event filtering (by sender objects);

•	SQL parameter and error tracing.

DBMonitor is intended to hamper application being monitored as less as possible.

To trace your application with DB Monitor you should follow these steps:

•	drop TMSSQLMonitor component onto the form;

•	turn moDBMonitor option on;

•	set to True Debug property for components you want to trace;

•	start DBMonitor before running your program.


Using Migration Wizard

BDE/ADO Migration Wizard allows you to convert your BDE or ADO projects to SDAC. This wizard replaces BDE/ADO components at the specified project (dfm-and pas-files) to SDAC.

To convert project perform the following steps.

[****]

•	Select BDE/ADO Migration Wizard from SQL Server menu.

•	Select Replace BDE components or Replace ADO components to replace corresponding components with SDAC and press the Next button.

•	Select location of files to search - current open project or disc folder.

•	If you have selected Disc folder on the previous step, specify the required folder and specify whether to process subfolders. Press the Next button.

•	Select whether to make backup (it is highly recommended to make a backup), backup location, and log parameters, and press the Next button. Default backup location is RBackup folder in your project folder.

•	Check your settings and press the Finish button to start the conversion operation.

•	The project should be saved before conversion. You will be asked before saving it. Click yes to continue project conversion.

After the project conversion it will be reopened.

The wizard just replaces all standard BDE/ADO components. Probably you need make some changes manually to compile your application successfully.

If some problems occur while replacing you can restore your project from backup file. To do it perform the following steps.

•	Select BDE/ADO Migration Wizard from SQL Server menu.

•	Select Restore original files from backup and press the Next button.

•	Select the backup file. By default it is RExpert.reu file in RBackup folder of your converted project. Press the Next button.

•	Check your settings and press the Finish button to start the conversion operation.

•	Press Yes in appeared dialog.

Your project will be restored to its previous state.

See Also

Migration from BDE

Migration from ADO


Writing GUI applications with SDAC

SDAC GUI part is standalone. This means that to make available GUI elements such as SQL cursors, connect form, connect dialog etc. you should explicitly include  under Linux) unit to your application. This feature is needed for writing console applications.

Delphi and C++Builder

By default SDAC does not require Forms, Controls and another GUI related units. Only TMSConnectDialog and TMSAlerter components require Forms unit according to their needs.


Description
EDAError

Hierarchy	Properties

Unit

DBAccess

Description

EDAError is the base class for exceptions that are reaised when server side error occurs.


ErrorCode
EDAError.ErrorCode

EDAError

property ErrorCode: Integer

Description

Use ErrorCode to determine the error code returned by SQL server.


Description
TBlob

Hierarchy	Properties	Methods

Unit

MemData

Description

Object TBlob holds large object value for field and parameter dtBlob, dtMemo data types.

SeeAlso

TBlobField

TCustomDADataSet.GetBlob


AsString
TBlob.AsString

TBlob

property AsString: String;

Description

Use AsString property to manipulate blob value as string.

See Also

Assign

AsWideString


AsWideString
TBlob.AsWideString

TBlob

property AsWideString: WideString;

Description

Use AsWideString property to manipulate blob value as unicode string.

See Also

Assign

AsString


IsUnicode
TBlob.IsUnicode

TBlob

property IsUnicode: boolean;

Description

Set IsUnicode to true if you want TBlob store and process data in Unicode format.

Note

Changing this property raises exception if TBlob is not empty.


Size
TBlob.Size

TBlob

property Size: Cardinal;

Description

Use Size to find the size of TBlob value in bytes.


Assign
TBlob.Assign

TBlob

procedure Assign(Source: TBlob);

Description

Use Assign method to set blob value from another TBlob object.

See Also

LoadFromStream

AsString

AsWideString


Clear
TBlob.Clear

TBlob

procedure Clear;

Description

Use Clear to delete the current value in TBlob object.


LoadFromFile
TBlob.LoadFromFile

TBlob

procedure LoadFromFile(const FileName: String);

Description

Use LoadFromFile to load the contents of a file into a TBlob object. Specify the name of the file to load into the field as the value of the FileName parameter.

See Also

SaveToFile

TBlobField.LoadFromFile


LoadFromSream
TBlob.LoadFromStream

TBlob

procedure LoadFromStream(Stream: TStream);

Description

Use LoadFromStream to copy the contents of a stream into the TBlob object. Specify the stream from which the field's value is copied as the value of the Stream parameter.

See Also

SaveToStream

TBlobField.LoadFromStream


Read
TBlob.Read

TBlob

function Read(Position: cardinal; Count: cardinal; Dest: pointer): cardinal;

Description

Use Read method to acquire a raw sequence of bytes from the data stored in TBlob.

Position parameter is the starting point of byte sequence which lasts Count number of bytes. Dest parameter is a pointer to memory area where to store the sequence.

If the sequence crosses object size limit, function will return byte count actually read.

See Also

Write


SaveToFile
TBlob.SaveToFile

TBlob

procedure SaveToFile(const FileName: String);

Description

Use SaveToFile to save the contents of the TBlob object to a file. Specify the name of the file as the value of the FileName parameter.

See Also

LoadFromFile

TBlobField.SaveToFile


SaveToStream
TBlob.SaveToStream

TBlob

procedure SaveToStream(Stream: TStream);

Description

Use SaveToStream to copy the contents of a TBlob object to a stream. Specify the name of the stream to which the field's value is saved as the value of the Stream parameter.

See Also

LoadFromStream

TBlobField.SaveToStream


Truncate
TBlob.Truncate

TBlob

procedure Truncate(NewSize: Cardinal);

Description

Discards all data in the TBlob from the current position.


Write
TBlob.Write

TBlob

procedure Write(Position: cardinal; Count: cardinal; Source: pointer);

Description

Use Write method to store a raw sequence of bytes into the TBlob object.

Position parameter is the starting point of byte sequence which lasts Count number of bytes. Source parameter is a pointer to a source memory area.

If the value of Position parameter crosses current size limit of TBlob object, source data will be appended to the object data.

See Also

Read


Description
TCompressedBlob

Hierarchy	Properties	Methods

Unit

MemData

Description

TCompressedBlob is a descendant of TBlob class. It holds large object value for field and parameter dtBlob, dtMemo data types and can compress its data. For more information about using Blob compression see TCustomDADataSet.Options.

Note:	Internal compression functions are available in CodeGear Delphi 2007 for Win32, Borland Developer Studio 2006, Borland Delphi 2005, Borland Delphi 8 (for .NET) and Borland Delphi 7. To use Blob compression under Borland Delphi 6, Borland Delphi 5 and Borland C++ Builder you should use your own compression functions. To use them set CompressProc and UncompressProc variables declared in MemUtils unit.

type

  TCompressProc = function(dest: IntPtr; destLen: IntPtr; const source: IntPtr; sourceLen: longint): longint;

  TUncompressProc = function(dest: IntPtr; destlen: IntPtr; source: IntPtr; sourceLne: longint): longint;

var

  CompressProc: TCompressProc;

  UncompressProc: TUncompressProc;

SeeAlso

TBlob

TBlobField

TCustomDADataSet.GetBlob

TCustomDADataSet.Options


Compressed
TCompressedBlob.Compressed

TCompressedBlob

property Compressed: boolean;

Description

Indicates whether the Blob is compressed. Set this property to true or false to compress or decompress the Blob.


CompressedSize
TCompressedBlob.CompressedSize

TCompressedBlob

property CompressedSize: cardinal;

Description

Indicates compressed size of the Blob data.


Description
TCRBatchMove

Hierarchy	Properties	Methods	Events

Unit

CRBatchMove

Description

TCRBatchMove component transfers records between datasets. Use it to copy dataset records to another dataset or to delete datasets records, that match records in another dataset. Mode property determines the desired operation type, Source and Destination properties indicates corresponding datasets.

Note:   TCRBatchMove component is added to the Data Access page of the component palette, not to the SQL Server Access page.


AbortOnKeyViol
TCRBatchMove.AbortOnKeyViol

TCRBatchMove

property AbortOnKeyViol: boolean;

Description

Use AbortOnKeyViol property to specify whether the batch operation is terminated immediately after key or integrity violation.


AbortOnProblem
TCRBatchMove.AbortOnProblem

TCRBatchMove

property AbortOnProblem: boolean;

Description

Use AbortOnProblem property to specify whether the batch operation is terminated immediately when it is necessary to truncate data to make it fit in the specified Destination.


ChangedCount
TCRBatchMove.ChangedCount

TCRBatchMove

property ChangedCount: Longint;

Description

Use ChangedCount property to get the number of records changed in the destination dataset. It shows the number of records that were updated in bmUpdate or bmAppendUpdate mode or were deleted in bmDelete mode.


CommitCount
TCRBatchMove.CommitCount

TCRBatchMove

property CommitCount: integer;

Description

Use CommitCount property to set number of records to be batch moved before the commit occurs. If it is set to 0, the operation will be chunked into the number of records that fit 32 Kb.


Destination
TCRBatchMove.Destination

TCRBatchMove

property Destination: TDataSet;

Description

Specifies destination dataset for the batch operation.


KeyViolCount
TCRBatchMove.KeyViolCount

TCRBatchMove

property KeyViolCount: Longint;

Description

Use KeyViolCount property to get the number of records, that could not be replaced, added, deleted from the destination dataset because of integrity or key violations.

If AbortOnKeyViol is true, then KeyViolCount will never exceed one, because the operation aborts when the integrity or key violation occurs.

See Also

AbortOnKeyViol


Mappings
TCRBatchMove.Mappings

TCRBatchMove

property Mappings: TStrings;

Description

Use Mappings property to set field matching between source and destination datasets for the batch operation. By default fields matching is based on their position in the datasets. To map the column ColName in the source dataset to the column of the same name in the destination dataset, use:

ColName

To map the column named SourceColName in the source dataset to the column named DestColName in the destination dataset, use:

DestColName=SourceColName


Mode
TCRBatchMove.Mode

TCRBatchMove

type

  TCRBatchMode = (bmAppend, bmUpdate, bmAppendUpdate, bmDelete);

property Mode: TCRBatchMode;

Description

Use Mode property to set type of the batch operation, that will be executed after calling the Execute method. It can have the following values.

bmAppend	Appends the records from the source dataset to the destination dataset. Default mode.

bmUpdate	Replaces records in the destination dataset with the matching records from the source dataset.

bmAppendUpdate	Replaces records in the destination dataset with the matching records from the source dataset. If there is no matching record in the destination dataset, the record will be appended to it.

bmDelete	Deletes records from the destination dataset if there is a matching records in the source dataset.


MovedCount
TCRBatchMove.MovedCount

TCRBatchMove

property MovedCount: Longint;

Description

Use MovedCount property to get number of records, that were read from the source dataset during batch operation. This number includes records that caused key or integrity violations or were trimmed.


ProblemCount
TCRBatchMove.ProblemCount

TCRBatchMove

property ProblemCount: Longint;

Description

Use ProblemCount property to get the number of records, that could not be added to the destination dataset because of field type mismatch.

If AbortOnProblem is true, then ProblemCount will never exceed one, because the operation aborts when the problem occurs.

See Also

AbortOnProblem


RecordCount
TCRBatchMove.RecordCount

TCRBatchMove

property RecordCount: Longint;

Description

Determines the maximum number of records in the source dataset, that will be applied to the destination dataset. If it is set to 0, all records in the source dataset will be applied to the destination dataset, starting from the first record. If RecordCount is greater than 0, up to the RecordCount records are applied to the destination dataset, starting from the current record in the source dataset. If RecordCount exceeds the number of records left in the source dataset, batch operation terminates after reaching last record.


Source
TCRBatchMove.Source

TCRBatchMove

property Source: TDataSet;

Description

Specifies source dataset for the batch operation.


Execute
TCRBatchMove.Execute

TCRBatchMove

procedure Execute;

Description

Call Execute method to perform the batch operation.


OnBatchMoveProgress
TCRBatchMove.OnBatchMoveProgress

TCRBatchMove

type

  TCRBatchMoveProgressEvent = procedure (Sender: TObject; Percent: integer) of object;

property OnBatchMoveProgress: TCRBatchMoveProgressEvent;

Description

Write OnBatchMoveProgress event handler to provide feedback to the user about the batch operation progress.


Description
TCRDataSource

Hierarchy	Properties	Methods	Events

Unit

DBAccess

Description

TCRDataSource provides an interface between an DAC dataset components and data-aware controls on a form.

TCRDataSource inherits its functionality directly from TDataSource component.

At design time assign individual data-aware components' DataSource properties from their drop-down listboxes.


Description
TCustomConnectDialog

Hierarchy	Properties	Methods

Unit

DBAccess

Description

TCustomConnectDialog is a base for connect dialog components. It provides functionality to show dialog box where user can edit username, password and server name before connecting database. You can customize captions of buttons and labels by their properties.


CancelButton
TCustomConnectDialog.CancelButton

TCustomConnectDialog

property CancelButton: string;

Description

Use CancelButton property to specify label for cancel button.


Caption
TCustomConnectDialog.Caption

TCustomConnectDialog

property Caption: string;

Description

Use Caption to set caption of dialog box.


ConnectButton
TCustomConnectDialog.ConnectButton

TCustomConnectDialog

property ConnectButton: string;

Description

Use ConnectButton property to specify label for connect button.


DialogClass
TCustomConnectDialog.DialogClass

TCustomConnectDialog

property DialogClass: string;

Description

Use DialogClass property to specify class of form that will be displayed to enter login information. When this property is blank TCustomConnectDialog uses the default form - TConnectForm. You can write own login form to enter login information and assign its class name to DialogClass property. Each login form must have ConnectDialog: TCustomConnectDialog published property to access to connection information. For details see implementation of TConnectForm.

See Also

ConnectDialog demo

GetServerList


LabelSet
TCustomConnectDialog.LabelSet

TCustomConnectDialog

type

  TLabelSet =

    (lsCustom,lsEnglish,lsFrench,lsGerman,lsItalian,lsPolish,

     lsPortuguese,lsRussian,lsSpanish);

property LabelSet: TLabelSet;

Description

Use LabelSet to set language of captions of labels and buttons.

The default value is lsEnglish.


PasswordLabel
TCustomConnectDialog.PasswordLabel

TCustomConnectDialog

property PasswordLabel: string;

Description

Use PasswordLabel property to specify prompt for password edit.


Retries
TCustomConnectDialog.Retries

TCustomConnectDialog

property Retries: Word;

Description

Use Retries to determine a number of retries of failed connections.


SavePassword
TCustomConnectDialog.SavePassword

TCustomConnectDialog

property SavePassword: Boolean;

Description

When True and Password property of connection instance is filled in, ConnectDialog displays password in asterisks.


ServerLabel
TCustomConnectDialog.ServerLabel

TCustomConnectDialog

property ServerLabel: string;

Description

Use ServerLabel property to specify prompt for server name edit.


StoreLogInfo
TCustomConnectDialog.StoreLogInfo

TCustomConnectDialog

property StoreLogInfo: Boolean;

Description

StoreLogInfo property specifies whether to keep login information in system registry after connection has been established using provided username, password and servername.

Set this property to True to store login information.

The default value is True.


UsernameLabel
TCustomConnectDialog.UsernameLabel

TCustomConnectDialog

property UsernameLabel: string;

Description

Use UsernameLabel property to specify prompt for username edit.


Execute
TCustomConnectDialog.Execute

TCustomConnectDialog

function Execute: Boolean;

Description

Displays the connect dialog and calls connection's Connect method when the user clicks Connect button. Returns True if connected. If the user clicks Cancel, Execute returns False.

In case of failed connection Execute offers to connect repeat Retries times.


GetServerList
TCustomConnectDialog.GetServerList

TCustomConnectDialog

procedure GetServerList(List: TStrings);

Description

Call GetServerList method to retrieve a list of available server names. It is particularly relevant for writing custom login form.

See Also

DialogClass


Description
TCustomDAConnection

Hierarchy	Properties	Methods	Events

Unit

DBAccess

Description

TCustomDAConnection is a base class for components that establish connection with database, provide customised login support, and perform transaction control.

Do not create instances of TCustomDAConnection. To add a component that represents connection to a source of data, use descendants of TCustomDAConnection class.


ConnectDialog
TCustomDAConnection.ConnectDialog

TCustomDAConnection

property ConnectDialog: TCustomConnectDialog;

Description

Use ConnectDialog property to assign to connection TCustomConnectDialog component.

See Also

TCustomConnectDialog


InTransaction
TCustomDAConnection.InTransaction

TCustomDAConnection

property InTransaction: Boolean

Description

Examine InTransaction property at runtime to determine whether user transaction is currently in progress. In the other words InTransaction is set to True when user explicitly calls StartTransaction. Calling Commit or Rollback sets InTransaction to False. The value of InTransaction property cannot be changed directly.

See Also

StartTransaction

Commit

Rollback


Options
TCustomDAConnection.Options

TCustomDAConnection

type

  TDAConnectionOptions = class(TPersistent)

  published

    property DisconnectedMode: boolean;

    property KeepDesignConnected: boolean;

    property LocalFailOver: boolean;

  end;

property Options: TDAConnectionOptions;

Description

Set properties of Options to specify behaviour of the connection. The meaning of Options' properties are:

DisconnectedMode	If True, connection opens only when needed for performing a server call and closes after performing operation. Datasets remain opened when connection closes. May be useful to save server resources and operate in unstable or expensive network. Drawback of using disconnect mode is that each connection establishing requires some time for authorization. If connection is often closed and opened it can slow down application work. See the Working with Disconnected Mode topic for more information.

KeepDesignConnected	At the time of startup prevents application from establishing a connection even if Connected property was set to True at design-time.

LocalFailOver	If True, OnConnectionLost event occurs and a failover operation can be performed after connection breaks. Read Working in unstable network topic for more information about using failover.

See Also

Working with Disconnected Mode

Working in unstable network


Password
TCustomDAConnection.Password

TCustomDAConnection

property Password: String;

Description

Use Password property to supply password to handle server's request for a login.

Warning:	Storing hard-coded user name and password entries as property values or in code for an OnLogin event handler can compromise server security.

See Also

Username

Server

TCustomConnection.OnLogin


Pooling
TCustomDAConnection.Pooling

TCustomDAConnection

property Pooling: boolean default False;

Description

Normally, when TCustomDAConnection establishes connection with the server it takes server memory and time resources for allocation new server connection. For example pooling can be very useful when using disconnect mode. If an application has wide user activity that forces many connect/disconnect operations, it may spend a lot of time on creating connection and sending requests to the server. TCustomDAConnection has software pool which stores open connections with identical parameters.

Connection pool uses separate thread that validates the pool every 30 seconds. Pool validation consists in checking each connection in the pool. If a connection is broken due to a network problem or another reason, it is deleted from the pool. Validation procedure removes from the pool also connections that are not used for a long time even if they are valid.

Set Pooling to True to enable pooling. Specify correct values for PoolingOptions. Two connections belong to the same pool if they have identical values for parameters: MinPoolSize, MaxPoolSize, Validate, ConnectionLifeTime, Server, Username, Password, Database, IsolationLevel, Authentication, QuotedIdentifier, Provider, Language, Encrypt, PersistSecurityInfo, AutoTranslate, NetworkLibrary, ApplicationName, WorkstationID, PacketSize.

Note: Using Pooling := True can cause errors with working with temporary tables.

See Also

Username

Password

PoolingOptions


PoolingOptions
TCustomDAConnection.PoolingOptions

TCustomDAConnection

type

  TPoolingOptions = class(TPersistent)

  published

    property MaxPoolSize: integer default 100;

    property MinPoolSize: integer default 0;

    property ConnectionLifetime: integer default 0;

    property Validate: boolean;

  end;

property PoolingOptions: TPoolingOptions;

Description

Set properties of PoolingOptions to specify behaviour of connection pool. The meaning of PoolingOptions' properties are:

Property	Meaning

MaxPoolSize	Specifies the maximum number of connections that can be opened in the connection pool. Once this value is reached, no more connection are opened. The valid values are 1 and above.

MinPoolSize	Specifies the minimum number of connections that can be opened in the connection pool.

ConnectionLifetime	Specifies the maximum time measured in milliseconds in which opened connection can be used by connection pool. Pool deletes connections with exceeded connection lifetime when TCustomDAConnection is about to close. If ConnectionLifetime property is set to 0 (by default), then life time of connection is infinity. ConnectionLifetime concerns only inactive connections in pool.

Validate	If Validate is set to True, connection will be validated when it is returned from the pool. By default this option is set to False and pool does not validate connection when it is returned to be used by the TCustomDAConnection component.

See Also

Pooling


Server
TCustomDAConnection.Server

TCustomDAConnection

property Server: String;

Description

Use the Server property to supply the server name to handle server's request for a login. If this property is not set, SDAC tries to connect to '(local)'.

See Also

Username

Password

TCustomConnection.OnLogin


Username
TCustomDAConnection.Username

TCustomDAConnection

property Username: String;

Description

Use the Username property to supply the user name to handle server's request for a login. If this property is not set, SDAC tries to connect with the sa user name.

Warning:	Storing hard-coded user name and password entries as property values or in code for an OnLogin event handler can compromise server security.

See Also

Password

Server

TCustomConnection.OnLogin


ApplyUpdates
TCustomDAConnection.ApplyUpdates

TCustomDAConnection

procedure ApplyUpdates;

procedure ApplyUpdates(DataSets: array of TCustomDADataSet);

Description

Call ApplyUpdates to write all pending cached updates from all active datasets attached to this connection to a database or from specific datasets (listed in DataSets parameter). ApplyUpdates method passes cached data to the database for storage, takes care of committing or rolling back transactions and clearing the cache when the operation is successful.

Using ApplyUpdates for connection is a preferred method of updating datasets rather than calling each individual dataset's ApplyUpdates method.

See Also

TMemDataSet.CachedUpdates

TMemDataSet.ApplyUpdates


Commit
TCustomDAConnection.Commit

TCustomDAConnection

procedure Commit;

Description

Call Commit to commit current transaction. On commit server writes permanently all pending data updates associated with the current transactionto the database and then ends the transaction. The current transaction is the last transaction started by calling StartTransaction.

See Also

Rollback

StartTransaction


Connect
TCustomDAConnection.Connect

TCustomDAConnection

procedure Connect;

Description

Call Connect method to establish connection to a server. Connect sets the Connected property to True. If LoginPrompt is True Connect prompts user for login information as required by the server, or otherwise tries to establish connection using values, provided in Username, Password and Server properties.

See Also

Disconnect

Username

Password

Server

ConnectDialog


CreateDataSet
TCustomDAConnection.CreateDataSet

TCustomDAConnection

function CreateDataSet: TCustomDADataSet;

Description

CreateDataSet returns a new instance of TCustomDADataSet class and associates it with this connection object. In descendant classes this method should be overridden to create appropriate descendant of TCustomDADataset component.


CreateSQL
TCustomDAConnection.CreateSQL

TCustomDAConnection

function CreateSQL: TCustomDASQL;

Description

CreateSQL returns a new instance of TCustomDASQL class and associates it with this connection object.  In descendant classes this method should be overridden to create appropriate descendant of TCustomDASQL component.


Disconnect
TCustomDAConnection.Disconnect

TCustomDAConnection

procedure Disconnect;

Description

Call Disconnect to drop a connection to database. Before the connection component is deactivated, all associated datasets are closed. Calling Disconnect is the same as setting the Connected property to False.

In most cases, closing a connection frees system resources allocated to the connection.

If user transaction is active, i.e InTransaction flag is set, calling Disconnect commits current user transaction.

Note: If a previously active connection is closed and then reopened, any associated datasets must be individually reopened; reopening the connection does not automatically reopen associated datasets.

See also

TCustomConnection.Connected

Connect


ExecSQL
TCustomDAConnection.ExecSQL

TCustomDAConnection

function ExecSQL(Text: string; const Params: array of variant): variant;

Description

Use ExecSQL method to execute any SQL statement outside of TCustomDADataSet or TCustomDASQL components. Supply Params array with values of parameters arranged in the same order as they appear in SQL statement which itselt is passed in Text string parameter.

See also


GetDatabaseNames
TCustomDAConnection.GetDatabaseNames

TCustomDAConnection

procedure GetDatabaseNames(List: TStrings);

Description

Populates a string list with the names of databases.

Note: Any contents already in the target string list object are eliminated and overwritten by the data produces by GetDatabaseNames.

See Also

GetTableNames

GetStoredProcNames


GetTableNames
TCustomDAConnection.GetTableNames

TCustomDAConnection

procedure GetTableNames(List: TStrings);

Description

Populates a string list with the names of tables in the database.

Note: Any contents already in the target string list object are eliminated and overwritten by the data produces by GetTableNames.

See Also

GetDatabaseNames

GetStoredProcNames


GetStoredProcNames
TCustomDAConnection.GetStoredProcNames

TCustomDAConnection

procedure GetStoredProcNames(List: TStrings);

Description

Populates a string list with the names of stored procs in the database.

Note: Any contents already in the target string list object are eliminated and overwritten by the data produces by GetStoredProcNames.

See Also

GetDatabaseNames

GetTableNames


MonitorMessage
TCustomDAConnection.MonitorMessage

TCustomDAConnection

procedure MonitorMessage(const Msg: string);

Description

Call MonitorMessage to output specified message via SQLMonitor component.

See Also

TCustomDASQLMonitor


RemoveFromPool
TCustomDAConnection.RemoveFromPool

TCustomDAConnection

procedure RemoveFromPool;

Description

Call RemoveFromPool method to mark this connection, that after disconnect it must not be returned to connection pool but deleted.

See Also

Pooling

PoolingOptions


Rollback
TCustomDAConnection.Rollback

TCustomDAConnection

procedure Rollback;

Description

Call Rollback to discard all updates, insertions, and deletions of data associated with the current transaction to the database server and then end the transaction. The current transaction is the last transaction started by calling StartTransaction.

See Also

Commit

StartTransaction


StartTransaction
TCustomDAConnection.StartTransaction

TCustomDAConnection

procedure StartTransaction;

Description

Call StartTransaction to begin a new user transaction against the database server. Before calling StartTransaction, an application should check the status of the InTransaction property. If InTransaction is True, indicating that a transaction is already in progress, a subsequent call to StartTransaction without first calling Commit or Rollback to end the current transaction raises EDatabaseError. Calling StartTransaction when connection is closed also raises EDatabaseError.

Updates, insertions, and deletions that take place after a call to StartTransaction are held by the server until an application calls Commit to save the changes or Rollback to cancel them.

See Also

Commit

Rollback

InTransaction


OnError
TCustomDAConnection.OnError

TCustomDAConnection

Type

  TDAConnectionErrorEvent = procedure (Sender: TObject; E: EDAError; var Fail: boolean) ofobject;

property OnError: TDAConnectionErrorEvent;

Description

Write an OnError event handler to respond to errors that arise with connection. Check E parameter to get an error code. Set the Fail parameter to False to prevent an error dialog from being displayed and to raise EAbort exception to cancel current operation. The default value of Fail is True.


OnConnectionLost
TCustomDAConnection.OnConnectionLost

TCustomDAConnection

type

  TConnLostCause = (clUnknown, clExecute, clOpen, clRefresh,

    clApply, clServiceQuery, clTransStart, clConnectionApply, clConnect);

  TRetryMode = (rmRaise, rmReconnect, rmReconnectExecute);

  TConnectionLostEvent = procedure (Sender: TObject; Component:

    TComponent; ConnLostCause: TConnLostCause; var RetryMode:

    TRetryMode) of object;

property OnConnectionLost: TConnectionLostEvent;

Description

Write an OnConnectionLost event handler to process fatal errors and to perform failover. ConnLostCause parameter can have following values.

clUnknown	Connection lost reason - unknown.

clExecute	Connection lost detected during SQL execution (Reconnect with exception possible).

clOpen	Connection lost detected during SQL execution (Reconnect with exception possible).

clRefresh	Connection lost detected during query opening (Reconnect/Reexecute possible).

clApply	Connection lost detected during DataSet.ApplyUpdates (Reconnect/Reexecute possible).

clServiceQuery	Connection lost detected during service information request (Reconnect/Reexecute possible).

clTransStart	Connection lost detected during transaction start (Reconnect/Reexecute possible). clTransStart has less priority then clConnectionApply.

clConnectionApply	Connection lost detected during Connection.ApplyUpdates (Reconnect/Reexecute possible).

clConnect	Connection lost detected during connection establishing (Reconnect possible).

Set RetryMode parameter to specify application behavior when connection lost. It can have following values:

rmRaise	An exception is raised.

rmReconnect	Reconnect is performed and then exception is raised.

rmReconnectExecute	Reconnect is performed and abortive operation is reexecuted. Exception is not raised.

Note   You should explicitly add MemData unit to 'uses' list to use OnConnectionLost event handler.


Description
DADataAdapter

Hierarchy	Properties	Methods

Unit

CoreLab.Dac.DataAdapter

Description

DataAdapter serves as a bridge between a  System.Data.DataSet and a TDataSet component (data source) for retrieving and saving data. DataAdapter provides this bridge by mapping Fill, which changes the data in the System.Data.DataSet to match the data in the data source, and Update, which changes the data in the data source to match the data in the System.Data.DataSet.

See Also

MSDataAdapter


DataSet
DADataAdapter.DataSet

DADataAdapter

property DataSet: TDataSet;

Description

Specify TDataSet object which will be used as data source for DADataAdapter component.


Fill
DADataAdapter.Fill

DADataAdapter

function Fill(Data: DataSet; tableName: string): integer;

Description

Adds or refreshes rows in the System.Data.DataSet to match those in the TDataSet using the DataSet parameter, and creates a DataTable named tableName. Function returns the number of rows successfully inserted to DataSet.

TDataSet object associated with DADataAdapter must be valid, but it does not need to be open. If TDataSet is closed before Fill is called, it is opened to retrieve data, then closed. If TDataSet is open before Fill is called, it remains open.

If an error is encountered while populating the dataset, rows added prior to the occurrence of the error remain in the dataset. The remainder of the operation is aborted.

If TDataSet does not return any rows, fields are created and no rows are added to the DataSet, and no exception is raised.

See Also

Update


Update
DADataAdapter.Update

DADataAdapter

function Update(Data: DataSet; tableName: string): integer;

Description

Perform Insert, Edit, Delete for each inserted, updated, or deleted row in the specified System.Data.DataSet due to the ordering of the rows in the DataTable. It should be noted that these statements are not performed as a batch process; each row is updated individually. Function returns the number of rows successfully updated from the DataSet.

See Also

Fill


Description
TCustomDADataSet

Hierarchy	Properties	Methods	Events

Unit

DBAccess

Description

TCustomDADataSet encapsulates general set of properties, events, and methods for working with data accessed through various database engines. All database-specific features are expressly supported by descendants of TCustomDADataSet.

Applications should never use TCustomDADataSet objects directly.


AutoCommit
TCustomDADataSet.AutoCommit

TCustomDADataSet

property AutoCommit: Boolean;

Description

When True and Connection.AutoCommit is True and Connection.InTransaction is False, each update, insert or delete statement is automatically committed by database server.


BaseSQL
TCustomDADataSet.BaseSQL

TCustomDADataSet

property BaseSQL: String;

Description

Use BaseSQL to return SQL text without any changes performed by AddWhere, SetOrderBy and FilterSQL, only macros are expanded. SQL text with all these changes can be returned by FinalSQL.

See Also

FinalSQL

AddWhere

SaveSQL

SQLSaved

RestoreSQL


Connection
TCustomDADataSet.Connection

TCustomDADataSet

property Connection: TCustomDAConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TCustomDAConnection or its descendant class objects.

At runtime, set Connection property to reference an instanciated TCustomDAConnection object.


Debug
TCustomDADataSet.Debug

TCustomDADataSet

property Debug: Boolean;

Description

Set Debug to True to display executing statement and all its parameter values. Also displays type of parameters.

See also:

TCustomDASQL.Debug


DetailFields
TCustomDADataSet.DetailFields

TCustomDADataSet

property DetailFields: String;

Description

Use DetailFields property to specify fields that correspond to foregin key fields from MasterFields when building master/detail relationship. DetailFields is a string containing one or more field names in the detail table. Separate field names with semicolons.

Use Field Link Designer to set the value in design time.

See Also

MasterFields

MasterSource


FetchAll
TCustomDADataSet.FetchAll

TCustomDADataSet

property FetchAll: Boolean;

Description

When set to True all records of the query are requested from database server when the dataset is opening. When set to False, records are retrieved when a data-aware component or a program requests it. If a query can return a lot of records, set this property to False if initial response time is important.

Setting FetchAll property to False causes that first call of Locate(LocateEx) method may takes a lot of time to retrieve additional records on client side.

See also:

TCustomDADataSet.FetchRows

TMSConnection.Options.MultipleActiveResultSets

TMSConnection.Options.Provider


FetchRows
TCustomDADataSet.FetchRows

TCustomDADataSet

property FetchRows: Integer;

Description

Number of rows that will be transferred across the network at the same time. This property can have a great impact on performance. So it is preferable to choose the optimal value of FetchRows property for each SQL statement and software - hardware configuration experimentally.

The default value is 25.


FilterSQL
TCustomDADataSet.FilterSQL

TCustomDADataSet

property FilterSQL: string;

Description

FilterSQL property is like Filter property but in a differ it changes WHERE clause of SELECT statement and reopens query. Syntax is the same to WHERE clause.

Example

Query1.FilterSQL := 'Dept >= 20 and DName LIKE ''M%''';

See Also

AddWhere


FinalSQL
TCustomDADataSet.FinalSQL

TCustomDADataSet

property FinalSQL: String;

Description

Use FinalSQL to return SQL text with all the changes performed by AddWhere, SetOrderBy and FilterSQL and with with expanded macros. This is exactly the statement which will be passed on to database server.

See Also


IsQuery
TCustomDADataSet.IsQuery

TCustomDADataSet

property IsQuery: Boolean;

Description

After TCustomDADataSet component is prepared IsQuery property returns True if SQL statement is a SELECT query.

Use IsQuery property to check whether SQL statement returns rows or not.

IsQuery is a read-only property. Reading IsQuery on unprepared dataset raises exception.


MacroCount
TCustomDADataSet.MacroCount

TCustomDADataSet

property MacroCount: Integer;

Description

Read MacroCount to get a number of macros associated with the Macros property.

See Also

Macros


Macros
TCustomDADataSet.Macros

TCustomDADataSet

property Macros: TMacros;

Description

With the help of macros you can easily change SQL query text at design- or runtime. Marcos extend abilities of parameters and allow to change conditions in WHERE clause or sort order in ORDER BY clause. You just insert &MacroName in SQL query text and change value of macro in Macro property editor at design time or call MacroByName function at run time. At the time of opening query macro is replaced by its value.

Example

MyQuery.SQL:= 'SELECT * FROM Dept ORDER BY &Order';

MyQuery.MacroByName('Order').Value:= 'DeptNo';

MyQuery.Open;

See Also

TMacro

MacroByName

Params


MasterFields
TCustomDADataSet.MasterFields

TCustomDADataSet

property MasterFields: String;

Description

Use MasterFields after setting MasterSource property to specify the names of one or more fields that are used as foreign keys for this dataset when establishing detail-master relationship between it and the dataset specified in MasterSource.

MasterFields is a string containing one or more field names in the master table. Separate field names with semicolons.

Each time the current record in the master table changes, the new values in those fields are used to select corresponding records in this table for display.

Use Field Link Designer to set the values at design time after setting MasterSource property.

See Also

DetailFields

MasterSource

Working with master/detail relationships


MasterSource
TCustomDADataSet.MasterSource

TCustomDADataSet

property MasterSource: TDataSource;

Description

MasterSource property specifies the data source component which binds current dataset to master one.

TCustomDADataset uses MasterSource property to extract foreign key fields values from master dataset when building master/detail relationship between two datasets. MasterSource must point to another dataset; it cannot point to this dataset component.

When MasterSource is not nil dataset fills parameter values with corresponding field values from current record of the master dataset.

Note: Do not set DataSource property when building master/detail relationships. Although it points to the same object as MasterSource property, it may lead to undesirable results.

See Also

MasterFields

DetailFields

Working with master/detail relationships


Options
TCustomDADataSet.Options

TCustomDADataSet

type

  TCompressBlobMode = (cbNone, cbClient, cbServer, cbClientServer);

  TDADataSetOptions = class (TPersistent)

  published

    property AutoPrepare: boolean;

    property CacheCalcFields: boolean;

    property CompressBlobMode: TCompressBlobMode;

    property DetailDelay: Integer;

    property FieldsOrigin: boolean;

    property FlatBuffers: boolean;

    property LocalMasterDetail: boolean;

    property LongStrings: boolean;

    property NumberRange: boolean;

    property QuoteNames: boolean;

    property QueryRecCount: boolean;

    property RemoveOnRefresh: boolean;

    property RequiredFields: boolean;

    property ReturnParams: boolean;

    property SetFieldsReadonly: boolean;

    property StrictUpdate: boolean;

    property TrimFixedChar: boolean;

    property UpdateAllFields: boolean;

    property UpdateBatchSize: Integer;

  end;

property Options: TDADataSetOptions;

Description

Set properties of Options to specify behaviour of TCustomDADataSet object. The meanings of Options' properties are:

Property	Description

AutoPrepare	Set this property to execute automatic preparing on a query execution. Make sense for cases when a query will be executed several times, for example in Master/Detail relationships.

CacheCalcFields	Use this property to enable caching of calculated and lookup fields. It can be useful for reducing CPU usage for calculated fields. Using caching of calculated and lookup fields increases memory usage on client side.

CompressBlobMode	Use this property to store values of BLOB fields in compressed form. Add MemData unit to uses list to use this option. Compression rate greatly depends on stored data, for example, graphic data compresses usually badly unlike text. Can possess the following values:

cbNone	Values not compressed. The default value.

cbClient	Values are compressed and store as compressed data at client side. Before posting data to the server decompression is performed and data at the server side store in the original form. Allows to reduce used client memory due to increase access time to field values. Time spent to open DataSet and execute Post increases.

cbServer	Values are compressed before passing to the server and store at the server in compressed form. Allows to decrease database size at the server. Access time to field values does not change. Time spent to open DataSet and execute Post usually decreases.

cbClientServer	Values are compressed and store in compressed form. Allows to decrease volume of used memory at client and server sides. Access time to field values increases the same as for cbClient. Time spent to open DataSet and execute Post decreases.

Note   On using cbServer or cbClientServer data at the server is stored as compressed. Another applications can add records in uncompressed format but can't read and write already compressed data. If compressed BLOB is partially changed by another application (if signature was not changed), DAC will consider its value as NULL.

Blob compression is not applied to Memo fields because of possible cutting

DetailDelay	Use DetailDelay to get or set a delay in milliseconds before refreshing detail dataset while navigating master dataset. If DetailDelay is 0 (default value) then refreshing of detail dataset occurs immediately. DetailDelay option should be used for detail dataset.

FieldsOrigin	If True, TCustomDADataSet fills Origin property of TField objects by appropriate value when  opening dataset.

FlatBuffers	Controls how dataset treats data of ftString and ftVarBytes fields. When set to True all data fetched from server is stored in record  pdata without unused tails.

LocalMasterDetail	If True, for detail dataset in master-detail relationship, TCustomDADataSet uses local filtering for establishing master-detail relationship and does not refer to the server. Otherwise detail dataset performs query each time when record is selected in master dataset. This option is useful for reducing server calls number, server resources economy. It can be useful for slow connection. CachedUpdates mode can be used for detail dataset only when this option is set to true. Setting LocalMasterDetail option to true is not recommended when detail table contains too many rows, because when it is set to False, only records that correspond to the current record in master dataset are fetched.

LongStrings	Represents string fields with the length that is greater than 255 as TStringField not as TMemoField.

NumberRange	Sets MaxValue and MinValue properties of TIntegerField and TFloatField to appropriate values.

QuoteNames	If True, TCustomDADataSet quotes all database object names in autogenerated SQL statements such as update SQL.

QueryRecCount	If True and FetchAll property is False, TCustomDADataSet performs additional query to get record count for this SELECT so RecordCount property reflects the actual number of records. Does not have any effect if FetchAll property is True.

RemoveOnRefresh	When procedure RefreshRecord can't find necessary record on the server and RemoveOnRefresh is set to True, dataset removes the record locally. Usually RefreshRecord can't find necessary record when someone else dropped the record or changed the key value of it.

This option makes sense only if StrictUpdate option set to False. If the StrictUpdate option is True, error will be generated regardless of RemoveOnRefresh option value.

RequiredFields	If True, TCustomDADataSet sets Required property of TField objects for NOT NULL fields. It useful when table has trigger which updates NOT NULL fields.

ReturnParams	Returns new value of fields to dataset after insert or update. Actual value of field after insert or update may be different from the value stored in local memory if the table has a trigger. When ReturnParams is True OUT parameters of SQLInsert and SQLUpdate statements is assigned to corresponding fields.

SetFieldsReadonly	If True, dataset sets ReadOnly property to True for all fields that do not belong to UpdatingTable or can not be updated. Set this option for datasets that use automatic generation of update SQL statements only.

StrictUpdate	TCustomDADataSet raises exception when number of the updated or deleted records does not equal to 1. Setting this option also causes an exception if RefreshRecord procedure returns more than one record. The exception does not occur when you use non-SQL block.
Note: There can be problems if this option is set to True and triggers for UPDATE, DELETE, REFRESH commands that are defined for the table. So it is recommended to disable (set to False) this option with triggers.

TrimFixedChar	Specifies whether to discard all trailing spaces in string fields of the dataset.

UpdateAllFields	If True, all DataSet fields will be included in the generated UPDATE and INSERT statements. Unspecified fields will have NULL value in the INSERT statements. Otherwise, only updated fields will be included in the generated update statements.

UpdateBatchSize	Use UpdateBatchSize property to get or set a value that enables or disables batch processing support, and specifies the number of commands that can be executed in a batch. Takes effect only when updating dataset in CachedUpdates mode. The default value is 1.

See Also

Working with master/detail relationships

TMemDataSet.CachedUpdates


ParamCheck
TCustomDADataSet.ParamCheck

TCustomDADataSet

property ParamCheck: boolean;

Description

Use ParamCheck to specify whether parameters for Params property are implicitly generated when SQL property is changing.

Set ParamCheck to True to let dataset automatically generate Params property for dataset based on SQL statement.

Setting ParamCheck to False is mainly suited if the dataset component passes to a server the DDL statements that contain, for example, declarations of stored procedures which themselves will accept parameterized values. Default value is True.

See Also

Params


ParamCount
TCustomDADataSet.ParamCount

TCustomDADataSet

property ParamCount: Integer;

Description

Use ParamCount to determine how many parameters are there in the Params property.

See Also

Params


Params
TCustomDADataSet.Params

TCustomDADataSet

property Params: TDAParams;

Description

Contains the parameters for a query's SQL statement.

Access Params at runtime to view and set parameter names, values, and data types dynamically (at design time use the Parameters editor to set parameter information). Params is a zero-based array of parameter records. Index specifies the array element to access.

An easier way to set and retrieve parameter values when the name of each parameter is known is to call ParamByName.

See Also

ParamByName

Macros


ReadOnly
TCustomDADataSet.ReadOnly

TCustomDADataSet

property ReadOnly: Boolean;

Description

Use ReadOnly to prevent users from updating, inserting, or deleting data in the dataset. By default, ReadOnly is False, meaning users can potentially alter a dataset's data.

To guarantee that users cannot modify or add data to a dataset, set ReadOnly to True.

When ReadOnly is True, the dataset's CanModify property is False.


RefreshOptions
TCustomDADataSet.RefreshOptions

TCustomDADataSet

type

  TRefreshOption = (roAfterInsert, roAfterUpdate, roBeforeEdit);

  TRefreshOptions = set of TRefreshOption;

property RefreshOptions: TRefreshOptions;

Description

Use RefreshOptions property to determine when the editing record will be refreshed.

Refresh is performed by RefreshRecord method.

It queries current record and replaces one in dataset. Refresh record is useful when the table has triggers or fields of the table have default values. Use roBeforeEdit to get actual data before editing.

Value	Meaning

roAfterInsert	Refresh is performed after insert a record

roAfterUpdate	Refresh is performed after update a record

roBeforeEdit	Refresh is performed by Edit method

The default value is [].

See Also

RefreshRecord


RowsAffected
TCustomDADataSet.RowsAffected

TCustomDADataSet

property RowsAffected: Integer;

Description

Check RowsAffected to determine how many rows were updated or deleted during the last query operation. If RowsAffected is -1, the query did not update or delete any rows.


SQL
TCustomDADataSet.SQL

TCustomDADataSet

property SQL: TStrings;

Description

Use SQL to provide the SQL statement that a query component executes when its Open method is called. At design time the SQL property can be edited by invoking the String List editor in the Object Inspector.

When SQL is changed TCustomDADataSet calls Close and UnPrepare.

See Also

SQLInsert

SQLUpdate

SQLDelete

SQLRefresh


SQLDelete
TCustomDADataSet.SQLDelete

TCustomDADataSet

property SQLDelete: TStrings;

Description

Use SQLDelete property to specify SQL statement that will be used when applying a deletion to a record. Statements can be parameterized queries.

To create SQLDelete statement at design-time, use query statements editor.

Example

  DELETE FROM Orders

  WHERE

    OrderID = :Old_OrderID

See Also

SQL

SQLInsert

SQLUpdate

SQLRefresh


SQLInsert
TCustomDADataSet.SQLInsert

TCustomDADataSet

property SQLInsert: TStrings;

Description

Use SQLInsert property to specify SQL statement that will be used when applying an insertion to a dataset. Statements can be parameterized queries. Names of the parameters should be the same as field names. Parameters prefixed with OLD_ allow to use current values of fields prior to actual operation.

Use ReturnParam to return OUT parameters back to dataset.

To create SQLInsert statement at design-time, use query statements editor.

Example

  INSERT INTO Orders

    (Shipname)

  VALUES

    (:Shipname)

See Also

SQL

SQLUpdate

SQLDelete

SQLRefresh


SQLRefresh
TCustomDADataSet.SQLRefresh

TCustomDADataSet

property SQLRefresh: TStrings;

Description

Use SQLRefresh property to specify SQL statement that will be used to refresh current record by calling RefreshRecord procedure.

Another behavior is observed when SQLRefresh property is assigned with a single WHERE clause that holds frequently altered search condition. In this case WHERE clause from SQLRefresh is combined with the same clause of SELECT statement in SQL property and this final query is then sent to database server.

To create SQLRefresh statement at design-time, use query statements editor.

Example

  SELECT Shipname FROM Orders

  WHERE

    OrderID = :OrderID

See Also

RefreshRecord

SQL

SQLInsert

SQLUpdate

SQLDelete


SQLUpdate
TCustomDADataSet.SQLUpdate

TCustomDADataSet

property SQLUpdate: TStrings;

Description

Use SQLUpdate property to specify SQL statement that will be used when applying an update to a dataset. Statements can be parameterized queries. Names of the parameters should be the same as field names. Parameters prefixed with OLD_ allow to use current values of fields prior to actual operation.

Use ReturnParam to return OUT parameters back to dataset.

To create SQLUpdate statement at design-time, use query statement editor.

Example

  UPDATE Orders

  SET

    ShipName = :ShipName,

  WHERE

    OrderID = :Old_OrderID

See Also

SQL

SQLInsert

SQLDelete

SQLRefresh


UniDirectional
TCustomDADataSet.UniDirectional

TCustomDADataSet

property UniDirectional: Boolean;

Description

Traditionally SQL cursors are unidirectional. They can travel only forward through a dataset. The TCustomDADataset, however, permits bidirectional travel by caching records. If an application does not need bidirectional access to records in a result set, set UniDirectional to True. When UniDirectional is True, an application requires less memory and performance is improved.

In FetchAll=False mode data is fetching on demand. When Unidirectional is set to True, data is fetched on demand as well, but obtained rows are not cached except the current row. So, FetchAll=False mode is a component of Unidirectional=True mode, and setting Unidirectional to True requires FetchAll to be set to False. Pay attention to restrictions of FetchAll = False mode.

The default value of UniDirectional is False, enabling forward and backward navigation.

See Also

FetchAll


UpdateObject
TCustomDADataSet.UpdateObject

TCustomDADataSet

property UpdateObject: TCustomDAUpdateSQL;

Description

UpdateObject property points to an update object component which provides SQL statements that perform updates of read-only datasets when cached updates are enabled.


AddWhere
TCustomDADataSet.AddWhere

TCustomDADataSet

procedure AddWhere(Condition: string);

Description

Call AddWhere to add condition to WHERE clause of SELECT statement in SQL property.

If SELECT statement has not WHERE clause AddWhere creates it.

Note:	AddWhere method is implicitly called by RefreshRecord.

See Also

DeleteWhere


DeleteWhere
TCustomDADataSet.DeleteWhere

TCustomDADataSet

procedure DeleteWhere;

Description

Call DeleteWhere to remove WHERE clause from SQL property and assign BaseSQL property.

See Also

AddWhere

BaseSQL


Execute
TCustomDADataSet.Execute

TCustomDADataSet

procedure Execute;

Description

Use Execute to execute the SQL statement on the server. If SQL statement is a query Execute calls Open method.

Execute implicitly prepares the SQL statement by calling Prepare method if AutoPrepare option is set to true and the statement has not already been prepared. To speed up performance, in case of multiple Execute calls an application should call Prepare before calling Execute method for the first time.

See Also

AfterExecute

Executing

Prepare


Executing
TCustomDADataSet.Executing

TCustomDADataSet

function Executing: Boolean;

Description

Check Executing to learn whether TCustomDADataSet still executes SQL statement.


Fetched
TCustomDADataSet.Fetched

TCustomDADataSet

function Fetched: Boolean;

Description

Check Fetched to learn whether TCustomDADataSet has already fetched all rows or not.

See Also

Fetching


Fetching
TCustomDADataSet.Fetching

TCustomDADataSet

function Fetching: Boolean;

Description

Check Fetching to learn whether TCustomDADataSet still fetching rows.

See Also

Executing


FetchingAll
TCustomDADataSet.FetchingAll

TCustomDADataSet

function FetchingAll: Boolean;

Description

Check FetchingAll to learn whether TCustomDADataSet is fetching all rows to the end.

See Also

Executing


FindKey
TCustomDADataSet.FindKey

TCustomDADataSet

function  FindKey(const KeyValues: array of const): Boolean;

Description

Use FindKey to search for a specific record in a dataset using key of this dataset. The function searches in key columns only. KeyValues argument is used to define values to look for. If a search is successful, FindKey positions the cursor on the matching record and returns true. Otherwise the cursor is not moved, and FindKey returns false.

This function is provided for BDE compatibility only. It is recommended to use functions Locate and LocateEx for record search.

See Also

Locate, LocateEx

FindNearest


FindMacro
TCustomDADataSet.FindMacro

TCustomDADataSet

function FindMacro(Name: String): TMacro;

Description

Call FindMacro to determine if a specified macro exists in a dataset. Name is the name of the macro for which to search. If FindMacro finds a macro with a matching name, it returns the TMacro object for the specified Name. Otherwise it returns nil.

See Also

TMacro

Macros

MacroByName


FindNearest
TCustomDADataSet.FindNearest

TCustomDADataSet

procedure FindNearest(const KeyValues: array of const);

Description

Use FindNearest to move the cursor to a specific record or to the first record in the dataset that matches or is greater than the values specified in the KeyValues parameter. If there are no records that match or exceed the specified criteria, cursor won't move.

This function is provided for BDE compatibility only. It is recommended to use functions Locate and LocateEx for record search.

See Also

Locate

LocateEx

FindKey


FindParam
TCustomDADataSet.FindParam

TCustomDADataSet

function FindParam(Name: String): TDAParam;

Description

Call FindParam to determine if a specified param component exists in a dataset. Name is the name of the param for which to search. If FindParam finds a param with a matching name, it returns the TDAParam object for the specified Name. Otherwise it returns nil.

See Also

Params

ParamByName


GetDataType
TCustomDADataSet.GetDataType

TCustomDADataSet

function GetDataType(const FieldName: String): Integer;

Description

Use GetDataType to return internal field types defined in MemData and accompanying modules. Internal field data types extend TFieldType type of VCL by specific database server data types. For example dtString, dtFile, dtObject.


GetFieldObject
TCustomDADataSet.GetFieldObject

TCustomDADataSet

function GetFieldObject(const FieldName: string): TSharedObject;

Description

Use GetFieldObject to return multireference shared object from dataset. If field does not hold one of the TSharedObject descendants GetFieldObject raises an exception.


GetFieldPrecision
TCustomDADataSet.GetFieldPrecision

TCustomDADataSet

function GetFieldPrecision(const FieldName: String): Integer;

Description

Call GetFieldPrecision to retrieve precision of number field. FieldName is the name of an existing field.

See Also

GetFieldScale


GetFieldScale
TCustomDADataSet.GetFieldScale

TCustomDADataSet

function GetFieldScale(const FieldName: String): Integer;

Description

Call GetFieldScale to retrieve scale of number field. FieldName is the name of an existing field.

See Also

GetFieldPrecision


GetOrderBy
TCustomDADataSet.GetOrderBy

TCustomDADataSet

function GetOrderBy: string;

Description

Call GetOrderBy method to retrieve ORDER BY clause from SQL statement.

Note: GetOrderBy and SetOrderBy methods serve to process only quite simple queries and don't support, for example, subqueries.

See Also

SetOrderBy


GotoCurrent
TCustomDADataSet.GotoCurrent

TCustomDADataSet

procedure GotoCurrent(DataSet: TCustomDADataSet)

Description

Sets the current record in this dataset the same as the current record in another dataset. Key fields in both these DataSets must be coincident.

See Also

Locate

LocateEx


MacroByName
TCustomDADataSet.MacroByName

TCustomDADataSet

Accesses macro information based on a specified macro name.

function MacroByName(Name: String): TMacro;

Description

Use MacroByName method to find a Macro with the name passed in Name. If a match is found, MacroByName returns the Macro. Otherwise, an exception is raised. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.

To locate a parameter by name without raising an exception if the parameter is not found, use the FindMacro method.

To assign value of macro use TMacro.Value property.

Example

MyQuery.SQL:= 'SELECT * FROM Scott.Dept ORDER BY &Order';

MyQuery.MacroByName('Order').Value:= 'DeptNo';

MyQuery.Open;

See Also

TMacro

Macros

FindMacro


ParamByName
TCustomDADataSet.ParamByName

TCustomDADataSet

Accesses parameter information based on a specified parameter name.

function ParamByName(Name: String): TDAParam;

Description

Call ParamByName to set or use parameter information for a specific parameter based on its name. Name is the name of the parameter for which to retrieve information. ParamByName is used to set an parameter's value at runtime and returns TDAParam object. For example, the following statement retrieves the current value of a parameter called "Contact" into an edit box:

Example

Edit1.Text := Query1.ParamsByName('Contact').AsString;

See Also

Params

FindParam


Prepare
TCustomDADataSet.Prepare

TCustomDADataSet

procedure Prepare;

Description

Call Prepare to allocate, open and parse cursor for the query. Calling Prepare before executing a query improves application performance.

 When a query will be executed a number of times, an application should always explicitly prepare the query to avoid multiple and unnecessary prepares and unprepares.

The UnPrepare method unprepares a query.

Note

When you change the text of a query at runtime, the query is automatically closed and unprepared.

See Also

Prepared

UnPrepare

Options.AutoPrepare


RefreshRecord
TCustomDADataSet.RefreshRecord

TCustomDADataSet

procedure RefreshRecord;

Description

Use RefreshRecord to actualize field values for current record. RefreshRecord performs query to database and refetches new field values from returned cursor.

See Also

RefreshOptions


RestoreSQL
TCustomDADataSet.RestoreSQL

TCustomDADataSet

procedure RestoreSQL;

Description

Use RestoreSQL method to restore SQL property modified by AddWhere and SetOrderBy.

See Also

AddWhere

SetOrderBy

SaveSQL

SQLSaved


SaveSQL
TCustomDADataSet.SaveSQL

TCustomDADataSet

procedure SaveSQL;

Description

Use SaveSQL method to save SQL property value to BaseSQL property.

See Also

SQLSaved

RestoreSQL

BaseSQL


SetOrderBy
TCustomDADataSet.SetOrderBy

TCustomDADataSet

procedure SetOrderBy(Fields: String);

Description

Use SetOrderBy to build ORDER BY clause of SELECT statement. The fields are identified by the comma-delimited string Fields.

Note: GetOrderBy and SetOrderBy methods serve to process only quite simple queries and don't support, for example, subqueries.

Example

Query1.SetOrderBy('DeptNo;DName');

See Also

GetOrderBy


SQLSaved
TCustomDADataSet.SQLSaved

TCustomDADataSet

function SQLSaved: string;

Description

Call SQLSaved method to know whether SQL property value was saved to BaseSQL property.

See Also

SaveSQL

RestoreSQL

BaseSQL


AfterExecute
TCustomDADataSet.AfterExecute

TCustomDADataSet

type

  TAfterExecuteEvent = procedure (Sender:TObject; Result: Boolean) of object;

property AfterExecute: TAfterExecuteEvent;

Description

Occurs after application executed query to database.

See Also

Execute


AfterFetch
TCustomDADataSet.AfterFetch

TCustomDADataSet

type

  TAfterFetchEvent = procedure (Dataset: TCustomDADataSet) of object;

property AfterFetch: TAfterFetchEvent;

Description

AfterFetch event occurs after dataset finishes fetching data from server.

Note:	In NonBlocking mode this event occurs in context of calling thread.

See Also

BeforeFetch

TCustomMSDataSet.Options

NonBlocking demo project


AfterUpdateExecute
TCustomDADataSet.AfterUpdateExecute

TCustomDADataSet

type

  TStatementType = (stQuery,stInsert,stUpdate,stDelete,stLock,stRefresh);

  TStatementTypes = set of TStatementType;

  TUpdateExecuteEvent = procedure (Sender: TDataSet; StatementTypes: TStatementTypes;

    Params: TDAParams) ofobject;

property AfterUpdateExecute: TUpdateExecuteEvent;

Description

Occurs after executing insert, delete, update, lock and refresh operation. You can use AfterUpdateExecute to read parameters of corresponding statements.

See Also

BeforeUpdateExecute


BeforeFetch
TCustomDADataSet.BeforeFetch

TCustomDADataSet

type

  TBeforeFetchEvent = procedure (Dataset: TCustomDADataSet; var Cancel: boolean) of object;

property BeforeFetch: TBeforeFetchEvent;

Description

BeforeFetch event occurs each time before dataset is going to fetch block of records from server. Set Cancel to True to abort current fetch operation.

Note:	In NonBlocking mode event handler is called from the fetching thread. Therefore if you have set NonBlocking property to True then you should use thread synchronization mechanisms in the code of BeforeFetch event handler.

See Also

AfterFetch

TCustomMSDataSet.Options

NonBlocking demo project


BeforeUpdateExecute
TCustomDADataSet.BeforeUpdateExecute

TCustomDADataSet

type

  TStatementType = (stQuery,stInsert,stUpdate,stDelete,stLock,stRefresh);

  TStatementTypes = set of TStatementType;

  TUpdateExecuteEvent = procedure (Sender: TDataSet;

    StatementTypes: TStatementTypes; Params: TDAParams) of object;

property BeforeUpdateExecute: TUpdateExecuteEvent;

Description

Occurs before executing insert, delete, update, lock and refresh operation. You can use BeforeUpdateExecute to set parameters of corresponding statements.

See Also

AfterUpdateExecute


Description
TCustomDASQL

Hierarchy	Properties	Methods	Events

Unit

DBAccess

Description

TCustomDASQL is a base class that defines functionality for descendant classes which access database using SQL statements. Applications never use TCustomDASQL objects directly. Instead they use descendants of TCustomDASQL.

Use TCustomDASQL when a client application must execute SQL statement or call stored procedure on a database server. The SQL statement should not retrieve rows  from a database.

See Also

SQL demo project


AutoCommit
TCustomDASQL.AutoCommit

TCustomDASQL

property AutoCommit: Boolean;

Description

When True and Connection.AutoCommit is True and Connection.InTransaction is False, each update, insert or delete statement is automatically committed by database server.


Connection
TCustomDASQL.Connection

TCustomDASQL

property Connection: TCustomDAConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TCustomDAConnection or its descendant class objects.

At runtime, set Connection property to reference an instanciated TCustomDAConnection object.


Debug
TCustomDASQL.Debug

TCustomDASQL

property Debug: Boolean;

Description

Set Debug to True to display statement being executed and all its parameter values. Also displays types of parameters.

See also:

TCustomDADataSet.Debug


FinalSQL
TCustomDASQL.FinalSQL

TCustomDASQL

property FinalSQL: String;

Description

Read FinalSQL to return SQL statement with expanded macros. This is exactly the statement which will be passed on to a database server.


MacroCount
TCustomDASQL.MacroCount

TCustomDASQL

property MacroCount: Integer;

Description

Read MacroCount to get a number of macros associated with the Macros property.

See Also

Macros


Macros
TCustomDASQL.Macros

TCustomDASQL

property Macros: TMacros;

Description

With the help of macros you can easily change SQL query text at design or run time. Marcos extend abilities of parameters and let change conditions in WHERE clause or sort order in ORDER BY clause. You just insert &MacroName in SQL query text and change value of macro with Macro property editor at design time or MacroByName function at run time. At the time of opening query, macros are replaced with their values.

See Also

TMacro

MacroByName

Params


ParamCheck
TCustomDASQL.ParamCheck

TCustomDASQL

property ParamCheck: boolean;

Description

Use ParamCheck to specify whether parameters for Params property are implicitly generated when SQL property is changing.

Set ParamCheck to True to let TCustomDASQL automatically generate Params property for dataset based on SQL statement.

Setting ParamCheck to False is mainly suited if the dataset component passes to a server the DDL statements that contain, for example, declarations of stored procedures which themselves will accept parameterized values. Default value is True.

See Also

Params


ParamCount
TCustomDASQL.ParamCount

TCustomDASQL

property ParamCount: Integer;

Description

Use ParamCount to determine how many parameters are there in Params property.


Params
TCustomDASQL.Params

TCustomDASQL

property Params: TDAParams;

Description

Contains parameters for an SQL statement.

Access Params at runtime to view and set parameter names, values, and data types dynamically (at design time use the Parameters editor to set parameter properties). Params is a zero-based array of parameter records. Index specifies the array element to access.

An easier way to set and retrieve parameter values when the name of each parameter is known is to call ParamByName.

Example

Setting parameters in runtime.

procedure TForm1.Button1Click(Sender: TObject);

begin

  with MSSQL do

  begin

    SQL.Clear;

    SQL.Add('INSERT INTO Temp_Table(Id, Name)');

    SQL.Add('VALUES (:id, :Name)');

    ParamByName('Id').AsInteger := 55;

    Params[1].AsString := ' Green';

    Execute;

  end;

end;

See Also

TDAParam

FindParam

Macros


ParamValues
TCustomDASQL.ParamValues

TCustomDASQL

property ParamValues[const ParamName: string]: Variant;

Description

Use ParamValues to get or set the values of individual field parameters that are identified by name. ParamName is a string containing the names of the individual field parameters of interest. If ParamValues is used to access more than one field parameter, the names are separated by semicolons (;).

Setting ParamValues sets the Value property for each parameter listed in the ParamName string. Specify the values as Variants.

Getting ParamValues retrieves a variant array of variants, each of which represents the value of one of the named parameters.

Note	Params array of parameters is generated implicitely if ParamCheck property is set to True. If ParamName includes a name that does not match any of the field parameters in Items, an exception is raised.


Prepared
TCustomDASQL.Prepared

TCustomDASQL

property Prepared: Boolean;

Description

Determines whether or not a query is prepared for execution.

Examine Prepared to determine if a query is already prepared for execution. If Prepared is True, the query is prepared, and if Prepared is False, the query is not prepared. While a query need not be prepared before execution, execution performance is enhanced if the query is prepared beforehand, particularly if it is a parameterized query that is executed more than once using the same parameter values.

See Also

Prepare


RowsAffected
TCustomDASQL.RowsAffected

TCustomDASQL

property RowsAffected: Integer;

Description

Check RowsAffected to determine how many rows were inserted, updated or deleted during the last query operation. If RowsAffected is -1, the query did not insert, update or delete any rows.


SQL
TCustomDASQL.SQL

TCustomDASQL

property SQL: TStrings;

Description

Use SQL property to provide an SQL statement that TCustomDASQL component executes when Execute method is called. At design time the SQL property can be edited by invoking a String List editor in the Object Inspector.

See Also

FinalSQL

Execute


Execute
TCustomDASQL.Execute

TCustomDASQL

procedure Execute; overload;

procedure Execute(Iters: Integer); overload;

Description

Use Execute to execute the SQL statement on the server. If SQL statement has OUT parameters use ParamByName method or Params property to get their values. Iters argument specifies the number of times this statement is executed for DML array operations.


Executing
TCustomDASQL.Executing

TCustomDASQL

function Executing: boolean;

Description

Check Executing to find out whether TCustomDASQL still executes SQL statement. Use Executing method is used for nonblocking execution.


FindMacro
TCustomDASQL.FindMacro

TCustomDASQL

function FindMacro(Name: String): TMacro;

Description

Call FindMacro to determine if a specified macro exists in a dataset. Name is the name of the macro for which to search. If FindMacro finds a macro with a matching name, it returns the TMacro object for the specified Name. Otherwise it returns nil.

See Also

TMacro

Macros

MacroByName


FindParam
TCustomDASQL.FindParam

TCustomDASQL

function FindParam(Name: String): TDAParam;

Description

Use FindParam method to find a parameter with the name passed in Name argument. If a match is found, FindParam returns the parameter. Otherwise, it returns nil.

See Also

ParamByName


MacroByName
TCustomDASQL.MacroByName

TCustomDASQL

Accesses macro information based on a specified macro name.

function MacroByName(Name: String): TMacro;

Description

Use MacroByName method to find a Macro with the name passed in Name argument. If a match is found, MacroByName returns the Macro. Otherwise, an exception is raised. Use this method rather than a direct reference to the Items property to avoid dependency on their actual ordering inside Macros property.

To locate a parameter by name without raising an exception if the parameter is not found, use FindMacro method.

To assign a value to the macro use TMacro.Value property.

See Also

TMacro

Macros

FindMacro


ParamByName
TCustomDASQL.ParamByName

TCustomDASQL

function ParamByName(Name: String):TDAParam;

Description

Use ParamByName method to find a parameter with the name passed in Value.

If a match is found, ParamByName returns the parameter. Otherwise, an exception is raised.

Example

MSSQL.Execute;

Edit1.Text := MSSQL.ParamsByName('Contact').AsString;

See Also

FindParam


Prepare
TCustomDASQL.Prepare

TCustomDASQL

procedure Prepare;

Description

Call Prepare to allocate, open and parse database cursor for the query. Calling Prepare before executing a query improves application performance in case of multiple calls.

When a query will be executed a number of times, an application should always explicitly prepare the query to avoid multiple and unnecessary prepares and unprepares.

The UnPrepare method unprepares a query.

See Also

Prepared

UnPrepare


UnPrepare
TCustomDASQL.UnPrepare

TCustomDASQL

procedure UnPrepare;

Description

Call UnPrepare to free the resources allocated for a previously prepared query on the server and client sides.

See Also

Prepare


WaitExecuting
TCustomDASQL.WaitExecuting

TCustomDASQL

function WaitExecuting(TimeOut: integer = 0): boolean;

Description

Call WaitExecuting to wait for Timeout seconds while TCustomDASQL executes SQL statement. Use WaitExecuting method for nonblocking execution. If TimeOut is 0 WaitExecuting waits for infinite time.

See Also

Executing


AfterExecute
TCustomDASQL.AfterExecute

TCustomDASQL

type

  TAfterExecuteEvent = procedure (Sender:TObject; Result: Boolean) ofobject;

property AfterExecute: TAfterExecuteEvent;

Description

Occurs after SQL statement has been executed. Is suited for descendant components which make use of multithreaded environment.

Result is True if SQL statement is executed successfully, False otherwise.

See Also

Execute


Description
TCustomDASQLMonitor

Hierarchy	Properties	Methods	Events

Unit

DASQLMonitor

Description

TCustomDASQLMonitor is a base class that introduces properties and methods to interactively monitor dynamic SQL execution in database applications. TCustomDASQLMonitor provides two ways of displaying debug information. It monitors either by dialog window or by Borland's proprietary SQL Monitor. Furthermore to receive debug information use OnSQL event.

In applications use descendants from TCustomDASQLMonitor.


Active
TCustomDASQLMonitor.Active

TCustomDASQLMonitor

property Active: Boolean;

Description

Set Active property to True to activate monitoring of SQL.

See Also

OnSQL


Options
TCustomDASQLMonitor.Options

TCustomDASQLMonitor

type

  TMonitorOption = (moDialog, moSQLMonitor, moDBMonitor, moCustom, moHandled);

  TMonitorOptions = set of TMonitorOption;

property Options: TMonitorOptions;

Description

Set Options to include the desired properties for TCustomDASQLMonitor. Possible values of the Options are:

Property	Meaning

moDialog	Display debug information in debug window.

moSQLMonitor	Display debug information in Borland SQL Monitor.

moDBMonitor	Display debug information in DBMonitor.

moCustom	Allow monitoring of SQL for individual components. Set Debug properties in SQL-related components to True to let TCustomDASQLMonitor instance to monitor their behavior. Affects when moDialog is included.

moHandled	Include component hanlde into event description string.

See Also

OnSQL


TraceFlags
TCustomDASQLMonitor.TraceFlags

TCustomDASQLMonitor

type

  TDATraceFlag = (tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc, tfParams);

  TDATraceFlags = set of TDATraceFlag;

property TraceFlags: TDATraceFlags;

Description

Use TraceFlags to specify which database operations the monitor should track in an application at runtime.

tfQPrepare	queries preparation

tfQExecute	execution of the queries

tfError	errors of query execution

tfConnect	establishing a connection

tfTransact	processing transactions

tfParams	representing parameter values for tfQPrepare and tfQExecute

See Also

OnSQL


OnSQL
TCustomDASQLMonitor.OnSQL

TCustomDASQLMonitor

type

  TOnSQLEvent = procedure (Sender: TObject; Text: string; Flag: TDATraceFlag) ofobject;

property OnSQL: TOnSQLEvent;

Description

Write an OnSQL event handler to let application trace SQL activity on database components. Text parameter holds detected SQL statement. Use Flag parameter to make selective processing of SQL in hander body.

See Also

TraceFlags


Description
TCustomDAUpdateSQL

Hierarchy	Properties	Methods

Unit

DBAccess

Description

TCustomDAUpdateSQL component is the base class for components that provide DML statements for the dataset components that return read-only result set. This component is provided for BDE compatibility only.

See Also

UpdateObject


Dataset
TCustomDAUpdateSQL.DataSet

TCustomDAUpdateSQL

property DataSet: TCustomDADataSet;

Description

DataSet property holds reference to the TCustomDADataSet object being updated. Generally it is not used directly.


DeleteObject
TCustomDAUpdateSQL.DeleteObject

TCustomDAUpdateSQL

property DeleteObject: TComponent;

Description

Assign TMSSQL component or TCustomMSDataSet descendant to this property  to tune the DELETE operation more carefully. In some cases that can give some additional performance. Set the SQL property of the object in the same way as used for DeleteSQL property.

See Also

DeleteSQL


DeleteSQL
TCustomDAUpdateSQL.DeleteSQL

TCustomDAUpdateSQL

property DeleteSQL: TStrings;

Description

Set DeleteSQL to the SQL DELETE statement to use when applying a deletion to a record. Statements can be parameterized queries with parameter names corresponding to dataset field names. If parameter name is a field name prefixed with 'OLD_' then an unmodified original value for that field is used as the parameter value.

See Also

TUpdateSQL.DeleteSQL


InsertObject
TCustomDAUpdateSQL.InsertObject

TCustomDAUpdateSQL

property InsertObject: TComponent;

Description

Assign TMSSQL component or TCustomMSDataSet descendant to this property  to tune the INSERT operation more carefully. In some cases that can give some additional performance. Set the SQL property of the object in the same way as used for InsertSQL property.

See Also

InsertSQL


InsertSQL
TCustomDAUpdateSQL.InsertSQL

TCustomDAUpdateSQL

property InsertSQL: TStrings;

Description

Set InsertSQL to the SQL INSERT INTO statement to use when applying an insertion to a record. Statements can be parameterized queries with parameter names corresponding to dataset field names. If parameter name is a field name prefixed with 'OLD_' then an unmodified original value for that field is used as the parameter value.

See Also

TUpdateSQL.InsertSQL


ModifyObject
TCustomDAUpdateSQL.ModifyObject

TCustomDAUpdateSQL

property ModifyObject: TComponent;

Description

Assign TMSSQL component or TCustomMSDataSet descendant to this property  to tune the UPDATE operation more carefully. In some cases that can give some additional performance. Set the SQL property of the object in the same way as used for ModifySQL property.

See Also

ModifySQL


ModifySQL
TCustomDAUpdateSQL.ModifySQL

TCustomDAUpdateSQL

property ModifySQL: TStrings;

Description

Set ModifySQL to the SQL UPDATE statement to use when updating a record. Statements can be parameterized queries with parameter names corresponding to dataset field names. If parameter name is a field name prefixed with 'OLD_' then an unmodified original value for that field is used as the parameter value.

See Also

TUpdateSQL.ModifySQL


RefreshObject
TCustomDAUpdateSQL.RefreshObject

TCustomDAUpdateSQL

property RefreshObject: TComponent;

Description

Assign TMSSQL component or TCustomMSDataSet descendant to this property  to tune the refresh operation more carefully. In some cases that can give some additional performance. Set the SQL property of the object in the same way as used for RefreshSQL property.

See Also

RefreshSQL


RefreshSQL
TCustomDAUpdateSQL.RefreshSQL

TCustomDAUpdateSQL

property RefreshSQL: TStrings;

Description

Use SQLRefresh property to specify SQL statement that will be used for refreshing current record by RefreshRecord procedure.

You can assign to SQLRefresh WHERE clause only. It such a case it is added to SELECT defined by SQL property by AddWhere function.

To create SQLRefresh statement at design time, use query statements editor.

See Also

TCustomDADataSet.RefreshRecord


SQL
TCustomDAUpdateSQL.SQL

TCustomDAUpdateSQL

property SQL[UpdateKind:TUpdateKind]: TStrings;

Description

Returns the SQL statement for one of the ModifySQL, InsertSQL, or DeleteSQL properties, depending on the value of the UpdateKind index.


Apply
TCustomDAUpdateSQL.Apply

TCustomDAUpdateSQL

procedure Apply(UpdateKind: TUpdateKind);

Description

Call Apply to set parameters for an SQL statement and execute it to update a record. UpdateKind indicates which SQL statement to bind and execute, and can be one of the following values:

Value	Meaning

ukDelete	Bind and execute the SQL statement in the DeleteSQL property

ukInsert	Bind and execute the SQL statement in the InsertSQL property

ukModify	Bind and execute the SQL statement in the ModifySQL property

Apply is primarily intended for manually executing update statements from an OnUpdateRecord event handler.

Note:	If an SQL statement does not contain parameters, it is more efficient to call ExecSQL instead of Apply.

See Also

ExecSQL


ExecSQL
TCustomDAUpdateSQL.ExecSQL

TCustomDAUpdateSQL

procedure ExecSQL(UpdateKind: TUpdateKind);

Description

Call ExecSQL to execute the SQL statement necessary for updating the records belonging to a read-only result set when cached updates is enabled. UpdateKind specifies the statement to execute, and can be one of the following values:

Value	Meaning

ukDelete	Execute the SQL statement in the DeleteSQL property

ukInsert	Execute the SQL statement in the InsertSQL property

ukModify	Execute the SQL statement in the ModifySQL property

ExecSQL is primarily intended for manually executing update statements from an OnUpdateRecord event handler.

Note:	To both bind parameters and execute a statement, call Apply.

See Also

Apply


Description
TDAColumn

Hierarchy	Properties

Unit

DALoader

Description

Each TDALoader uses TDAColumns to maintain a collection of TDAColumn objects. TDAColumn object represents the attributes for column loading. Every TDAColumn object corresponds to one of the table fields with the same name as its Name property.

To create columns at design-time use column editor of TDALoader component.

See Also

TDALoader

TDAColumns


DataType
TDAColumn.DataType

TDAColumn

type

  TDAColumnDataType = (ctString,ctDate,ctInteger,ctUInteger,ctFloat);

property DataType: TDAColumnDataType;

Description

Use DataType to specify types of values which will be loaded. Data types for columns may not match data types for the corresponding fields in the database table. TDALoader will cast data values to the types of their fields.

Note	DataType property is obsolete. It is provided for backward compatibility only. Use FieldType property instead.

See Also

Name

FieldType


FieldType
TDAColumn.FieldType

TDAColumn

property FieldType: TFieldType;

Description

Use FieldType to specify types of values which will be loaded. Field types for columns may not match data types for the corresponding fields in the database table. TDALoader will cast data values to the types of their fields.


Name
TDAColumn.Name

TDAColumn

property Name: String;

Description

Each TDAColumn corresponds to one field of loading table. Use Name property to specify name of this field.

See Also

DataType


Description
TDAColumns

Hierarchy	Properties	Methods

Unit

DALoader

Description

Each TDAColumns holds a collection of TDAColumn objects. TDAColumns maintains an index of the columns in its Items array. The Count property contains the number of columns in the collection. At design-time, use the Columns editor to add, remove, or modify columns.

See Also

TDALoader

TDAColumn


Items
TDAColumns.Items

TDAColumns

property Item[Index: Integer]: TDAColumn;

Description

Use Items to access individual columns. The value of the Index parameter corresponds to the Index property of TDAColumn.

See Also

TDAColumn


Description
TDADump

Hierarchy	Properties	Methods	Events

Unit

DADump

Description

TDADump is a base class that defines functionality for descendant classes which dump database objects to the script. Applications never use TDADump objects directly. Instead they use descendants of TDADump.

Use TDADump descedants to to dump database objects, such as tables, stored procedures and functions for backup or for transferring the data to another SQL server. The dump contains SQL statements to create the table or other database objects and/or populate the table.


Connection
TDADump.Connection

TDADump

property Connection: TCustomDAConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TCustomDAConnection or its descendant class objects.

At runtime, set Connection property to reference an instanciated TCustomDAConnection object.

See Also

TCustomDAConnection


Debug
TDADump.Debug

TDADump

property Debug: Boolean;

Description

Set Debug to True to display statement being executed and all its parameter values. Also displays types of parameters.

Note: To enable debug form display you should explicitly include in your project SdacVcl unit.

See also:

TCustomDADataSet.Debug

TCustomDASQL.Debug


Options
TDADump.Options

TDADump

type

  TDADumpOptions = class(TPersistent)

  published

    property GenerateHeader: boolean;

    property AddDrop: boolean;

  end;

property Options: TDADumpOptions;

Description

Use Options property to specify behaviour of TDADump component. The meanings of Options' properties are:

Property	Description

AddDrop	Set this property to add drop statements to script before create statements.

GenerateHeader	Set this property to add comment header to a script. It contains script generation date, DAC version and some other information.


SQL
TDADump.SQL

TDADump

property SQL: TStrings;

Description

Use SQL property to get or set dump script. SQL property stores script that is executed by Restore method. This property will store result of Backup and BackupQuery methods. At design time the SQL property can be edited by invoking a String List editor in the Object Inspector.

See Also

Restore

Backup

BackupQuery


TableNames
TDADump.TableNames

TDADump

property TableNames: string;

Description

Use TableNames property to set names of the tables to dump. Table names must be separated with commas. If it is empty, Backup method will dump all available tables.

See Also

Backup


Backup
TDADump.Backup

TDADump

procedure Backup;

Description

Use Backup method to dump database objects. Result script will be stored in SQL property.

See Also

SQL

Restore

BackupToStream

BackupToFile

BackupQuery


BackupQuery
TDADump.BackupQuery

TDADump

procedure BackupQuery(Query: string);

Description

Use BackupQuery method to dump the results of a particular query. Query must be valid select statement If this query selects data from several tables, only data of the first table in the from list will be dumped.

See Also

Restore

BackupToStream

BackupToFile

Backup


BackupToFile
TDADump.BackupToFile

TDADump

procedure BackupToFile(const FileName: string);

Description

Use BackupToFile method to dump database objects to the file.

See Also

RestoreFromStream

Backup

BackupToFile


BackupToStream
TDADump.BackupToStream

TDADump

procedure BackupToStream(Stream: TStream);

Description

Use BackupToStream method to dump database objects to the stream.

See Also

RestoreFromStream

Backup

BackupToFile


Restore
TDADump.Restore

TDADump

procedure Restore;

Description

Use Restore method to execute script, contained in SQL property

See Also

RestoreFromFile

RestoreFromStream

Backup

SQL


RestoreFromFile
TDADump.RestoreFromFile

TDADump

procedure RestoreFromFile(const FileName: string);

Description

Use RestoreFromFile method to execute script from the file.

See Also

Restore

RestoreFromStream

BackupToFile


RestoreFromStream
TDADump.RestoreFromStream

TDADump

procedure RestoreFromStream(Stream: TStream);

Description

Use RestoreFromStream method to execute script, received from the stream.

See Also

Restore

RestoreFromFile

BackupToStream


OnBackupProgress
TDADump.OnBackupProgress

TDADump

type

  TDABackupProgressEvent = procedure (Sender: TObject; ObjectName:

      string; ObjectNum, ObjectCount, Percent: integer) of object;

property OnBackupProgress: TDABackupProgressEvent;

Description

OnBackupProgress event occurs from time to time during Backup, BackupToFile or BackupToStream method execution and indicates its progress. ObjectName parameter indicates name of currently dumping database object. ObjectNum shows number of the current database object in the backup queue starting from zero. ObjectCount shows quantity of database objects to dump. Percent parameter shows the current percentage of the current table data dumped, not the current percentage of entire dump process.

See Also

Backup

BackupToFile

BackupToStream


OnRestoreProgress
TDADump.OnRestoreProgress

TDADump

type

  TDARestoreProgressEvent = procedure (Sender: TObject; Percent: integer) of object;

property OnRestoreProgress: TDARestoreProgressEvent;

Description

OnRestoreProgress event occurs from time to time during Restore, RestoreFromFile or RestoreFromStream method execution and indicates its progress. Percent parameter of OnRestoreProgress event handler indicates percentage of the whole restore script execution.

See Also

Restore

RestoreFromFile

RestoreFromStream


Description
TDALoader

Hierarchy	Properties	Methods	Events

Unit

DALoader

Description

TDALoader allows to load external data into the database. To specify the name of loading table set TableName property. Use Columns property to access individual columns. Write OnGetColumnData or OnPutData event handlers to read external data and pass it to the database. Call Load method to start loading data.

See Also


Columns
TDALoader.Columns

TDALoader

property Columns: TDAColumns;

Description

Use Columns property to add TDAColumn object for each field that will be loaded.

See Also

TDAColumns


Connection
TDALoader.Connection

TDALoader

property Connection: TCustomDAConnection;

Description

Use Connection to specify the TCustomDAConnection in which TDALoader will be executed. If Connection is not connected Load method calls TCustomDAConnection.Connect.

See Also

TCustomDAConnection


TableName
TDALoader.TableName

TDALoader

property TableName: String;

Description

Set TableName property to specify name of table where data will be loaded. Add TDAColumn objects to Columns for those fields which are needed to load.

See Also

TDAColumn

TCustomDAConnection.GetTableNames


CreateColumns
TDALoader.CreateColumns

TDALoader

procedure CreateColumns;

Description

Call CreateColumns method to create TDAColumn objects for all the fields of table with the same name as TableName. If columns created before they will be deleted. You can call CreateColumns by TDALoader editor at design time. After you can customize column loading by setting properties of TDAColumn objects.

See Also

TDAColumn

TableName


Load
TDALoader.Load

TDALoader

procedure Load;

Description

Call Load method to start loading data. At first it is necessary to create columns and write one of OnPutData or OnGetColumnData event handlers.

See Also

OnGetColumnData

OnPutData


LoadFromDataSet
TDALoader.LoadFromDataSet

TDALoader

procedure LoadFromDataSet(DataSet: TDataSet);

Description

Call LoadFromDataSet method to load data from the specified dataset. There is no need to create columns and write event handlers for OnPutData and OnGetColumnData before callin this method.


PutColumnData
TDALoader.PutColumnData

TDALoader

procedure PutColumnData(Col: Integer; Row: Integer; Value: Variant);

Description

Call PutColumnData method to put value of individual columns. Col parameter indicates index of loading column. The first column has index 0. Row parameter indicates number of loading row. Row starts from 1.

Value of a column should be assigned to Value parameter.

See Also

OnPutData


OnGetColumnData
TDALoader.OnGetColumnData

TDALoader

type

  TGetColumnDataEvent = procedure (Sender: TObject; Column:

    TDAColumn; Row: Integer; var Value: variant; var EOF: boolean) ofobject;

property OnGetColumnData : TGetColumnDataEvent;

Description

Write OnGetColumnData event handler to put column values. TDALoader calls OnGetColumnData event handler for each column in the loop. Column points to TDAColumn object that corresponds to the current loading column. Use its Name or Index property to identify what column is loading. The Row parameter indicates the current loading record. TDALoader increments Row parameter when all the columns of the current record are loaded. The first row is 1. Set EOF to True to stop loading of data. Fill Value parameter by column values. To start loading call Load method.

Another way to load data is using OnPutData event.

This handler loads 1000 rows.

procedure TfmMain.GetColumnData(Sender: TObject;

  Column: TDAColumn; Row: Integer; var Value: Variant;

  var EOF: Boolean);

begin

  if Row <= 1000 thenbegin

    case Column.Index of

      0: Value := Row;

      1: Value := Random(100);

      2: Value := Random*100;

      3: Value := 'abc01234567890123456789';

      4: Value := Date;

    else

      Value := Null;

    end;

  end

  else

    EOF := True;

end;

See Also

OnPutData

Load


OnPutData
TDALoader.OnPutData

TDALoader

type

  TPutDataEvent = procedure (Sender: TDALoader) of object;

property OnPutData: TDAPutDataEvent;

Description

Write OnPutData event handler to put loading data by rows. Note that rows should be loaded from the first in ascending order. To start loading call Load method.

This handler loads 1000 rows.

procedure TfmMain.PutData(Sender: TDALoader);

var

  Count: Integer;

  i: Integer;

begin

  Count := StrToInt(edRows.Text);

  for i := 1 to Count dobegin

    Sender.PutColumnData(0, i, 1);

    Sender.PutColumnData(1, i, Random(100));

    Sender.PutColumnData(2, i, Random*100);

    Sender.PutColumnData(3, i, 'abc01234567890123456789');

    Sender.PutColumnData(4, i, Date);

  end;

end;

See Also

PutColumnData

Load

OnGetColumnData


Description
TDAParam

Hierarchy	Properties	Methods

Unit

DBAccess

Description

Use the properties of TDAParam to set the value of a parameter. Objects that use parameters create TDAParam objects to represent these parameters. For example, TDAParam objects are used by TCustomDASQL , TCustomDADataSet.

TDAParam shares many properties with TField, as both describe the value of a field in a dataset. However, a TField object has several properties to describe the field binding, and how the field is displayed, edited, or calculated that are not needed in a TDAParam object. Conversely, TDAParam includes properties that indicate how the field value is passed as a parameter.

See Also

TCustomDADataSet

TCustomDASQL

TDAParams


AsBlob
TDAParam.AsBlob

TDAParam

property AsBlob: string;

Description

Setting AsBlob will set the DataType property to ftBlob. It is seldom necessary to read AsBlob, because memo fields can not be used as output parameters.


AsBlobRef
TDAParam.AsBlobRef

TDAParam

property AsBlobRef: TBlob;

Description

Setting AsBlobRef will set the DataType property to ftBlob.


AsFloat
TDAParam.AsFloat

TDAParam

property AsFloat: Double;

Description

Set AsFloat to assign the value for a float field to the parameter. Setting AsFloat will set the DataType property to dtFloat.

Read the AsFloat property to determine the value that was assigned to an output parameter, represented as a Double. The value of the parameter will be converted to a Double value if possible.


AsInteger
TDAParam.AsInteger

TDAParam

property AsInteger: Integer;

Description

Set AsInteger to assign the value for an integer field to the parameter. Setting AsInteger will set the DataType property to dtInteger.

Read the AsInteger property to determine the value that was assigned to an output parameter, represented as a 32-bit integer. The value of the parameter will be converted to a Integer value if possible.


AsMemo
TDAParam.AsMemo

TDAParam

property AsMemo: string;

Description

Set AsMemo to assign the value for a memo field to the parameter. Setting AsMemo will set the DataType property to ftMemo. It is seldom necessary to read AsMemo, because memo fields can not be used as output parameters.


AsMemoRef
TDAParam.AsMemoRef

TDAParam

property AsMemoRef: TBlob;

Description

Setting AsMemoRef will set the DataType property to ftMemo.


AsString
TDAParam.AsString

TDAParam

property AsString: String;

Description

Set AsString to assign the string value to the parameter. Setting AsString will set the DataType property to ftString.

Read the AsString property to determine the value that was assigned to an output parameter, represented as a string. The value of the parameter will be converted to a string.


AsWideString
TDAParam.AsWideString

TDAParam

property AsWideString: String;

Description

Set AsWideString to assign the Unicode string value to the parameter. Setting AsWideString will set the DataType property to ftWideString.

Read the AsWideString property to determine the value that was assigned to an output parameter, represented as a Unicode string. The value of the parameter will be converted to a Unicode string.


DataType
TDAParam.DataType

TDAParam

property DataType: TFieldType;

Description

DataType is set automatically when a value is assigned to the parameter. Do not set DataType for bound fields, as that may cause the assigned value to be misinterpreted.

Read DataType to discover the type of data that was assigned to the parameter. Each possible value of DataType corresponds to a type of database field.


IsNull
TDAParam.IsNull

TDAParam

property IsNull: boolean;

Description

IsNull indicates whether the value assigned to the parameter is NULL.


ParamType
TDAParam.ParamType

TDAParam

property ParamType: TParamType;

Description

Objects that use TDAParam objects to represent field parameters set ParamType to indicate the type of use for the parameter. ParamType must be one of the following values:

Value	Description

ptUnknown	Unknown or undetermined. Before executing a stored procedure, the application must set parameters of this type to another kind.

ptInput	Used to input a field value. Identifies a parameter used to pass values to a stored procedure for processing.

ptOutput	Used to output a field value. Identifies a parameter used by a stored procedure to return values to an application.

ptInputOutput	Used for both input and output.

ptResult	Used as a return value. Identifies a parameter used by a stored procedure to return an error or status value. A stored procedure can only have one parameter of type ptResult.


Size
TDAParam.Size

TDAParam

property Size: Integer;

Description

Use Size property to check actual size of String, Blob and Memo parameters.


Value
TDAParam.Value

TDAParam

property Value: Variant;

Description

Value represents the value of the parameter as a Variant.

Use Value in generic code that manipulates the values of parameters without the need to know the field type the parameter represent.


LoadFromFile
TDAParam.LoadFromFile

TDAParam

type

  TBlobType = ftBlob..ftOraClob;

procedure LoadFromFile(const FileName: string; BlobType: TBlobType);

Description

Use LoadFromFile to place content of a file specified by FileName into TDAParam object. BlobType value modifies DataType property so that this TDAParam object now holds BLOB value.

See Also

LoadFromStream


LoadFromStream
TDAParam.LoadFromStream

TDAParam

type

  TBlobType = ftBlob..ftOraClob;

procedure LoadFromStream(Stream: TStream;BlobType: TBlobType);

Description

Use LoadFromStream to place content from a stream into TDAParam object. BlobType value modifies DataType property so that this TDAParam object now holds BLOB value.

See Also

LoadFromFile


Description
TDAParams

Hierarchy	Properties	Methods

Unit

DBAccess

Description

Use TDAParams to manage a list of TDAParam objects for an object that uses field parameters. For example, TCustomDADataSet objects and TCustomDASQL objects use TDAParams objects to create and access their parameters.

See Also

TCustomDADataSet.Params

TCustomDASQL.Params

TDAParam


Items
TDAParams.Items

TDAParams

property Items[Index: Integer]: TDAParam

Description

Use Items to iterate through all the field parameters. Index identifies the index in the range 0..Count - 1. Items can reference a particular parameter by its index, but the ParamByName method is preferred, so as to avoid depending on the order of the parameters.


FindParam
TDAParams.FindParam

TDAParams

function FindParam(const Value: String): TDAParam;

Description

Use FindParam method to find a parameter with the name passed in Value. If a match is found, FindParam returns the parameter. Otherwise, it returns nil. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.

To locate more than one parameter at a time, by name, use the GetParamList method instead. To get only the value of a named parameter, use the ParamValues property.


ParamByName
TDAParams.ParamByName

TDAParams

function ParamByName(const Value: String): TDAParam;

Description

Use ParamByName method to find a parameter with the name passed in Value. If a match is found, ParamByName returns the parameter. Otherwise, an exception is raised. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.

To locate a parameter by name without raising an exception if the parameter is not found, use the FindParam method.


Description
TDAScript

Hierarchy	Properties	Methods	Events

Unit

DAScript

Description

Often it is necessary to execute several SQL statements one by one. That can be performed using a lot of components such as TCustomDASQL descedants. Usually it isn't a good solution. With only one TDAScript descedant components you can execute several SQL statements as one. This sequence of statements is named script. To separate single statements use semicolon (;) or slash (/) and for statements that can contain semicolon  only slash. Note that slash must be first character in the line.

Errors that occur while execution can be processed in OnError event handler. By default, on error TDAScript shows exception and continues execution.

See Also

TCustomDASQL


Debug
TDAScript.Debug

TDAScript

property Debug: Boolean;

Description

Set Debug to True to display executing script and all its parameter values. Also displays type of parameters.


Delimiter
TDAScript.Delimiter

TDAScript

property Delimiter: string;

Description

Use Delimiter property to set delimiter string that separates script statements. By default it is semicolon (;). You can use slash (/) to separate statements that can contain semicolon if Delimiter property has its default value semicolon. Note that slash must be first character in the line.


EndLine
TDAScript.EndLine

TDAScript

property EndLine: integer;

Description

Use EndLine property to get current statement last line number in script.


EndOffset
TDAScript.EndOffset

TDAScript

property EndOffset: integer;

Description

Use EndOffset property to get the offset in the last line of current statement.


EndPos
TDAScript.EndPos

TDAScript

property EndPos: integer;

Description

Use EndPos property to get end position of current statement (position of the last character in the statement) in script.


Macros
TDAScript.Macros

TDAScript

property Macros: TMacros;

Description

With the help of macros you can easy change SQL script text in design- or runtime. Marcos extend abilities of parameters and let change conditions in WHERE clause or sort order in ORDER BY clause. You just insert &MacroName in SQL query text and change value of macro by Macro property editor in design time or MacroByName function in run time. In time of opening query macro is replaced by its value.

See Also

TMacro

MacroByName


SQL
TDAScript.SQL

TDAScript

property SQL: TStrings;

Description

Use SQL property to get or set script text.


StartLine
TDAScript.StartLine

TDAScript

property StartLine: integer;

Description

Use StartLine property to get current statement start line number in script.


StartOffset
TDAScript.StartOffset

TDAScript

property StartOffset: integer;

Description

Use StartOffset property to get the offset in the first line of current statement.


StartPos
TDAScript.StartPos

TDAScript

property StartPos: integer;

Description

Use StartPos property to get start position of current statement (position of the first statement character) in script.


Statements
TDAScript.Statements

TDAScript

property Statements: TDAStatements;

Description

Contains the list of statements that are obtained from the SQL property. Access Statements property to view sql statement, set parameters or execute the specified statement. Statements is a zero-based array of statement records. Index specifies the array element to access.

For example, consider the following script:

CREATE TABLE A (FIELD1 INTEGER);

INSERT INTO A VALUES(1);

INSERT INTO A VALUES(2);

INSERT INTO A VALUES(3);

CREATE TABLE B (FIELD1 INTEGER);

INSERT INTO B VALUES(1);

INSERT INTO B VALUES(2);

INSERT INTO B VALUES(3);

You can use Statements property in the following way:

procedure TForm1.Button1Click(Sender: TObject);

var

  i: integer;

begin

  with Script do

  begin

    for i := 0 to Statements.Count - 1 do

      if Copy(Statements[i].SQL, 1, 6) <> 'CREATE' then

        Statements[i].Execute;

  end;

end;

Note   List of statements is created and filled when you the the value of Statements property is requested. That's why first access to the Statements property can take a long time.

See Also

TDAStatements


BreakExec
TDAScript.BreakExec

TDAScript

procedure BreakExec;

Description

Use BreakExec method to stop script execution.


ErrorOffset
TDAScript.ErrorOffset

TDAScript

function ErrorOffset: Integer;

Description

Use ErrorOffset to get offset of error if Execute method raised exception.

See Also

OnError


Execute
TDAScript.Execute

TDAScript

procedure Execute;

Description

Call Execute to execute script. If SQL Server raises an error OnError event occurs.

See Also

ExecuteNext

OnError

ErrorOffset


ExecuteFile
TDAScript.ExecuteFile

procedure ExecuteFile(const FileName: string);

Description

Use ExecuteStream method to execute sql statements contained in the stream object. Script doesn't load full content into memory. Reading and execution is performed by blocks of 64k size. Therefore, it is optimal to use it for big files.


ExecuteNext
TDAScript.ExecuteNext

TDAScript

function ExecuteNext: boolean;

Description

Use the ExecuteNext method to execute the next statement in the script statement and stop. If SQL Server raises an error, the OnError event occurs.

See Also

Execute

OnError

ErrorOffset


ExecuteStream
TDAScript.ExecuteStream

TDAScript

procedure ExecuteStream(Stream: TStream);

Description

Use ExecuteStream method to execute sql statements contained in the stream object. Script doesn't load full content into memory. Reading and execution is performed by blocks of 64k size. Therefore, it is optimal to use it for big files.


FindMacro
TDAScript.FindMacro

TDAScript

function FindMacro(Name: String): TMacro;

Description

Call FindMacro to determine if a specified macro exists in a dataset. Name is the name of the macro for which to search. If FindMacro finds a macro with a matching name, it returns the TMacro object for the specified Name. Otherwise it returns nil.

See Also

TMacro

Macros

MacroByName


MacroByName
TDAScript.MacroByName

TDAScript

Accesses macro information based on a specified macro name.

function MacroByName(Name: String): TMacro;

Description

Use MacroByName method to find a Macro with the name passed in Name. If a match is found, MacroByName returns the Macro. Otherwise, an exception is raised. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.

To locate a parameter by name without raising an exception if the parameter is not found, use the FindMacro method.

To assign value of macro use TMacro.Value property.

See Also

TMacro

TCustomDADataSet.Macros

TCustomDADataSet.FindMacro


AfterExecute
TDAScript.AfterExecute

TDAScript

type

  TAfterExecuteEvent = procedure (Sender:TObject; Result: Boolean) ofobject;

property AfterExecute: TAfterExecuteEvent;

Description

Occurs after SQL script has been executed. Result is True if SQL script is executed successfully, False otherwise.

See Also

Execute


BeforeExecute
TDAScript.BeforeExecute

TDAScript

type

  TBeforeExecuteEvent = procedure (Sender: TObject; var SQL: String;

    var Omit: Boolean) ofobject;

property BeforeExecute: TBeforeExecuteEvent;

Description

Write BeforeExecute event handler to take specific action before executing current SQL statement. SQL holds text of the current SQL statement. Write SQL to change statement which will be executed. Set Omit to True to skip statement execution.

See Also


OnError
TDAScript.OnError

TDAScript

type

  TErrorAction = (eaAbort, eaFail, eaException, eaContinue);

  TOnErrorEvent = procedure (Sender: TObject; E: Exception;

    SQL: String; var Action:TErrorAction) of object;

property OnError: TOnErrorEvent;

Description

Occurs when SQL Server raises some error.

Action indicates the action to take when the OnError handler exits. On entry into the handler, Action is always set to eaFail.

Value	Meaning

eaAbort	Aborts the execution without displaying an error message.

eaContinue	Continue the execution.

eaException	In Delphi 6 and higher exception is handled by the Application.HandleException method.

eaFail	Aborts the execution and displays an error message.

See Also

ErrorOffset


Description
TDAStatement

Hierarchy	Properties	Methods

Unit

DAScript

Description

TDAScript contains SQL statements, represented as TDAStatement objects. TDAStatement class has attributes and methods for controlling single SQL statements of the script.

See Also

TDAScript

TDAStatements


EndOffset
TDAStatement.EndOffset

TDAStatement

property EndOffset: integer;

Description

Use EndOffset property to get the offset in the last line of the statement.


EndPos
TDAStatement.EndPos

TDAStatement

property EndPos: integer;

Description

Use EndPos property to get end position of the statement (position of the last character in the statement) in script.


Omit
TDAStatement.Omit

TDAStatement

property Omit: boolean;

Description

Set Omit property to True to avoid execution of the statement.


Params
TDAStatement.Params

TDAStatement

property Params: TDAParams;

Description

Contains parameters for an SQL statement.

Access Params at runtime to view and set parameter names, values, and data types dynamically. Params is a zero-based array of parameter records. Index specifies the array element to access.

See Also

TDAParam


SQL
TDAStatement.SQL

TDAStatement

property SQL: TStrings;

Description

Use SQL property to get or set text of SQL statement.


StartOffset
TDAStatement.StartOffset

TDAStatement

property StartOffset: integer;

Description

Use StartOffset property to get the offset in the first line of the statement.


StartPos
TDAStatement.StartPos

TDAStatement

property StartPos: integer;

Description

Use StartPos property to get start position of the statement (position of the first statement character) in script.


Execute
TDAStatement.Execute

TDAStatement

procedure Excecute;

Description

Use execute method to execute the SQL statement.


Description
TDAStatements

Hierarchy	Properties	Methods

Unit

DAScript

Description

Each TDAStatements holds a collection of TDAStatement objects. TDAStatements maintains an index of the statements in its Items array. The Count property contains the number of statements in the collection. Use TDAStatements class to manipulate script SQL statements.

See Also

TDAScript

TDAStatement


Items
TDAStatements.Items

TDAStatements

property Item[Index: Integer]: TDAStatement;

Description

Use Items to access individual script statements. The value of the Index parameter corresponds to the Index property of TDAStatement.

See Also

TDAStatement


Description
TMacro

Hierarchy	Properties

Unit

DBAccess

Description

TMacro object represents value of a macro. Macro is a variable that holds string value. You just insert &MacroName in SQL query text and change value of macro by Macro property editor at design time or Value property at run time. At the time of opening query macro is replaced by its value.

If by any reason it is not convenient for you to use '&' symbol as a character of macro replacement, change the value of MacroChar variable.

See Also

TMacros


Active
TMacro.Active

TMacro

property Active: Boolean;

Description

When set to True the macro is expanded, otherwise macro definition is replaced by null string. You can use Active property to modify SQL property.

The default value is True.

Example

MyQuery.SQL.Text := 'SELECT * FROM Dept WHERE DeptNo > 20 &Cond1';

MyQuery.Macros[0].Value := 'and DName is NULL';

MyQuery.Macros[0].Active:= False;


AsDateTime
TMacro.AsDateTime

TMacro

property AsDateTime: TDateTime;

Description

Use AsDataTime to set TDataTime value to macro.


AsFloat
TMacro.AsFloat

TMacro

property AsFloat: Double;

Description

Use AsFloat to set float value to macro.


AsInteger
TMacro.AsInteger

TMacro

property AsInteger: Integer;

Description

Use AsInteger to set integer value to macro.


AsString
TMacro.AsString

TMacro

property AsString: String;

Description

Set AsString to assign string value to the macro. Read the AsString property to determine the value of macro, represented as a string.


Name
TMacro.Name

TMacro

property Name: String;

Description

Use Name to identify a particular macro.


Value
TMacro.Value

TMacro

property Value: String;

Description

Use Value to set value to macro.


Description
TMacros

Hierarchy	Properties	Methods

Unit

DBAccess

Description

Use TMacros to manage a list of TMacro objects for TCustomDASQL or TCustomDADataSet components

See Also

TMacro


Count
TMacros.Count

TMacros

property Count: Integer;

Description

Count contains the number of items in the Items array. Since Items is indexed starting with 0, the value of Count is always one greater than the index of the last member of Items.


Items
TMacros.Items

TMacros

propertyItems[Index: Integer]: TMacro;

Description

Use Items to iterate through all the field parameters. Index identifies the index in the range 0..Count - 1.


FindMacro
TMacros.FindMacro

TMacros

function FindMacro(Name: String): TMacro;

Description

Use FindMacro method to find a parameter with the name passed in Value. If a match is found, FindMacro returns the parameter. Otherwise, it returns nil. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.


MacroByName
TMacros.MacroByName

TMacros

function MacroByName(Name: String): TMacro;

Description

Use MacroByName method to find a Macro with the name passed in Value. If a match is found, MacroByName returns the Macro. Otherwise, an exception is raised. Use this method rather than a direct reference to the Items property to avoid depending on the order of the entries.

To locate a parameter by name without raising an exception if the parameter is not found, use the FindMacro method.


Description
TMemDataSet

Hierarchy	Properties	Methods	Events

Unit

MemDS

Description

TMemDataSet derives from TDataSet database-engine independent set of properties, events, and methods for working with data and introduces additional techniques to store and manipulate data in memory.


CachedUpdates
TMemDataSet.CachedUpdates

TMemDataSet

property CachedUpdates: Boolean;

Description

Use CachedUpdates property to enable or disable the use of cached updates for a dataset. Setting CachedUpdates to True enables updates to a dataset (such as posting changes, inserting new records, or deleting records) are stored in an internal cache on the client side instead of being written directly to the dataset's underlying database tables. When changes are complete, an application writes all cached changes to the database in the context of a single transaction.

Cached updates are especially useful for client applications working with remote database servers. Enabling cached updates brings up the following benefits:

• Fewer transactions and shorter transaction times.

• Minimized network traffic.

The potential drawbacks of enabling cached updates are:

• Other applications can access and change the actual data on the server while users are editing local copies of the data, resulting in an update conflict when cached updates are applied to the database.

• Other applications cannot access data changes made by an application until its cached updates are applied to the database.

Default value is False.

Note

When establishing master-detail relationship CachedUpdates property of detail dataset works properly only when TCustomDADataSet.Options.LocalMasterDetailis set to True.

See Also

UpdatesPending

ApplyUpdates

RestoreUpdates

CommitUpdates

CancelUpdates

UpdateStatus

TCustomDADataSet.Options


IndexFieldNames
TMemDataSet.IndexFieldNames

TMemDataSet

property IndexFieldNames: string;

Description

Set IndexFieldNames property to establish or change the list of fields on which the recordset is sorted. Specify the name of each column In IndexFieldNames to use as an index for a table. Ordering of column names is significant. Separate names with semicolon. The specified columns need not be indexed. Set IndexFieldNames to an empty string to reset the recordset to the sort order originally used when the recordset's data was first retrieved.

Each field may optionally be followed by the keyword ASC / DESC or CIS / CS. Use ASC, DESC keywords to specify a sort direction for the field. If one of these keywords is not used, the default sort direction for the field is ascending. Use CIS keyword to compare two string fields without case sensitivity. The default value is CS - compare with case sensitivity.

Read IndexFieldNames to determine the field (or fields) on which the recordset is sorted.

Ordering is processed locally.

Note

You cannot process ordering by BLOB fields.

Example

The following procedure illustrates how to set IndexFieldNames in response to a button click:

DataSet1.IndexFieldNames := 'LastName ASC CIS; DateDue DESC';


LocalConstraints
TMemDataSet.LocalConstraints

TMemDataSet

property LocalConstraints: Boolean;

Description

Use LocalConstraints to avoid setting Required property of TField component for NOT NULL fields at the time of opening TMemDataSet. When LocalConstrains is True TMemDataSet ignores NOT NULL server constraints. It is useful for tables which have fields updated by triggers.

LocalConstraints is obsolete, and is only included for backward compatibility.

The default value is True.


LocalUpdate
TMemDataSet.LocalUpdate

TMemDataSet

property LocalUpdate: Boolean;

Description

Set LocalUpdate to True to prevent implicit update of rows on database server. Data changes are cached locally in client memory.


Prepared
TMemDataSet.Prepared

TMemDataSet

Determines whether or not a query is prepared for execution.

property Prepared: Boolean;

Description

See Also

Prepare


UpdateRecordTypes
TMemDataSet.UpdateRecordTypes

TMemDataSet

type

  TUpdateRecordTypes = set of (rtModified, rtInserted, rtDeleted, rtUnmodified);

property UpdateRecordTypes: TUpdateRecordTypes;

Description

Use UpdateRecordTypes property to determine the update status for the current record when cached updates are enabled. Update status can change frequently as records are edited, inserted, or deleted. UpdateRecordTypes offers a convenient method for applications to assess the current status before undertaking or completing operations that depend on the update status of records.

See Also

CachedUpdates


UpdatesPending
TMemDataSet.UpdatesPending

TMemDataSet

property UpdatesPending: Boolean;

Description

Examine UpdatesPending to check the status of the cached updates buffer. If UpdatesPending is True, then there are edited, deleted, or inserted records remaining in local cache and not yet applied to the database. If UpdatesPending is False, there are no such records in the cache.

See Also

CachedUpdates


ApplyUpdates
TMemDataSet.ApplyUpdates

TMemDataSet

procedure ApplyUpdates;

Description

Call ApplyUpdates to write a dataset's pending cached updates to a database. This method passes cached data to the database for storage, but the changes are not committed to the database. An application must explicitly call the database component's Commit method to commit the changes to the database if the write is successful, or call the database's Rollback method to undo the changes if there is an error.

Following a successful write to the database, and following a successful call to a connection's Commit method, an application should call the CommitUpdates method to clear the cached update buffer.

Note

The preferred method for updating datasets is to call a database component's ApplyUpdates method rather than to call each individual dataset's ApplyUpdates method. The database component's ApplyUpdates method takes care of committing and rolling back transactions and clearing the cache when the operation is successful.

Example

The following procedure illustrates how to apply a dataset's cached updates to a database in response to a button click:

procedure ApplyButtonClick(Sender: TObject);

begin

  with MyQuery do

  begin

    Session.StartTransaction;

    try

... {Modify data}

      ApplyUpdates; {try to write the updates to the database}

      Session.Commit; {on success, commit the changes}

    except

      RestoreUpdates; {restore update result for applied records}

      Session.Rollback; {on failure, undo the changes}

      raise; {raise the exception to prevent a call to CommitUpdates!}

    end;

    CommitUpdates; {on success, clear the cache}

  end;

end;

See Also

CachedUpdates

CancelUpdates

CommitUpdates

UpdateStatus


CancelUpdates
TMemDataSet.CancelUpdates

TMemDataSet

procedure CancelUpdates;

Description

Clears all pending cached updates from the cache and restores the dataset in its prior state.

Calls CancelUpdates to clear all pending cached updates from the cache and restore the dataset to the state it was in when the table was opened, cached updates were last enabled, or updates were last successfully applied to the database.

When a dataset is closed, or the CachedUpdates property is set to False, CancelUpdates is called automatically.

See Also

CachedUpdates

ApplyUpdates

UpdateStatus


CommitUpdates
TMemDataSet.CommitUpdates

TMemDataSet

procedure CommitUpdates;

Description

Calls CommitUpdates to clear the cached updates buffer after both a successful call to ApplyUpdates and a database component's Commit method. Clearing the cache after applying updates ensures that the cache is empty except for records that could not be processed and were skipped by the OnUpdateRecord or OnUpdateError event handlers. An application can attempt to modify the records still in the cache.

Record modifications made after a call to CommitUpdates repopulate the cached update buffer and require a subsequent call to ApplyUpdates to move them to the database.

See Also

CachedUpdates

ApplyUpdates

UpdateStatus


DeferredPost
TMemDataSet.DeferredPost

TMemDataSet

procedure DeferredPost;

Description

Call DeferredPost to make permanent changes to database server while retaining dataset in its state whether it is dsEdit or dsInsert.

Explicit call to Cancel method after DeferredPost has been applied does not abandon modifications to a dataset already fixed in database.

See Also

TDataSet.Post


GetBlob
TMemDataSet.GetBlob

TMemDataSet

function GetBlob(const FieldName: String): TBlob;

function GetBlob(Field: TField): TBlob;

Description

Call GetBlob to retrieve TBlob object for a field or current record when only its name or the field itself is known. FieldName is the name of an existing field. The field should have MEMO or BLOB type.

Example

MyQuery1.GetBlob('Comment').SaveToFile('Comment.txt');

See Also

TBlob


Locate
TMemDataSet.Locate

TMemDataSet

Searches the dataset for a specified record and makes that record the current record.

function Locate(const KeyFields: string; const KeyValues: Variant;

  Options: TLocateOptions): Boolean;

function Locate(const KeyFields: array of TField; const KeyValues: variant;

  Options: TLocateOptions): boolean;

Description

Call Locate to search a dataset for a specific record and position the cursor on it.

KeyFields is a string containing a semicolon-delimited list of field names on which to search.

KeyValues is a variant that specifies the values to match in the key fields. If KeyFields lists a single field, KeyValues specifies the value for that field on the desired record. To specify multiple search values, pass a variant array as KeyValues, or construct a variant array on the fly using the VarArrayOf routine. For example:

with CustTable do

  Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P',

    '408-431-1000']), [loPartialKey]);

Options is a set that optionally specifies additional search latitude when searching on string fields. If Options contains the loCaseInsensitive setting, then Locate ignores case when matching fields. If Options contains the loPartialKey setting, then Locate allows partial-string matching on strings in KeyValues. If Options is an empty set, or if KeyFields does not include any string fields, Options is ignored.

Locate returns True if it finds a matching record, and makes that record the current one. Otherwise returns False.

Locate function works faster when dataset is locally sorted on KeyFields fields. Local dataset sorting can be set with IndexFieldNames property.

See Also

IndexFieldNames

LocateEx


LocateEx
TMemDataSet.LocateEx

TMemDataSet

Searches the dataset for a specified record and makes that record the current record.

type

  TLocateExOption = (lxCaseInsensitive, lxPartialKey, lxNearest, lxNext, lxUp, lxPartialCompare);

  TLocateExOptions = set of TLocateExOption;

function LocateEx(const KeyFields: string; const KeyValues: Variant;

  Options: TLocateExOptions): Boolean;

function LocateEx(const KeyFields: array of TField; const KeyValues: variant;

  Options: TLocateExOptions): boolean;

Description

Use LocateEx when you need some features not included to Locate method of TDataSet.

Options allows to set additional search parameters which will be using by LocateEx method.

Value	Meaning

lxCaseInsensitive	is the same to loCaseInsensitive. Key fields and key values are matched

without regard to case

lxPartialKey	is the same to loPartialKey. Key values can include only part of the

matching key field value. For example, 'HAM' would match both 'HAMM'

and 'HAMMER.', but not 'MR HAMMER'

lxPartialCompare	is similar to lxPartialKey, but as distinct from it can process value entries

in any position. For example, 'HAM' would match both 'HAMM', 'HAMMER.',

and also 'MR HAMMER'

lxNearest	LocateEx moves the cursor to a specific record in a dataset or to the

first record in the dataset that is greater than the values specified in

the KeyValues parameter

lxNext	LocateEx searches from the current record

lxUp	LocateEx searches from the current record to first record

LocateEx returns True if it finds a matching record, and makes that record the current one. Otherwise Locate returns False.

LocateEx function works faster when dataset is locally sorted on KeyFields fields. Local dataset sorting can be set with IndexFieldNames property.

Note

Please add MemData unit to the "uses" list to use TLocalExOption enumeration.

See Also

IndexFieldNames

Locate


Prepare
TMemDataSet.Prepare

TMemDataSet

procedure Prepare;

Description

Call Prepare to allocate resources and create field components for the dataset. To learn whether the dataset is prepared or not use Prepared property.

The UnPrepare method unprepares a query.

Note

When you change the text of a query at runtime, the query is automatically closed and unprepared.

See Also

Prepared

UnPrepare


RestoreUpdates
TMemDataSet.RestoreUpdates

TMemDataSet

procedure RestoreUpdates;

Description

Call RestoreUpdates method to return cache of updates to its state before calling ApplyUpdates. RestoreUpdates marks all records in cache of updates as unapplied. It is useful when ApplyUpdates failed.

See Also

CachedUpdates

ApplyUpdates

CancelUpdates

UpdateStatus


RevertRecord
TMemDataSet.RevertRecord

TMemDataSet

Restores the current record in the dataset to an unmodified state when cached updates are enabled.

procedure RevertRecord;

Description

Call RevertRecord to undo changes made to the current record when cached updates are enabled.

See Also

CachedUpdates

CancelUpdates


SaveToXML
TMemDataSet.SaveToXML

TMemDataSet

procedure SaveToXML(FileName: string);

procedure SaveToXML(Stream: TStream);

Description

Call SaveToXML method to save current dataset data to a file or a stream in XML format, compatible with ADO format.

If the destination file already exists, it is overwritten. It remains open from the first call to SaveToXML until the dataset is closed. This file can be read by other applications while it is open, but they cannot write to the file.

When saving data to the stream TStream object must be created and it's position must be set in preferable value.

See Also

TVirtualTable.LoadFromFile

TVirtualTable.LoadFromStream


UnPrepare
TMemDataSet.UnPrepare

TMemDataSet

procedure UnPrepare;

Description

Call UnPrepare to free the resources allocated for a previously prepared query on the server and client sides.

Note

When you change the text of a query at runtime, the query is automatically closed and unprepared.

See Also

Prepare


UpdateResult
TMemDataSet.UpdateResult

TMemDataSet

type

  TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);

function UpdateResult: TUpdateAction;

Description

Call UpdateResult to read the status of the latest call to ApplyUpdates method while cached updates are enabled. UpdateResult reflects updates made on records that have been edited, inserted, or deleted.

UpdateResult works on record by record basis and is applicable to current record only.

See Also

CachedUpdates


UpdateStatus
TMemDataSet.UpdateStatus

TMemDataSet

type

  TUpdateStatus = (usUnmodified, usModified, usInserted, usDeleted);

function UpdateStatus: TUpdateStatus;

Description

Call UpdateStatus to determine the current update status for the dataset when cached updates are enabled. Update status can change frequently as records are edited, inserted, or deleted. UpdateStatus offers a convenient method for applications to assess the current status before undertaking or completing operations that depend on the update status of the dataset.

See Also

CachedUpdates


OnUpdateError
TMemDataSet.OnUpdateError

TMemDataSet

type

  TUpdateKind = (ukModify, ukInsert, ukDelete);

  TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);

  TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

    UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;

property OnUpdateError: TUpdateErrorEvent;

Description

Write an OnUpdateError event handler to respond to exceptions generated when cached updates are applied to a database.

E is a pointer to a EDatabaseError object from which an application can extract an error message and the actual cause of the error condition. An OnUpdateError handler can use this information to determine how to respond to the error condition.

UpdateKind describes the type of update that generated the error. The following table lists the possible values for UpdateKind and what they indicate:

Value	Meaning

ukModify	Editing an existing record caused an error.

ukInsert	Inserting or appending a new record caused an error.

ukDelete	Deleting an existing record raised an error.

UpdateAction indicates the action to take when the OnUpdateError handler exits. On entry into the handler, UpdateAction is always set to uaFail. If OnUpdateError can handle or correct the error, set UpdateAction to uaRetry before exiting the error handler. The following table lists the possible values for UpdateAction and what they indicate:

Value	Meaning

uaAbort	Aborts the update operation without displaying an error message.

uaApplied	Not used in error handling routines.

uaFail	Aborts the update operation and displays an error message.

uaRetry	Repeats the update operation that originally raised the error condition.

uaSkip	Skips updating the record that raised the error condition, and leaves the unapplied changes in the cache.

The error handler can use the TField.OldValue and TField.NewValue properties to evaluate error conditions and set TField.NewValue to a new value to reapply. In this case, set UpdateAction to uaRetry before exiting.

Note

If a call to ApplyUpdates raises an exception and ApplyUpdates is not called within the context of a try...except block, an error message is displayed. If an OnUpdateError handler cannot correct the error condition and leaves UpdateAction set to uaFail, the error message is displayed twice. To prevent redisplay, set UpdateAction to uaAbort in the error handler.

See Also

CachedUpdates


OnUpdateRecord
TMemDataSet.OnUpdateRecord

TMemDataSet

type

  TUpdateKind = (ukModify, ukInsert, ukDelete);

  TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);

  TUpdateRecordEvent = procedure(DataSet: TDataSet; UpdateKind:

    TUpdateKind; var UpdateAction: TUpdateAction) of object;

property OnUpdateRecord: TUpdateRecordEvent;

Description

Write an OnUpdateRecord event handler to process updates that cannot be handled by a single update component, such as implementation of cascading updates, insertions, or deletions. This handler is also useful for applications that require additional control over parameter substitution in update components.

UpdateKind describes the type of update to perform. The following table lists the possible values for UpdateKind and what they indicate:

Value	Meaning

ukModify	Edit an existing record.

ukInsert	Insert or append a new record.

ukDelete	Delete an existing record.

UpdateAction indicates the action taken by the OnUpdateRecord handler before it exits. On entry into the handler, UpdateAction is always set to uaFail. If OnUpdateRecord is successful, it should set UpdateAction to uaApplied before exiting. The following table lists the possible values for UpdateAction and what they indicate:

Value	Meaning

uaAbort	Abort the update operation without displaying an error message.

uaApplied	Update is applied. Free update record from cache.

uaFail	Aborts the update operation and displays an error message.

uaRetry	Not used for record updates.

uaSkip	Update is skipped. Leave update record in the cache.

See Also

CachedUpdates


Description
TSharedObject

Hierarchy	Properties	Methods

Unit

MemData

Description

TSharedObject allows to simplify memory management for object referenced by several another objects. TSharedObject holds a count of references to itself. When any object (referer object) is going to use TSharedObject it calls TSharedObject.AddRef method. Referer object has to call TSharedObject.Release method after using TSharedObject.

See Also

TBlob


RefCount
TSharedObject.RefCount

TSharedObject

property RefCount: Integer;

Description

Returns count of reference to TSharedObject object.


AddRef
TSharedObject.AddRef

TSharedObject

procedure AddRef;

Description

Increments the reference count for the number of references dependent on the TSharedObject object.

See Also

Release


Release
TSharedObject.Release

TSharedObject

procedure Release;

Description

Decrements the reference count. When RefCount is 1 TSharedObject is deleted from memory.

See Also

AddRef


Description
TVirtualTable

Hierarchy	Properties	Methods	Events

Unit

VirtualTable

Description

TVirtualTable is inherited from TMemDataSet component. TVirtualTable stores data in memory and does not have linked data files. To add fields to virtual table at design time use Fields Editor. Call AddField method to add fields at run time.

Immediately after creating virtual table it will be empty. You then define new fields or load existing table files so that virtual table object becomes initialized and ready to be opened.

When you close virtual table it will discard its record set. To keep data you entered at design time for later use you may wish to include voStored option in Options property. At run time you will need to call SaveToFile method explicitly to store modifications to the file that later may be retrieved back into the virtual table by calling LoadFromFile method.

Note   TVirtualTable component is added to the Data Access page of the component palette, not to the SQL Server Access page.


Options
TVirtualTable.Options

TVirtualTable

type

  TVirtualTableOption = (voPersistentData, voStored);

  TVirtualTableOptions = setof TVirtualTableOption;

property Options: TVirtualTableOptions;

Description

Options property specifies what actions to take on fields data at the times of opening or closing TVirtualTable dataset.

Options may hold the following values:

Property	Meaning

voPersistentData	Dataset will not dispose of its data at the time of dataset closing.

voStored	Dataset will keep its data set at design-time in DFM file along with other form's stored properties.


AddField
TVirtualTable.AddField

TVirtualTable

procedure AddField(Name: String; FieldType: TFieldType; Size: Word);

Description

Call AddField to add new TFieldDef object with name determined by Name. FieldType can be ftString, ftWideString, ftSmallint, ftInteger, ftAutoInc, ftWord, ftBoolean, ftLargeint, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime, ftBlob or ftMemo. When you add ftString or ftWideString field you should to specify Size of string.

Example

VirtualTable1.AddField('CODE', ftInteger, 0);

VirtualTable1.AddField('NAME', ftString, 30);

See Also

DeleteField

DeleteFields


Assign
TVirtualTable.Assign

TVirtualTable

procedure Assign(Source: TPersistent);

Description

Use Assign to copy fields and data other TDataSet component.

Note

Unsupported field types are skipped (i.e. destination dataset will contain less fields than source one). This may happen when Source is not a TVirtualTable component but some SQL server oriented dataset.

Example

See Also

TVirtualTable


Clear
TVirtualTable.Clear

TVirtualTable

procedure Clear;

Description

Use Clear to remove all records from TVirtualTable.


DeleteField
TVirtualTable.DeleteField

TVirtualTable

procedure DeleteField(Name: String);

Description

Use DeleteField to delete field specified by Name.

See Also

AddField

DeleteFields


DeleteFields
TVirtualTable.DeleteFields

TVirtualTable

procedure DeleteFields;

Description

Use DeleteFields to delete all fields.

See Also

DeleteField


LoadFromFile
TVirtualTable.LoadFromFile

TVirtualTable

procedure LoadFromFile(const FileName: String);

Description

Use LoadFromFile to load the data of a file into a TVirtualTable component. Specify the name of the file to load into the field as the value of the FileName parameter.This file may be an XML document in ADO compatible format or a virtual table data format. File format will be detected automatically.


LoadFromStream
TVirtualTable.LoadFromStream

TVirtualTable

procedure LoadFromStream(Stream: TStream);

Description

Use LoadFromStream to copy the data of a stream into the TVirtualTable component. Specify the stream from which the field's value is copied as the value of the Stream parameter. The data in the stream may be in ADO compatible format or a virtual table data format. Data format will be detected automatically.


SaveToFile
TVirtualTable.SaveToFile

TVirtualTable

procedure SaveToFile(const FileName: String);

Description

Use SaveToFile to save the data of the TVirtualTable component to a file. Specify the name of the file as the value of the FileName parameter.


SaveToStream
TVirtualTable.SaveToStream

TVirtualTable

procedure SaveToStream(Stream:TStream);

Description

Use SaveToStream to copy the data a TVirtualTable component to a stream. Specify the name of the stream to which the field's value is saved as the value of the Stream parameter.


Description
EMSError

Hierarchy	Properties

Unit

OLEDBAccess

Description

EMSError is raised when SQL Server returns error as a result, for example, of an attempt to execute invalid SQL statement. Use EMSError in an exception-handling block.

See Also

EOLEDBError, EDAError


ErrorCode
EMSError.ErrorCode

EMSError

property ErrorCode: Integer;

Description

ErrorCode contains an SQL Server error code. See SQL Server documentation for details.

See Also

EOLEDBError

MSSQLErrorCode


LastMessage
EMSError.LastMessage

EMSError

property LastMessage: string;

Description

LastMessage contains SQL Server last error message.


LineNumber
EMSError.LineNumber

EMSError

property LineNumber: Word;

Description

When applicable LineNumber property contains the line number of a stored procedure on which the error occurred.

See Also

ProcName


MSSQLErrorCode
EMSError.MSSQLErrorCode

EMSError

property OLEDBErrorCode: Integer;

Description

Code of SQL Server error. Refer to MSDN for detail description of errors code. Using MSSQLErrorCode is preferable than using ErrorCode as decoding the last one depends on the class of error (EOLEDBError or EMSError).

See Also

EMSError

ErrorCode


ProcName
EMSError.ProcName

EMSError

property ProcName: string;

Description

ProcName contains name of the stored procedure that generated the error. This property may be empty if no stored procedure was called.


ServerName
EMSError.ServerName

EMSError

property ServerName: string;

Description

ServerName contains name of the server that generated the error.


SeverityClass
EMSError.SeverityClass

EMSError

property SeverityClass: Byte;

Description

SeverityClass contains a severity of an SQL Server message.


State
EMSError.State

EMSError

property State: Byte;

Description

State property contains a state of the SQL Server error message. See SQL  Server documentation for more details.


Description
EOLEDBError

Hierarchy	Properties

Unit

OLEDBAccess

Description

EOLEDBError is raised when a component receives OLE DB error. Use EOLEDBError in an exception-handling block.

If several errors hapen during execution the same SQL statement all these errors are stored into Errors property. For example, if following query will be executed

'SELECT WrongField1, WrongField2 FROM Northwind..Orders'

ErrorCount equals to 2 and Errors property contain two errors ('Invalid column name 'WrongField1'.' and 'Invalid column name 'WrongField2'.')

Keep in mind, if MSConnection.Connect was called from another thread than this event, the text of the message can be incomplete.

See Also

EMSError,

EDAError


ErrorCode
EOLEDBError.ErrorCode

EOLEDBError

property ErrorCode: Integer;

Description

ErrorCode contains an OLE DB code for the error. See OLE DB documentation.

See Also

EMSError

OLEDBErrorCode


ErrorCount
EOLEDBError.ErrorCount

EOLEDBError

property ErrorCount: Integer;

Description

Number of errors returned by server.

See Also

EMSError


Errors
EOLEDBError.Errors

EOLEDBError

property Errors[Index: Integer]: EOLEDBError;

Description

Array of errors returned by server.

See Also

EOLEDBError

EMSError


MessageWide
EOLEDBError.MessageWide

EOLEDBError

property MessageWide: Integer;

Description

This property represents Unicode equivalent of Exception.Message. Useful for client applications working on systems that have charset incompatible with server charset.

See Also

EMSError


OLEDBErrorCode
EOLEDBError.OLEDBErrorCode

EOLEDBError

property OLEDBErrorCode: Integer;

Description

Code of OLE DB error. Refer to MSDN for detail description of errors code. Using OLEDBErrorCode is preferable than using ErrorCode as decoding the last one depends on the class of error (EOLEDBError or EMSError).

See Also

EMSError

ErrorCode


Description
TCustomMSDataSet

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TCustomMSDataSet is a base dataset component that defines functionality for classes derived from it. Applications never use TCustomMSDataSet objects directly. Instead they use descendants of TCustomMSDataSet, such as TMSQuery, TMSTable and TMSStoredProc, which inherit its dataset-related properties and methods.

See Also

TMSQuery

TCustomMSTable

TCustomMSStoredProc

Performance of obtaining data

Working with master/detail relationships


CommandTimeout
TCustomMSDataSet.CommandTimeout

TCustomMSDataSet

property CommandTimeout: integer;

Description

Specifies amount of time to attempt execution of a command.

Use CommandTimeout to specify the amount of time that expires before an attempt to execute a command is considered unsuccessful. Measured in seconds.

If a command is successfully executed prior to the expiration of the seconds specified, CommandTimeout has no effect.

The default value is 0 (infinite).

See also:

TMSConnection.ConnectionTimeout


Connection
TCustomMSDataSet.Connection

TCustomMSDataSet

property Connection: TMSConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TCustomMSConnection or its descendant class objects.

At runtime, set Connection property to reference an existing TCustomMSConnection object.

See Also

TMSConnection


CursorType
TCustomMSDataSet.CursorType

TCustomMSDataSet

type

  TMSCursorType = (ctDefaultResultSet, ctStatic, ctKeyset, ctDynamic);

property CursorType: TMSCursorType;

Description

SQL Server supports several cursor types:

Value	Meaning

ctDefaultResultSet	By old SQL Server terminology is Firehose cursor, servers to the maximum fast fetch data from server to client side. Allows to run batches. Data updates are reflected on database only by SQL statements execution;

ctStatic 	Static copy of records. Query execution results are cashed at the server. Fetch is performed row by row when a data-aware component or a program requests it. When cursor is opened all newly added updates are invisible. Used mostly for reporting;

ctKeyset	Allows to cache only keyfields at the server. Fetch is performed row by row when a data-aware component or a program requests it. Records added by other users are not visible, records deleted by other users are inaccessible. Data updates are reflected on database both by SQL statements execution and server cursors means;

ctDynamic	Dynamic cursor, used when no cached data at the server and fetch is performed row by row as required. Doesn't support bookmarks and couldn't be represented in multiline controls such as DBGrid. Data modifications, deletions, and insertions by other users are visible. Data updates are reflected on database both by SQL statements execution and server cursors means.

Depending on the text of SQL statement cursor type and value of ReadOnly property when Options.CursorUpdate is True can be modified while opening dataset. To learn more about implicit alteration of cursors refer to MSDN.

ctStatic, ctKeyset and ctDynamic cursors are server cursors. So FetchRows, FetchAll, CachedUpdates properties don't have an influence on such cursors and only Options. CursorUpdate option does.

How to choose cursor type refer to MSDN

Default value is ctDefaultResultSet.

See Also

Performance

Options.CursorUpdate


Options
TCustomMSDataSet.Options

TCustomMSDataSet

type

  TMSDataSetOptions = class (TDADataSetOptions)

  published

    property AllFieldsEditable: boolean;

    property AutoRefresh: boolean;

    property AutoRefreshInterval: integer

    property CheckRowVersion: boolean;

    property CursorUpdate: boolean;

    property DefaultValues: boolean;

    property DMLRefresh: boolean;

    property EnableBCD: boolean;

    property FullRefresh: boolean;

    property NonBlocking: boolean;

    property QuoteNames: boolean;

    property UniqueRecords: boolean;

    property QueryIdentity: boolean;

  end;

property Options: TMSDataSetOptions;

Description

Set properties of Options to specify behaviour of TCustomMSDataSet object. The meanings of Options' properties are:

Property	Description

AllFieldsEditable	Not supported. Refer to TCustomDADataSet.Options.SetFieldsReadOnly;

AutoPrepare	Set this property to execute automatic preparing on a query execution. Make sense for cases when a query will be executed several times, for example in Master/Detail relationships.

AutoRefresh	If True, dataset will be automatically refreshed every AutoRefreshInterval seconds. If dataset has at least one key field and a TIMESTAMP field,  RefreshQuick method will be executed, otherwise Refresh method will be executed.

AutoRefreshInterval	Use the AutoRefreshInterval property to define in what time interval in seconds the Refresh or RefreshQuick method of a DataSet is called.

CheckRowVersion	Determines whether the dataset checks for rows modifications made by another user on automatic generation of SQL statement for update or delete data. If CheckRowVersion property is False and DataSet has keyfields WHERE clause of SQL statement is generated based on these keyfields. Unless on Identity field or on all non BLOB fields if Identity doesn't exist. If CheckRowVersion is True and DataSet has TIMESTAMP field when the only this field is included into WHERE clause of generated SQL statement. Otherwise, all non BLOB fields. All mentioned fields concern to current updating table. Default value is False;

CursorUpdate	Specifies what way data updates reflect on database when modifying dataset by using server cursors ctKeySet and ctDynamic. If CursorUpdate property is True, all dataset modifications pass to database by server cursors. If CursorUpdate property is False, all dataset updates pass to server by SQL statements generated automatically or specified in SQLUpdate, SQLInsert or SQLDelete. Default value is True;

DefaultValues	If True TCustomMSDataSet fills DefaultExpression property of TField objects by appropriate value.

DMLRefresh	Use DMLRefresh property to refresh record when insert or update is performed. This feature doesn't support SQL  Server Compact Edition. The default value is False.

EnableBCD	Specifies whether to treat numeric fields as floating-point or BCD. Use the EnableBCD property to specify how fields are mapped to field classes. If EnableBCD is True,  decimal and numeric fields are mapped to the TBCDField class when field objects are created. If EnableBCD is False, the fields are mapped to the TFloatField class.  EnableBCD determines whether numeric and decimal fields are translated as floating-point values or currency values. Currency values eliminate the rounding errors associated with floating point math (such as a 3 * (2/3) resulting in 2.00000000001). The default value is False;

FullRefresh	Specifies what fields to include in automatically generated SQL statement when calling RefreshRecord method. If FullRefresh property is True, all the fields from query are included into SQL statement to refresh single record. If FullRefresh is False, only fields from updating table are included. Note: if FullRefresh is True, refresh SQL statement for complex queries and views might be generated with errors. Default value is False;

LongStrings	Represents string fields with the length that is greater than 255 as TStringField not as TMemoField. Default value is True;

NonBlocking	Set the NonBlocking option to True to fetch rows in a separate thread. The BeforeFetch event is called in the additional thread context that performs data fetching. This event is called every time on the Fetch method call. The AfterFetch event is called in the main thread context only once after fetching is completely finished.
In NonBlocking mode as well as in FetchAll=False mode an extra connection is created. When setting TCustomMSDataSet.Options.NonBlocking to True, you should keep in mind that execution of such queries blocks the current session. In order to avoid blocking, OLE DB creates an additional session as in TCustomMSDataSet.FetchAll = False mode. It causes the same problems as in TCustomDADataSet.FetchAll = False mode. This problem can be solved by using MARS (TMSConnection.Options.MultipleActiveResultSets  = True). The current session is not blocked and OLE DB is not required to create addition session to run a query. MARS is supported by SQL  Server 2005 only if SQL Native Client as OLE DB provider is used.

NumberRange	Sets MaxValue and MinValue properties of TIntegerField and TFloatField to appropriate values. Default value is False;

QueryIdentity	Specifies whether to request Identity field value, if such exists, on execution Insert or Append method. If to refuse of getting Identity you can have an impact on performance of Insert or Append by about 20%. Affects only for ctDefaultResultSet cursor. If you inserting value into  SQL_VARIANT field and QueryIdentity is True then EOLEDBError raised. Default value is True;

QueryRecCount	If True, and FetchAll property is False or NonBlocking option is True, TCustomDADataSet performs additional query to get record count for this SELECT so RecordCount property reflects the actual number of records. Does not have any effect if FetchAll property is True and NonBlocking option is False;

QuoteNames	If True TCustomMSDataSet quotes all field names in autogenerated SQL statements such as update SQL.

RemoveOnRefresh	When RemoveOnRefresh is turned on dataset locally removes record on refresh if it does not match filter condition (WHERE clause for refresh SQL) anymore. Default values is True;

RequiredFields	If True TCustomMSDataSet sets Required property of TField objects for NOT NULL fields. It useful when table has trigger which updates NOT NULL fields. Default value is False;

ReturnParams	Returns new value of fields to dataset after insert or update. Actual value of field after insert or update may be different from the value stored in local memory if the table has a trigger. When ReturnParams is True OUT parameters of SQLInsert and SQLUpdate statements is assigned to corresponding fields. Default value is False;

StrictUpdate	TCustomDADataSet raises exception when number of the updated or deleted records does not equal to 1. Setting this option also causes an exception if RefreshRecord procedure returns more than one record. Not affected to server cursors if CursorUpdate is True. Default value is True. In order for this option to work correctly, the SQL Server NOCOUNT option should be OFF (this is the default value). If NOCOUNT is ON, SQL Server returns 0 instead of the actual affected rows count. SDAC does not care for this option itself in order to avoid additional round trips to server.
We do not recommend using the StrictUpdate option with tables on which a trigger is defined, because this will cause problems if there are commands that modifies data in the trigger. But if you need to use this combination though, you should call the SET NOCOUNT ON command at the very beginning of the trigger, to suppress sending affected rows count for SQL statements executed within the trigger.

TrimFixedChar	Specifies whether to discard all trailing spaces in fixed-length string fields of the dataset. Default value is True;

TrimVarChar	Specifies whether to discard all trailing spaces in variable-length string fields of the dataset. Default value is False;

UniqueRecords	Use UniqueRecords to specify whether to query additional keyfields from the server. If UniqueRecords is False, keyfields aren't queried from the server when they are not included in the query explicitly. For example, the result of query execution "SELECT ShipName FROM Orders" holds the only field ShipName. When used with ReadOnly property set to True, UniqueRecords option gives insignificant advantage of performance. But in this case SQLRefresh will be generated in simplified way. If UniqueRecord is True, keyfields needed for complete automatic generation of SQLInsert, SQLUpdate, SQLDelete or SQLRefresh statements are queried from the server implicitly. For example, the result of query execution "SELECT ShipName FROM Orders" holds at least two fields ShipName and OrderID. The default value is False. Affects only for ctDefaultResultSet cursor.


Params
TCustomMSDataSet.Params

TCustomMSDataSet

property Params: TMSParams;

Description

Contains the parameters for a query's SQL statement.

Access Params at runtime to view and set parameter names, values, and data types dynamically (at design time use the Parameters editor to set parameter information). Params is a zero-based array of parameter records. Index specifies the array element to access.

An easier way to set and retrieve parameter values when the name of each parameter is known is to call ParamByName.

See Also

TMSParam

ParamByName


PermitPrepare
TCustomMSDataSet.PermitPrepare

TCustomMSDataSet

property PermitPrepare: boolean;

This option is out of date and isn't supported any more. The default behavior is the same to that when PermitPrepare set to False. To get the same behaviour as PermitPrepare set to True you need execute TCustomMSDataSet.Prepare method explicitly.


SQLDelete
TCustomMSDataSet.SQLDelete

TCustomMSDataSet

property SQLDelete: TStrings;

Description

Use SQLDelete property to specify SQL statement that will be used when applying a deletion to a record. Statements can be parameterized queries.

To create SQLDelete statement at design time, use query statements editor.

Example

  DELETE FROM Orders

  WHERE

    OrderID = :Old_OrderID

See Also

SQLInsert

SQLUpdate


SQLInsert
TCustomMSDataSet.SQLInsert

TCustomMSDataSet

property SQLInsert: TStrings;

Description

Use SQLInsert property to specify SQL statement that will be used when applying an insertion to a dataset. Statements can be parameterized queries. Names of the parameters should be the same as field names. Parameters prefixed with OLD_ allow to use current values of fields prior to actual operation.

Use TCustomMSDataSet.Options.ReturnParams to return OUT parameters back to dataset.

To create SQLInsert statement at design time, use query statements editor.

Note:

If you specify SQLInsert not depending onTCustomMSDataSet.Options.QueryIdentitythe value of Identity filed won't be returned on executionInsert(Append)..Post.To avoid the problem you should add following code to the end of SQLInsert:

SQL  Server 2000:

    SET :<FieldName> = SCOPE_IDENTITY()

SQL  Server 7:

    SET :<FieldName> = @@Identity

<FieldName> - name of Identity field.

Also you should set type of the last parameter to ptInputOutput for

TCustomDADataSet.BeforeUpdateExecute method:

  if stInsert in StatementTypes then

    Params[Params.Count - 1].ParamType := ptInputOutput;

Example

  INSERT INTO Orders

    (Shipname)

  VALUES

    (:Shipname)

See Also

SQLUpdate

SQLDelete


SQLRefresh
TCustomMSDataSet.SQLRefresh

TCustomMSDataSet

property SQLRefresh: TStrings;

Description

Use SQLRefresh property to specify SQL statement that will be used to refresh current record by calling RefreshRecord procedure.

Another behavior is observed when SQLRefresh property is assigned with a single WHERE clause that holds frequently altered search condition. In this case WHERE clause from SQLRefresh is combined with the same clause of SELECT statement in SQL property and this final query is then sent to a database server.

To create SQLRefresh statement at design time, use query statements editor.

Example

  SELECT Shipname FROM Orders

  WHERE

    OrderID = :OrderID

See Also

TCustomDADataSet.RefreshRecord


SQLUpdate
TCustomMSDataSet.SQLUpdate

TCustomMSDataSet

property SQLUpdate: TStrings;

Description

Use SQLUpdate property to specify SQL statement that will be used when applying an update to a dataset. Statements can be parameterized queries. Names of the parameters should be the same as field names. Parameters prefixed with OLD_ allow to use current values of fields prior to actual operation.

Use TCustomMSDataSet.Options.ReturnParams to return OUT parameters back to dataset.

To create SQLUpdate statement at design time, use query statement editor.

Example

  UPDATE Orders

  SET

    ShipName = :ShipName,

  WHERE

    OrderID = :Old_OrderID

See Also

SQLInsert

SQLDelete


BreakExec
TCustomMSDataSet.BreakExec

TCustomMSDataSet

procedure BreakExec;

Description

Call BreakExec to break execution of the SQL statement on the server.

It makes sense to call BreakExec only from another thread.

There is a notion to keep in mind when using this procedure: calling BreakExec to interrupt dataset opening in mode may not have effect if fetch is already begun (this happens when BreakExec falls between two fetch operations).

See Also

Execute

Open

TMSConnection.OnInfoMessage

TMSSQL.BreakExec


FindParam
TCustomMSDataSet.FindParam

TCustomMSDataSet

function FindParam(Name: String): TMSParam;

Description

Call FindParam to determine if parameter with the specified name exists in a dataset. Name is the name of the param for which to search. If FindParam finds a param with a matching name, it returns the TMSParam object for the specified Name. Otherwise it returns nil.

See Also

Params

ParamByName


LockRecord
TCustomMSDataSet.LockRecord

TCustomMSDataSet

type

TMSLockType = (ltUpdate, ltExclusive);

procedure LockRecord(LockType: TMSLockType);

Description

This method locks the current record in dataset to prevent multiple users' access to it. Accepted parameters:

ltUpdate 	The locked record can be read by others, but it cannot be updated until lock is released.

ltExclusive	The locked record can be neither read nor updated until lock is released.

Record lock can be performed only within a transaction. If an application cannot update/lock a record because it has already been locked, it will wait until lock is released. When the server lock timeout has expired, but lock is not acquired, an exception will be raised. Lock is released when the transaction is committed/rolled back.

See Also

LockTable

TCustomDAConnection.StartTransaction

TCustomDAConnection.Commit

TCustomDAConnection.Rollback

MSDN: Customizing the Lock Time-Out


LockTable
TCustomMSDataSet.LockTable

TCustomMSDataSet

type

TMSLockType = (ltUpdate, ltExclusive);

procedure LockTable(LockType: TMSLockType);

Description

This method locks the underlying dataset's table to prevent multiple users' access to it. Accepted parameters:

ltUpdate 	The locked table can be read by others, but it cannot be updated until lock is released.

ltExclusive	The locked table can be neither read nor updated until lock is released.

Table lock can be performed only within a transaction. If an application cannot update/lock a table because it has already been locked, it will wait until lock is released. When the server lock timeout has expired, but lock is not acquired, an exception will be raised. Lock is released when the transaction is committed/rolled back.

See Also

LockRecord

TCustomDAConnection.StartTransaction

TCustomDAConnection.Commit

TCustomDAConnection.Rollback

MSDN: Customizing the Lock Time-Out


OpenNext
TCustomMSDataSet.OpenNext

TCustomMSDataSet

procedure OpenNext;

Description

Use OpenNext method to get second and others ResultSets while executing multiresult query. Affects only for ctDefaultResultSet cursor. OpenNext method isn't compatible with Prepare.

See Also

Open

Execute


ParamByName
TCustomMSDataSet.ParamByName

TCustomMSDataSet

Accesses parameter information based on a specified parameter name.

function ParamByName(Name: String): TMSParam;

Description

Call ParamByName to set or use parameter information for a specific parameter based on its name. Name is the name of the parameter for which to retrieve information. ParamByName is used to set an parameter's value at runtime and returns TMSParam object. For example, the following statement retrieves the current value of a parameter called "Contact" into an edit box:

Example

Edit1.Text := Query1.ParamsByName('Contact').AsString;

See Also

TMSParam

Params

FindParam


Prepare
TCustomMSDataSet.Prepare

TCustomMSDataSet

procedure Prepare;

Description

Call Prepare to allocate, open and parse cursor for the query. Calling Prepare before multiple executing a query improves application performance.

SQL statements which have output parameters and aren't stored procedures calls or some of system functions such as sp_setapprole should be executed without prior call of Prepare method. Method OpenNext cannot be called after Prepare too.

The UnPrepare method unprepares a query.

Note

When you change the text of a query at runtime, the query is automatically closed and unprepared.

See Also

Prepared

UnPrepare

Options.AutoPrepare


RefreshQuick
TCustomMSDataSet.RefreshQuick

TCustomMSDataSet

procedure RefreshQuick(const CheckDeleted: boolean);

Description

Use the RefreshQuick method to quickly retrieve to the client side changes applied to the server by another clients. The main difference between the RefreshQuick an the Refresh methods is in that RefreshQuick does not transfer to the client all the data like the Refresh method does. The only rows that were added or modified from the moment of the last refresh are returned to a client. A necessity of data inquiry for each row is defined by TIMESTAMP field. So the RefreshQuick method is required query to include an unique key fields and a TIMESTAMP field. If the CheckDeleted parameter value is True, records deleted by other clients will be checked additionally.

This method is especially effective for queries with huge data level in the single row.

This feature does not work with SQL Server Compact Edition.

Note: If RefreshQuick is called for a dataset which is ordered on the server (query includes the ORDER BY clause), dataset records ordering can be violated because not all records will be retrieved by this method. You can use local ordering to solve this problem. For more information about local ordering, see the IndexFieldNames property description.


Description
TCustomMSStoredProc

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TCustomMSStoredProc implements functionality to access stored procedures on a database server.

You need only to define StoredProcName property, while not bothering about writing SQL statement by hand.

Use Execute method at runtime to generate request that instructs server to execute procedure and return parameters in Params property.

See also

TCustomMSDataSet

TMSStoredProc

Performance of obtaining data

Working with master/detail relationships


StoredProcName
TCustomMSStoredProc.StoredProcName

TCustomMSStoredProc

property StoredProcName: String;

Description

Set StoredProcName to specify the name of the stored procedure to call on the server. If StoredProcName does not match the name of an existing stored procedure on the server, then when the application attempts to prepare the procedure prior to execution, an exception is raised.


UpdatingTable
TCustomMSStoredProc.UpdatingTable

TCustomMSStoredProc

property UpdatingTable: string;

Description

Specifies which table in a query is assumed to be the target for subsequent data-modification queries as a result of user incentive to insert, update or delete records.

Property UpdatingTable is used on Insert, Update, Delete or RefreshRecord (see also Options.FullRefresh) if appropriate SQL (SQLInsert, SQLUpdate or SQLDelete) is not provided.

If UpdatingTable is not set then the first table used in query is assumed to be the target.

If the query is addressed to the View then entire View is taken as a target for subsequent modifications.

All fields from other than target table have their ReadOnly properties set to True (if Options.SetFieldsReadOnly is True).

With server cursors UpdatingTable can be used only if Options.CursorUpdate = False.


ExecProc
TCustomMSStoredProc.ExecProc

TCustomMSStoredProc

procedure ExecProc;

Description

Use ExecProc to execute the SQL statement on the server. If SQL statement is a query ExecProc calls Open method.

Internally ExecProc calls inherited TCustomDADataSet.Execute method and is only included for compatibility with BDE.

See Also

TCustomDADataSet.Execute


PrepareSQL
TCustomMSStoredProc.PrepareSQL

TCustomMSStoredProc

procedure PrepareSQL;

Description

Use PrepareSQL to build query for TCustomMSStoredProc, based on Params and StoredProcName properties, and assign it to SQL property. Generated query is then verified to be valid and if necessary list of parameters is modified.

PrepareSQL is called implicitly when TCustomMSStoredProc is executed.

See Also

TCustomDADataSet.Params

StoredProcName

ExecProc


Description
TCustomMSTable

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TCustomMSTable implements functionality to access data in a table or a view. Use TCustomMSTable properties and methods to gain direct access to records and fields in an underlying server database without writing SQL statements.

See also

TMSTable

TCustomMSDataSet

TCustomMSStoredProc

TMSQuery

Performance of obtaining data

Working with master/detail relationships


OrderFields
TCustomMSTable.OrderFields

TCustomMSTable

property OrderFields: String;

Description

TCustomMSTable uses OrderFields property to build ORDER BY clause of SQL statements.

Place commas to separate fields between each other in a single string.

TCustomMSTable is reopened when OrderFields property is changed.

See also:

TCustomMSTable


TableName
TCustomMSTable.TableName

TCustomMSTable

property TableName: String;

Description

Use TableName to specify the name of the database table or view that this component encapsulates. At design time select a valid table name from the TableName drop-down list in the Object Inspector.

Note:

To work with temporary tables you must set FetchAll to True (for details see FetchAll description);

See also:

TCustomMSTable


PrepareSQL
TCustomMSTable.PrepareSQL

TCustomMSTable

procedure PrepareSQL;

Description

Use PrepareSQL to build query for TCustomMSTable, based on values of TableName, MasterFields, DetailFields and OrderFields properties, and assign it to SQL property.

Note that this method does not verify any of these fields on validity of their content.

See Also

TableName

MasterFields

DetailFields

OrderFields


Description
TMSColumn

Hierarchy	Properties

Unit

MSLoader

Description

Each TMSLoader uses TDAColumns to maintain a collection of TMSColumn objects. TMSColumn object represents the attributes for column loading. Every TMSColumn object corresponds to one of the table fields with the same name as its Name property.

To create columns at design-time use column editor of TMSLoader component.

See Also

TMSLoader

TDAColumns


Precision
TMSColumn.Precision

TMSColumn

property Precision: integer;

Description

Indicates the size used in the definition of the physical database field for data types that support different precision. Can be filled automatically, when calling TDALoader.CreateColumns or when the TableName property setting. User can manually create fields by filling TMSColumn properties.


Scale
TMSColumn.Scale

TMSColumn

property Scale: integer;

Description

Use Scale property to set the scale of a


Size
TMSColumn.Size

TMSColumn

property Size: integer;

Description

Use Size property to set the size of a


Description
TMSConnectDialog

Hierarchy	Properties	Methods

Unit

MSAccess

Description

Use TMSConnectDialog to provide dialog box for user to supply username, password and server name. You may want to customize appearance of dialog box using this class's properties.

See Also

TCustomDAConnection.ConnectDialog


Connection
TMSConnectDialog.Connection

TMSConnectDialog

property Connection: TMSConnection;

Description

Read Connection property to find out what TCustomMSConnection uses the TMSConnectDialog object. This property is read-only.

See Also

TCustomDAConnection.ConnectDialog


GetServerList
TMSConnectDialog.GetServerList

TMSConnectDialog

procedure GetServerList(List: TStrings);

Description

Call GetServerList method to retrieve list of available database servers. It is useful for writing custom login forms.


Description
TMSConnection

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TMSConnection component is used to establish connection to a database server, provide customised login support, and perform transaction control.

TMSConnection publishes connection-related properties derived from its ancestor class TCustomDAConnection and introduces OLE DB specific properties, which give more control over transactions.

Note, if you would like to use SDAC in service, console or just at separate thread you need call CoInitialize for each thread. Also remember to call CoUnInitialize at the end of thread.

See also:

TCustomMSDataSet.Connection

TMSSQL.Connection


Authentication
TMSConnection.Authentication

TMSConnection

type

  TMSAuthentication = (auWindows, auServer);

property Authentication: TMSAuthentication;

Description

Use Authentication property to specify authentication service used by the database server to identify the user.

If you need to use this property at run-time, you must use OLEDBAccess unit.

Authentication property accepts one of the following values:

auWindows	Uses Windows NT/2000/XP integrated security, or "SSPI" (Security Support Provider Interface). Username, Password and LoginPrompt properties are ignored.

auServer	An alternative way of identifying users by database server. To establish a connection requires valid Username and Password either hardcoded into application or provided in server login prompt fields.

The default value is auServer.

See also:

Username

Password


ClientVersion
TMSConnection.ClientVersion

TMSConnection

property ClientVersion: string;

Description

The version of Microsoft OLE DB Provider for SQL Server (sqloledb.dll)

To get value of this property connection to the server must be established

See Also

Connect

ServerVersion


ConnectionTimeout
TMSConnection.ConnectionTimeout

TMSConnection

property ConnectionTimeout: integer;

Description

Specifies amount of time to attempt a connection.

Use ConnectionTimeout to specify the amount of time, in seconds, that can expire before an attempt to make a connection is considered unsuccessful.

The default value is 15 seconds.

See also:

TCustomMSDataSet.CommandTimeout

TMSSQL.CommandTimeout


ConnectString
TMSConnection.ConnectString

TMSConnection

property ConnectString: string;

Specifies the connection information for the data store.

Description

SDAC recognizes an ODBC-like syntax in provider string property values. Within the string, elements are delimited by using a semicolon. Each element consists of a keyword, an equal sign character, and the value passed on initialization. For example:

Server=London1;User ID=nancyd

See also:

Server

Username

Password


Database
TMSConnection.Database

TMSConnection

property Database: string;

Description

Use Database property to specify database name that is a default source of data for SQL queries once a connection is established.

Altering Database property makes new database name take effect immediately.

Default value is 'master'.

Example

Setting Database='Northwind' allows you to omit database specifier in SELECT statements. That is, instead of

SELECT * FROM Northwind..Products;

you may just write

SELECT * FROM Products

See Also

Server

Username

Password


IsolationLevel
TMSConnection.IsolationLevel

TMSConnection

type

  TIsolationLevel = (ilReadCommitted, ilReadUnCommitted, ilRepeatableRead, ilIsolated, ilSnapshot);

property IsolationLevel: TIsolationLevel;

Description

Use IsolationLevel property to specify extent to which all outside transactions interfere with subsequent transactions of current connection.

Changes to IsolationLevel take effect at a time of starting new transaction or opening new connection.

IsolationLevel property accepts one of the following values:

ilReadCommitted 	Sets isolation level at which transaction cannot see changes made by outside transactions until they are committed. Only dirty reads (changes made by uncommitted transactions) are eliminated by this state of isolation level.

ilReadUnCommitted	Most unrestricted level of transaction isolation. All types of data access interferences are possible. Mainly used for browsing database and to receive instant data with prospective changes.

ilRepeatableRead	Prevents concurrent transactions from modifying data in current uncommitted transaction. This level eliminates dirty reads as well as nonrepeatable reads (repeatable reads of the same data in one transaction before and after outside transactions may have started and committed).

ilIsolated	Most restricted level of transaction isolation. Database server isolates data involved in current transaction by putting additional processing on range locks. Used to put aside all undesired effects observed in concurrent accesses to the same set of data, but may lead to a greater latency at times of congested database environment.

ilSnapshot	Uses row versioning. Provides transaction-level read consistency. A data snapshot is taken when the snapshot transaction starts, and remains consistent for the duration of the transaction.

The default value is ilReadCommitted.

See Also

SQL Server 2005 Books Online: Isolation Levels in the Database Engine

SQL Server 2005 Books Online: Row Versioning-based Isolation Levels in the Database Engine


Options
TMSConnection.Options

TMSConnection

type

  TOLEDBProvider = (prAuto, prSQL, prNativeClient, prCompact);

  TDANumericType = (ntFloat, ntBCD{$IFDEF VER6P}, ntFmtBCD{$ENDIF});

  TMSConnectionOptions = class (TDAConnectionOptions)

  published

    property ApplicationName: string;

    property AutoTranslate: boolean;

    property Encrypt: boolean;

    property InitialFileName: string;

    property Language: string;

    property MultipleActiveResultSets: boolean;

    property NetworkLibrary: string;

    property NumericType: TDANumericType;

    property PacketSize: integer;

    property PersistSecurityInfo: boolean;

    property Provider: TOLEDBProvider

    property QuotedIdentifier: boolean;

    property WorkstationID: string;

  end;

property Options: TMSConnectionOptions;

Description

Set properties of Options to specify behaviour of TMSConnection object. The meanings of Options' properties are:

Property	Description

ApplicationName	The name of client application. The default value is name of executable file of your application;

AutoTranslate	When set to True, character strings sent between the client and server are translated by converting through Unicode to minimize problems in matching extended characters between the code pages on the client and the server;

Encrypt	Specifies if data should be encrypted before sending it over the network. Default value is False;

FailoverPartner	Specifies the SQL Server name to which SQL Native Client will reconnect when failover of the principal SQL Server occurs. This option only supported for SQL Server 2005 with using SQL Native Client as an OLE DB provider.

InitialFileName	Specifies the name of the main database file. This database will be default database for the connection. SQL Server attaches the database if it is not attached to the server, so this property can be used for connected to the database, that is not yet attached to the server.

Language	A SQL Server language name. Identifies the language used for system message selection and formatting. The language must be installed on the computer running an instance of SQL Server or connection fails.

MultipleActiveResultSets Enables support for SQL Server 2005 Multiple Active Result Sets (MARS) technology. It allows applications to have more than one pending request per connection, and in particular, to have more than one active default result set per connection. Current session is not blocked when using FetchAll = False, and it is not necessary for OLE DB to create additional sessions for any query executing. MARS is only supported by SQL Server 2005 with using SQL Native Client as OLE DB provider.

NetworkLibrary	The name of the Net-Library (DLL) used to communicate with an instance of SQL Server. The name should not include the path or the .dll file name extension. The default is provided by the SQL Server Client Network Utility.

NumericType	Specifies format of storing and representation of NUMERIC (DECIMAL) fields for all TCustomMSDatasets, associated with the given connection. Can possess the following values:

ntFloat	The default value. Data on client side is in double format and represent as TFloatField. Can be fast processed but with some lost in accuracy.

ntBCD	Data stores on client side as currency and represent as TBCDField. This format allows to store data with precision up to 0,0001.

PacketSize	A network packet size in bytes. The packet size property value must be between 512 and 32,767. The default network packet size is 4,096.

PersistSecurityInfo	The data source object is allowed to persist sensitive authentication information such as a password along with other authentication information.

Provider	This property allows you to specify a provider from the list of supported providers. Default value of this property is prAuto. In this case a provider of the most recent version is used. Some features added to SQL  Server 2005 are required the SQL Native Client (prNativeClient) provider to be used. If chosen provider is not installed, exception is raised. prCompact value should be set for working with SQL Server 2005 Compact Edition. This property can have the following values:

prAuto	The default value. The available provider with the most recent version is chosen.

prSQL	Uses the provider preinstalled with Windows which has limited functionality.

prNativeClient	Uses the SQL Native Client. It should be installed on the computer to use this Provider value. This provider  offers the maximum functionality set.

prCompact	SQL Server 2005 Compact Edition provider.

QuotedIdentifier	Causes Microsoft® SQL Server™ to follow the SQL-92 rules regarding quotation mark delimiting identifiers and literal strings. Identifiers delimited by double quotation marks can be either Transact-SQL reserved keywords or can contain characters not usually allowed by the Transact-SQL syntax rules for identifiers.

True (Default value):

Identifiers can be delimited by double quotation marks, and literals must be delimited by single quotation marks.

All strings delimited by double quotation marks are interpreted as object identifiers. Therefore, quoted identifiers do not have to follow the Transact-SQL rules for identifiers. They can be reserved keywords and can include characters not usually allowed in Transact-SQL identifiers. Double quotation marks cannot be used to delimit literal string expressions; single quotation marks must be used to enclose literal strings. If a single quotation mark (') is part of the literal string, it can be represented by two single quotation marks ("). QuotedIdentifier must be True when reserved keywords are used for object names in the database.

False (BDE compatibility):

Identifiers cannot be quoted and must follow all Transact-SQL rules for identifiers. Literals can be delimited by either single or double quotation marks. If a literal string is delimited by double quotation marks, the string can contain embedded single quotation marks, such as apostrophes.

QuotedIdentifier must be True when creating or manipulating indexes on computed columns or indexed views. If QuotedIdentifier is False, CREATE, UPDATE, INSERT, and DELETE statements on tables with indexes on computed columns or indexed views will fail.

WorkstationID	A string identifying the workstation. The default value is name of your machine.


QuotedIdentifier
TMSConnection.QuotedIdentifier

TMSConnection

property QuotedIdentifier: boolean;

Description

Causes Microsoft® SQL Server™ to follow the SQL-92 rules regarding quotation mark delimiting identifiers and literal strings. Identifiers delimited by double quotation marks can be either Transact-SQL reserved keywords or can contain characters not usually allowed by the Transact-SQL syntax rules for identifiers.

True (Default value):

Identifiers can be delimited by double quotation marks, and literals must be delimited by single quotation marks.

All strings delimited by double quotation marks are interpreted as object identifiers. Therefore, quoted identifiers do not have to follow the Transact-SQL rules for identifiers. They can be reserved keywords and can include characters not usually allowed in Transact-SQL identifiers. Double quotation marks cannot be used to delimit literal string expressions; single quotation marks must be used to enclose literal strings. If a single quotation mark (') is part of the literal string, it can be represented by two single quotation marks ("). QuotedIdentifier must be True when reserved keywords are used for object names in the database.

False (BDE compatibility):

Identifiers cannot be quoted and must follow all Transact-SQL rules for identifiers. Literals can be delimited by either single or double quotation marks. If a literal string is delimited by double quotation marks, the string can contain embedded single quotation marks, such as apostrophes.

QuotedIdentifier must be True when creating or manipulating indexes on computed columns or indexed views. If QuotedIdentifier is False, CREATE, UPDATE, INSERT, and DELETE statements on tables with indexes on computed columns or indexed views will fail.


ServerVersion
TMSConnection.ServerVersion

TMSConnection

property ServerVersion: string;

Description

The version of SQL Server.

To get value of this property connection to the server must be established

See Also

Connect

ClientVersion


CreateDataSet
TMSConnection.CreateDataSet

TMSConnection

function CreateDataSet: TCustomDADataSet;

Description

CreateDataSet returns a new instance of TCustomMSDataSet class and associates it with this connection object.

See also:

TMSConnection.CreateSQL


CreateSQL
TMSConnection.CreateSQL

TMSConnection

function CreateSQL: TCustomDASQL;

Description

CreateSQL returns a new instance of TCustomMSSQL class and associates it with this connection object.

See also:

TMSConnection.CreateDataSet


ExecSQL
TMSConnection.ExecSQL

TMSConnection

function ExecSQL(Text: string; const Params: array of Variant): Variant;

Description

Use ExecSQL method to execute any SQL statement outside of TMSQuery or TMSSQL components. Supply Params array with values of parameters arranged in the same order as they appear in SQL statement which itselt is passed in Text string parameter.

Params array must contain all IN and OUT parameters defined in SQL statement. For OUT parameters provide any values of valid types so that they are explicitely defined before call to an ExecSQL method.

Out parameter with the name Result will hold the result of function having data type dtInteger. If neither parameter in Text statement is named Result, ExecSQL will return Null.

To get values of OUT parameters use ParamByName function.


OnInfoMessage
TMSConnection.OnInfoMessage

TMSConnection

Type

  TMSInfoMessageProc = procedure (E: EMSError) ofobject;

property OnInfoMessage: TMSInfoMessageProc;

Description

Happens in case of generation of SQL  Server info message. Following the list of Transact-SQL commands that generate info messages:

PRINT

RAISERROR with a severity of 10 or lower

DBCC

SET SHOWPLAN

SET STATISTICS

See also:

EMSError


Description
TMSConnectionPoolManager

Hierarchy	Methods

Unit

MSConnectionPool

Description

Use TMSConnectionPoolManager methods to manage SDAC connection pool.

See Also

Using connection pooling


AsyncClear
TMSConnectionPoolManager.AsyncClear

TMSConnectionPoolManager

class procedure AsyncClear;

Description

Call AsyncClear method to clear the pool in a separate thread. Note that pool may not be cleared immediately after method call. It will be cleared during the next pool validation (at most 30 seconds) after the call.


Clear
TMSConnectionPoolManager.Clear

TMSConnectionPoolManager

class procedure Clear;

Description

Call Clear method to clear the connection pool.


Description
MSDataAdapter

Hierarchy	Properties	Methods

Unit

CoreLab.Sdac.DataAdapter

Description

The MSDataAdapter class is designed for use with a TCustomMyDataSet components and use it as data source for retrieving and saving data. MSDataAdapter provides this bridge by mapping Fill, which changes the data in the System.Data.DataSet to match the data in the data source, and Update, which changes the data in the data source to match the data in the System.Data.DataSet.

See Also

DADataAdapter


Description
TMSConversation

Hierarchy	Properties	Methods

Unit

MSAccess

Description

The TMSConversation class describes the dialog process between two services.

To start a new conversation, use the TMSServiceBroker.BeginDialog method. You can finish the dialog by calling the EndConversation method.

Note: You should not create and delete TMSConversation objects by calling the Create and Free methods directly. Use the TMSServiceBroker.BeginDialog and TMSConversation.EndConversation methods instead.

See Also

TMSMessage

TMSServiceBroker

TMSServiceBroker.Conversations


ContractName
TMSConversation.ContractName

TMSConversation

property ContractName: WideString;

Description

Stores the name of the contract that the conversation conforms to.

See Also

TMSServiceBroker.BeginDialog


FarService
TMSConversation.FarService

TMSConversation

property FarService: string;

Description

The service name of the second side that is taking part in the dialog.

See Also

TMSServiceBroker.Service


GroupId
TMSConversation.GroupId

TMSConversation

property GroupId: TGuid;

Description

GroupId property stores unique identifier of the conversation group. It is used for executing Transact-SQL queries.

Value of this property can be set when calling the TMSServiceBroker.BeginDialog method with the RelatedConversation or GroupId parameter. If the TMSServiceBroker.BeginDialog was called with these parameters omitted, the GroupId will be assigned to a unique value.

If the conversation already exists, you can assign a new value for GroupId. See the description of the MOVE CONVERSATION statement in MSDN for details.

See Also

Handle


Handle
TMSConversation.Handle

TMSConversation

property Handle: TGuid;

Description

Handle stores unique identifier of the current conversation. It is used for executing Transact-SQL queries. Handle is a read-only property.

See Also

GroupId


IsInitiator
TMSConversation.IsInitiator

TMSConversation

property IsInitiator: boolean;

Description

Indicates whether the conversation was initiated by this side.

See Also

TMSServiceBroker.Service

TMSServiceBroker.BeginDialog

FarService


ServiceBroker
TMSConversation.ServiceBroker

TMSConversation

property ServiceBroker: TGuid;

Description

Identifies the TMSServiceBroker object which a conversation instance belongs to.

See Also

TMSServiceBroker.Conversations


BeginTimer
TMSConversation.BeginTimer

TMSConversation

procedure BeginTimer(const Timeout: integer);

Description

Call BeginTimer method to receive a message of the SDialogTimerType message type after the time specified in the Timeout property (in seconds) is expired.

See the description of the BEGIN CONVERSATION TIMER statement in MSDN for details.

See Also

TMSMessage

TMSServiceBroker.Receive


EndConversation
TMSConversation.EndConversation

TMSConversation

procedure EndConversation(const Cleanup: boolean = False);

Description

EndConversation method serves for conversation terminating. The Cleanup parameter determine wether the undelivered massages will be deleted.

See the description of the END CONVERSATION statement in MSDN for details.

See Also

EndConversationWithError

TMSServiceBroker.BeginDialog


EndConversationWithError
TMSConversation.EndConversationWithError

TMSConversation

procedure EndConversationWithError(const Cleanup: boolean = False);

Description

EndConversationWithError serves for conversation terminating and handing text (ErrorMessage) and code (ErrorCode) of the error. The Cleanup parameter determine whether the undelivered massages will be deleted.

See the description of the END CONVERSATION statement in MSDN for details.

See Also

EndConversationWithError

TMSServiceBroker.BeginDialog


GetTransmissionStatus
TMSConversation.GetTransmissionStatus

TMSConversation

function GetTransmissionStatus: string;

Description

GetTransmissionStatus returns the status of the last sent message.

See the description of the GET_TRANSMISSION_STATUS statement in MSDN for details.

See Also

Send


Send
TMSConversation.Send

TMSConversation

procedure Send(const MessageBody: TBytes; const MessageType: WideString = ''); overload;

procedure Send(const MessageBody: string; const MessageType: WideString = ''); overload;

procedure Send(const MessageBody: WideString; const MessageType: WideString = ''); overload;

Description

Sends a message within the conversation. The target service is determined when creating the conversion.

The MessageType parameter determines the type of the sending message. For detailed description of the message types see description of  the CREATE MESSAGE TYPE statement in MSDN.

You can check the status of the last sent message by the GetTransmissionStatus method.

Note   The method overload with the WideString MessageBody parameter type is not supported under Delphi 5.

See Also

GetTransmissionStatus

SendEmpty

TMSMessage.AsString

TMSMessage.AsWideString

TMSMessage.AsBytes


SendEmpty
TMSConversation.SendEmpty

TMSConversation

procedure SendEmpty(const MessageType: WideString = '');

Description

Sends an empty message within the conversation. The target service is determined when creating the conversion.

This method must be used to send an empty message. This is the only method that can be used to send a message if MessageType was created with the Validation property set to mvEmpty.

The MessageType parameter determines the type of the sending message. For detailed description of the message types see description of the CREATE MESSAGE TYPE statement in MSDN.

See Also

Send

TMSMessage.IsEmpty


Description
TMSDataSource

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TDataSource provides an interface between an SDAC dataset components and data-aware controls on a form.

TMSDataSource inherits its functionality from TDataSource component.

At design time assign individual data-aware components' DataSource properties from their drop-down listboxes.


Description
TMSDump

Hierarchy	Properties	Methods	Events

Unit

MSDump

Description

TMSDump serves to store data from tables or editable views as a script and also to restore data from received script.

Use TableNames property to specify list of objects to be stored. To launch generating script, call the Backup method.

TMSDump also can generate scripts for a query. Just call the BackupQuery method and pass a query statement into this method. The object list assigned to the TableNames property is ignored if you call BackupQuery. Generated script can be viewed in the SQL property.

TMSDump works on the client side. It causes large network loading.

See Also

Backup

RestoreProperties


Connection
TMSDump.Connection

TMSDump

property Connection: TMSConnection;

Description

Use the Connection property to specify a connection object that will be used to connect to a data store.

Set at design-time by selecting from the list of provided TMSConnection objects.

At runtime, set Connection property to reference an existing TMSConnection object.

See Also

TMSConnection


Options
TMSDump.Options

TMSDump

type

  TMSDumpOptions = class (TDADumpOptions)

  published

    property IdentityInsert: boolean;

  end;

property Options: TMSDumpOptions;

Description

Set properties of Options to specify the behaviour of TMSDump object. The meanings of Options' properties are:

Property	Description

IdentityInsert	Adds SET IDENTITY_INSERT TableName ON at the beginning of the script  and SET IDENTITY_INSERT TableName OFF at the end of the script. The first line allows explicit values to be inserted into the identity column of a table and INSERT statements are generated with IDENTITY field values. Otherwise IDENTITY field will not be included to the INSERT statements.


Description
TMSMessage

Hierarchy	Properties

Unit

MSServiceBroker

Description

The TMSMessage class represents a Service Broker message of Microsoft SQL Server. Use the TMSMessage class to retrieve the message body and parameters from the message obtained from a queue.

All properties of TMSMessage are read-only. Use the TMSConversation.Send method to send a message.

Each message belongs to a conversation.

See Also

TMSServiceBroker

MSServiceBroker.CurrentMessage


AsBytes
TMSMessage.AsBytes

TMSMessage

type

  TBytes = array of Byte;

property AsBytes: TBytes;

Description

Use AsBytes to read message body as an array of bytes.

See Also

AsString

AsWideString

Send

IsEmpty


AsString
TMSMessage.AsString
TMSMessage

property AsString: string;

Description

Use AsString to read message body as an ANSI string.

Note: If the body of the received message stores a Unicode string value or a TBytes value, the result of AsString will be wrong.

See Also

AsWideString

AsBytes

Send

IsEmpty


AsWideString
TMSMessage.AsWideString
TMSMessage

property AsWideString: WideString;

Description

Use AsWideString to read message body as a Unicode string.

Note: If the body of the received message stores an ANSI string value or a TBytes value, the result of AsWideString will be wrong.

See Also

AsString

AsBytes

Send

IsEmpty


Conversation
TMSMessage.Conversation
TMSMessage

property Conversation: TMSConversation;

Description

Use Conversation to get a link to the TMSConversation object that belongs to the message.

See Also

TMSConversation


IsEmpty
TMSMessage.IsEmpty
TMSMessage

property IsEmpty: boolean;

Description

Check the IsEmpty property to ascertain whether the message contains a value. If IsEmpty is set to True, the message is blank, otherwise, the message has a value.

See Also

TMSConversation.SendEmpty

AsString

AsWideString

AsBytes


MessageId
TMSMessage.MessageId
TMSMessage

property MessageId: TGuid;

Description

Stores the unique identifier for the message.

See Also

QueuingOrder

MessageSequenceNumber


MessageSequenceNumber
TMSMessage.MessageSequenceNumber
TMSMessage

property MessageSequenceNumber: Int64

Description

Holds the sequence number of the message within the conversation.

See Also

QueuingOrder
MessageId


MessageType
TMSMessage.MessageType
TMSMessage

property MessageType: WideString;

Description

Stores the name of the message type that describes the message.

If the MessageType was not set when sending, it has the DEFAULT value.

See Also

Send


QueuingOrder
TMSMessage.QueuingOrder
TMSMessage

property QueuingOrder: Int64

Description

QueuingOrder stores the order number of the message within the queue.

See Also

MessageSequenceNumber
MessageId


Validation
TMSMessage.Validation
TMSMessage

type

  TMSMessageValidation = (mvEmpty, mvNone, mvXML);

property Validation: TMSMessageValidation;

Description

Validation for the message to be performed by the server.

The meanings of the validation values are the following:

Value	Meaning

mvEmpty	The message should be empty.

mvNone	Validation is not performed.

mvXML	The message should be a well-formed XML document.

See Also

QueuingOrder

MessageSequenceNumber


Description
TMSLoader

Hierarchy	Properties	Methods	Events

Unit

MSLoader

Description

TMSLoader serves for fast data loading into a server table. TMSLoader functionality is based on SQL Server memory-based bulk-copy operations using the IRowsetFastLoad interface. Simultaneous loading into multiple tables is not supported.

See Also

MSDN: IRowsetFastLoad Usage and Limitations


Connection
TMSLoader.Connection

TMSLoader

property Connection: TMSConnection;

Description

Use Connection property to specify the connection in which TMSLoader will be executed. If Connection is not connected Load method calls TCustomDAConnection.Connect.

See Also

TMSConnection


KeepIdentity
TMSLoader.KeepIdentity

TMSLoader

property KeepIdentity: boolean;

Description

Use KeepIdentity property to specify in what way IDENTITY column values must be handled. If KeepIdentity is set to False, IDENTITY columns will be initialized by server. Any value assigned to such column in your application is ignored. If KeepIdentity is set to True, the IDENTITY property will not be available for all IDENTITY fields accepting NULL. So in this case unique values should be generated and assigned by the client application. Default value of the KeepIdentity property is False.


KeepNulls
TMSLoader.KeepNulls

TMSLoader

property KeepNulls: boolean;

Description

Use KeepNulls property to specify in what way NULL values for columns with a DEFAULT constraint must be handled. If this option is set to False, each NULL value inserted into a field with a DEFAULT constraint will be replaced with a default value. If KeepNulls is set True, NULL values inserted into a field with a DEFAULT constraint will not be replaced with a default values. Default value of the KeepNulls property is False.


Options
TMSLoader.Options

TMSLoader

type

  TMSLoaderOptions = class (TPersistent)

  published

    property RowsPerBatch: integer;

    property KilobytesPerBatch: integer;

    property LockTable: boolean;

    property CheckConstraints: boolean;

  end;

property Options: TMSLoaderOptions;

Description

Use Options property to specify the behaviour of TMSLoader object. The meanings of Options' properties are:

RowsPerBatch	Use this option to specify number of rows to load in a single batch. Server optimizes loading according to this value. Default value of the RowsPerBatch option is unknown.

KilobytesPerBatch	Use this option to specify size of data in kilobytes to load in a single batch. Default value of the KilobytesPerBatch option is unknown.

LockTable	Use this option to specify if the table-level lock will be performed while loading is in progress. Setting this option to True should greatly improve performance. If this option is set to False, the locking behaviour is determined by the table option. Default value of the LockTable option is False.

CheckConstraints	Use this option to specify if table constrains is checked during loading. If this option is set to False, table constrains is not checked.  Default value of the CheckConstraints option is False.


OnGetColumnData
TMSLoader.OnGetColumnData

TMSLoader

type

  TMSGetColumnDataEvent = procedure (Sender: TObject; Column: TMSColumn;

    Row: integer; var Value: variant; var IsEOF: boolean) of object;

property OnGetColumnData : TMSGetColumnDataEvent;

Description

Write OnGetColumnData event handler to put column values. TMSLoader calls OnGetColumnData event handler for each column in the loop. Column points to  TMSLoader object that corresponds to the current loading column. Use its Name or Index property to identify what column is loading. The Row parameter indicates the current loading record. TMSLoader increments Row parameter when all the columns of the current record are loaded. The first row is 1. Set IsEOF to True to stop loading of data. Fill Value parameter by column values. To start loading call Load method.

Another way to load data is using OnPutData event.

See Also

OnPutData

Load

TDALoader.OnGetColumnData


OnPutData
TMSLoader.OnPutData

TMSLoader

type

  TPutDataEvent = procedure (Sender: TDALoader) of object;

property OnPutData: TDAPutDataEvent;

Description

Write OnPutData event handler to put loading data by rows. Note that rows should be loaded from the first in ascending order. To start loading call Load method.

See Also

PutColumnData

Load

OnGetColumnData

TDALoader.OnPutData


Description
TMSMetadata

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

Use TMSMetadata to retrieve descriptions for specified objects stored at SQL Server in the form of a table.

See also

TCustomMSDataSet


AssemblyID
TMSMetadata.AssemblyID

TMSMetadata

property AssemblyID: integer;

Description

AssemblyID property specifies ID of the assembly which together with AssemblyName, schema, database and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

AssemblyName

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


AssemblyName
TMSMetadata.AssemblyName

TMSMetadata

property AssemblyName: string;

Description

AssemblyName property specifies name of the assembly which together with AssemblyID, schema, database and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

AssemblyID

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


ColumnName
TMSMetadata.ColumnName

TMSMetadata

property ColumnName: string;

Description

ColumnName property specifies column name which together with table, schema and database names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

TableName


ConstraintName
TMSMetadata.ConstraintName

TMSMetadata

property ConstraintName: string;

Description

ConstraintName property specifies constraint name which together with table, schema and database names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

TableName


DatabaseName
TMSMetadata.DatabaseName

TMSMetadata

property DatabaseName: string;

Description

DatabaseName property specifies database name which together with table, schema and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

SchemaName

TableName

StoredProcName

ColumnName

IndexName

ConstraintName


IndexName
TMSMetadata.IndexName

TMSMetadata

property IndexName: string;

Description

IndexName property specifies index name which together with table, schema and database names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

TableName


LinkedServer
TMSMetadata.LinkedServer

TMSMetadata

property LinkedServer: string;

Description

LinkedServer property specifies name of the server which together with other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


ObjectType
TMSMetadata.ObjectType

TMSMetadata

type

  TMSObjectType = (

    otDatabases, otColumnPrivileges,

    otColumns, otForeignKeys,

    otPrimaryKeys, otIndexes,

    otServerTypes, otSchemata,

    otStatistics, otStoredProcs,

    otStoredProcParams, otAliases,

    otTables, otSynonyms,

    otSystemTables, otViews,

    otGlobalTempTables, otLocalTempTables,

    otSystemViews, otAliasesInfo,

    otTablesInfo, otSynonymsInfo,

    otSystemTablesInfo, otViewsInfo,

    otGlobalTempTablesInfo, otLocalTempTablesInfo,

    otExternalTablesInfo, otSystemViewsInfo,

    otTableConstraints, otTablePrivileges,

    otLinkedServers, otAssemblies,

    otAssemblyDependencies,

    otUserTypes, otXMLCollections);

property ObjectType: TMSObjectType;

Description

Use ObjectType property to specify object type which metadata information is requested for to retrieve from the server.

Following table lists for each object type names of applicable restriction properties (marked with '+' sign if applicable) and also equivalent schema rowset name as it's described in Microsoft's MSDN OLE DB Library (see oledb.chm file for in-depth information on each object type).

ObjectType value	Restrictions	MSDN OLE DB schema rowset name
otAliases	DatabaseName, SchemaName, TableName	TABLES Rowset
otAliasesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otAssemblies	DatabaseName, SchemaName, AssemblyName, AssemblyID	DBSCHEMA_SQL_ASSEMBLIES Rowset
otAssemblyDependencies	DatabaseName, SchemaName, AssemblyID, ReferencedAssemblyID	DBSCHEMA_SQL_ASSEMBLY_DEPENDENCIES Rowset
otColumnPrivileges	DatabaseName, SchemaName, TableName, ColumnName	COLUMN_PRIVILEGES Rowset
otCheckConstraints	DatabaseName, SchemaName, ConstraintName	CHECK_CONSTRAINTS Rowset
otCheckConstraintsByTable	DatabaseName, SchemaName, TableName, ConstraintName	CHECK_CONSTRAINTS_BY_TABLE Rowset
otColumns	DatabaseName, SchemaName, TableName, ColumnName	COLUMNS Rowset
otDatabases	DatabaseName	CATALOGS Rowset
otExternalTablesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otForeignKeys	DatabaseName, SchemaName, TableName	FOREIGN_KEYS Rowset
otGlobalTempTables	DatabaseName, SchemaName, TableName	TABLES Rowset
otGlobalTempTablesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otIndexes	DatabaseName, SchemaName, TableName	INDEXES Rowset
otLinkedServers	LinkedServer	DBSCHEMA_LINKEDSERVERS Rowset
otLocalTempTables	DatabaseName, SchemaName, TableName	TABLES Rowset
otLocalTempTablesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otPrimaryKeys	DatabaseName, SchemaName, TableName	PRIMARY_KEYS Rowset
otSchemata	DatabaseName, SchemaName	SCHEMATA Rowset
otServerTypes		PROVIDER_TYPES Rowset
otStatistics	DatabaseName, SchemaName, TableName	STATISTICS Rowset
otStoredProcParams	DatabaseName, SchemaName, StoredProcName	PROCEDURE_PARAMETERS Rowset
otStoredProcs	DatabaseName, SchemaName, StoredProcName	PROCEDURES Rowset
otSynonyms	DatabaseName, SchemaName, TableName	TABLES Rowset
otSynonymsInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otSystemTables	DatabaseName, SchemaName, TableName	TABLES Rowset
otSystemTablesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otSystemViews	DatabaseName, SchemaName, TableName	TABLES Rowset
otSystemViewsInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otTableConstraints	DatabaseName, SchemaName, TableName, ConstraintName	TABLE_CONSTRAINTS Rowset
otTablePrivileges	DatabaseName, SchemaName, TableName	TABLE_PRIVILEGES Rowset
otTables	DatabaseName, SchemaName, TableName	TABLES Rowset
otTablesInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otTableStatistics	DatabaseName, SchemaName, TableName, StatisticsName	TABLE_STATISTICS Rowset
otViews	DatabaseName, SchemaName, TableName	TABLES Rowset
otViewsInfo	DatabaseName, SchemaName, TableName	TABLES_INFO Rowset
otUserTypes	DatabaseName, SchemaName, UDTName	DBSCHEMA_SQL_USER_TYPES Rowset
otXMLCollections	DatabaseName, SchemaName, SchemaCollectionName, TargetNamespaceURI	DBSCHEMA_XML_COLLECTIONS Rowset
See Also

DatabaseName

SchemaName

TableName

StoredProcName

ColumnName

IndexName

ConstraintName


ReferencedAssemblyID
TMSMetadata.ReferencedAssemblyID

TMSMetadata

property ReferencedAssemblyID: integer;

Description

ReferencedAssemblyID property specifies ID of the referenced assembly which together with AssemblyName, AssemblyID, schema, database and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

AssemblyName

AssemblyID

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


SchemaCollectionName
TMSMetadata.SchemaCollectionName

TMSMetadata

property SchemaCollectionName: string;

Description

SchemaCollectionName property specifies name of the XML schema collection which together with schema and database names and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName

TargetNamespaceURI


SchemaName
TMSMetadata.SchemaName

TMSMetadata

property SchemaName: string;

Description

SchemaName property specifies schema name which together with table, database and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

TableName

StoredProcName

ColumnName

IndexName

ConstraintName


StoredProcName
TMSMetadata.StoredProcName

TMSMetadata

property StoredProcName: string;

Description

StoredProcName property specifies stored procedure name which together with table, schema and database names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

TableName


TableName
TMSMetadata.TableName

TMSMetadata

property TableName: string;

Description

TableName property specifies table name which together with schema, database and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


TargetNamespaceURI
TMSMetadata.TargetNamespaceURI

TMSMetadata

property SchemaCollectionName: string;

Description

TargetNamespaceURI property specifies name of the XML schema collection which together with schema and database names and/or other optional names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName

SchemaCollectionName


UDTName
TMSMetadata.UDTName

TMSMetadata

property UDTName: string;

Description

UDTName property specifies name of the User-Defined Type which together with schema and database names constitutes object type descriptor that is used to retrieve metadata information from server.

Refer to ObjectType property to get complete listing of all object types to which this property is applicable. In all other cases this property is merely ignored.

See Also

ObjectType

DatabaseName

SchemaName

StoredProcName

ColumnName

IndexName

ConstraintName


Description
TMSParam

Hierarchy	Properties

Unit

MSAccess

Description

TMSParam objects are used to describe individual parameters passed with queries or stored procedures. TMSParam class is designed to work with SQL Server and its instances are managed by TMSParams class.

Properties and methods of TMSParam class are analogous to those of TParam class.

See also

TParam

TMSParams


Size
TMSParam.Size

TMSParam

property Size: integer;

Description

Specifies the size of a string type parameter. Set Size to indicate the maximum number of characters the parameter may contain. Use Size property only for Output parameters of ftString, ftFixedChar, ftBytes, ftVarBytes or ftWideString type.


Description
TMSParams

Hierarchy

Unit

MSAccess

Description

Descendants of TCustomMSDataset class use TMSParams objects to specify parameters for queries and stored procedures. TMSParams is designed to work with data sources of SQL Server databases and has the same properties and methods found in TParams class.

Note:	TMSParams manages lists of TMSParam objects, not TParam.

See also

TParams

TMSParam


Description
TMSServiceBroker

Hierarchy	Properties	Methods	Events

Unit

MSServiceBroker

Description

The TMSServiceBroker component lets you send and receive messages within the SQL Server 2005 Service Broker system.

TMSServiceBroker supports synchronous and asynchronous messages receiving. Each message belongs to a conversation.

Before using Service Broker system with a database, you should activate Message Delivery

See Also

MSDN: Introducing Service Broker

TMSConversation

TMSMessage

TMSConnection


AsyncNotification
TMSServiceBroker.AsyncNotification
TMSServiceBroker

property AsyncNotification: boolean;

Description

If AsyncNotification is set to True, messages will be received asynchronously in a separate thread. Each message receiving in asynchronous mode triggers the OnMessage event. For working in asynchronous mode, an addition connection to the server is automatically created.

Default value is False.

See Also

OnMessage

Receive


Connection
TMSServiceBroker.Connection
TMSServiceBroker

property Connection: TMSConnection;

Description

Use Connection to specify a connection object to use to connect to the server.

Set at design time by selecting from the list of available connection objects.

At runtime, set the Connection property to an instance of TMSConnection object.

See Also

TMSConnection


ConversationCount
TMSServiceBroker.ConversationCount
TMSServiceBroker

property ConversationCount: integer;

Description

Conversations count in the Conversations list.

See Also

Conversations

BeginDialog

CurrentMessage

Receive

OnBeginConversation

OnEndConversation


Conversations
TMSServiceBroker.Conversations
TMSServiceBroker

property Conversations[Index: Integer]: TMSConversation;

Description

This property stores list of the available conversations. A new conversation object can be added to this list in two ways:

    - when calling the BeginDialog method;

    - when receiving an incoming message.

Note: This list is not synchronized with the list on the server. For example, if an initiator have created a conversation instance (by calling the BeginDialog method), a conversation instance on the target side will be created only after receiving the first message.

Analogously, when receiving a message with the SEndDialogType or SErrorType message type, the conversation on the server is already completed. But this conversation will be removed from the list after the next call to the Receive method.

See Also

ConversationCount

BeginDialog

CurrentMessage

Receive

OnBeginConversation

OnEndConversation


CurrentMessage
TMSServiceBroker.CurrentMessage
TMSServiceBroker

property CurrentMessage: integer;

Description

The current message, received by the Receive method.

See Also

Conversations

BeginDialog

CurrentMessage

Receive

OnBeginConversation

OnEndConversation


FetchRows
TMSServiceBroker.FetchRows
TMSServiceBroker

property FetchRows: integer;

Description

Determines, how many rows will be received from the server per time.

See Also

Receive

TMSMessage


Queue
TMSServiceBroker.Queue
TMSServiceBroker

property Queue: string;

Description

This property determines queue for the specified service.

See Also

Service

GetQueueNames

MSDN: CREATE QUEUE


Service
TMSServiceBroker.Service
TMSServiceBroker

property Service: string;

Description

The service name which will be used for sending and receiving messages.

See Also

Queue

GetServiceNames

TMSConversation.FarService

MSDN: CREATE SERVICE


WaitTimeout
TMSServiceBroker.WaitTimeout
TMSServiceBroker

property WaitTimeout: integer;

Description

If the Receive method was called and there are no messages on the server, it will wait until at least one message arrives or WaitTimeout expires. The WaitTimeout is measured in milliseconds.

Possible values of WaitTimeout are the following:

Value 	Meaning

  -1	Do not wait (default value).

  0	Wait for infinite interval while at least one message arrives.

  1 and more	Wait for the specified interval or until a message arrives.

See Also

Receive


BeginDialog
TMSServiceBroker.BeginDialog

TMSServiceBroker

function BeginDialog(

           const TargetService: string;

           const TargetDatabase: string = '';

           const UseEncryption: boolean = True;

           RelatedConversation: TMSConversation = nil

           const LifeTime: integer = 0;

           const Contract: string = '';

           ): TMSConversation; overload;

function BeginDialog(

           const TargetService: string;

           const TargetDatabase: string = '';

           const UseEncryption: boolean = True;

           const GroupId: TGuid;

           const LifeTime: integer = 0

           const Contract: string = '';

           ): TMSConversation; overload;

Description

These overloaded methods initiates a dialog from one service to another service. A dialog is a conversation that provides messaging between two services.

Use BeginDialog to create an instance of the TMSConversation class. The new instance will be created with the IsInitiator property assigned to True.

Below are listed parameter descriptions:

Parameter	Description

TargetService	The target service name which initiate the dialog with.

TargetDatabase 	Specifies the database name that the target service hosts.

UseEncryption 	Specifies whether messages within the conversation must be encrypted. When set to True (default value), it may require applying additional server settings.

RelatedConversation	Already existent conversation, which group should join the new conversation. If this parameter is not set, a new group will be created.

GroupId	Unique identifier of an existent group, which should join in the new conversation.

Contract	Specifies the name of the contract that the conversation conforms to. If the parameter is not set, the DEFAULT contract is used.

LifeTime	Specifies the maximum time interval (in seconds) while the dialog remains open. After this interval expires, the dialog automatically closes. A zero LifeTime value represents an infinity interval. This is the default value.

See also:
TMSConversation

TMSConversation.EndConversation

TMSConversation.IsInitiator

Conversations

MSDN: BEGIN DIALOG CONVERSATION


CreateServerObjects
TMSServiceBroker.CreateServerObjects

TMSServiceBroker

procedure CreateServerObjects;

Description

If there are no such objects on the server, the service and the queue will be created on the server. These objects are created with default settings (any messages can be transferred in any direction). The queue name are generated by concatenating the service name and the '_Queue' prefix.

See Also

DropServerObjects

Service

Queue


DropServerObjects
TMSServiceBroker.DropServerObjects

TMSServiceBroker

procedure DropServerObjects;

Description

This method removes both the service with the name assigned to the Service property and the queue with the name: Service name + '_Queue'.

See Also

CreateServerObjects

Service

Queue


GetContractNames
TMSServiceBroker.GetContractNames

TMSServiceBroker

procedure GetContractNames(List: TStrings);

Description

Call GetContractNames method to get contract names from the server.

See Also

GetServiceNames

GetQueueNames

GetMessageTypeNames

TMSConversation.ContractName


GetMessageTypeNames
TMSServiceBroker.GetMessageTypeNames

TMSServiceBroker

procedure GetMessageTypeNames(List: TStrings);

Description

Call GetMessageTypeNames to get names of message types from the server.

See Also

GetServiceNames

GetContractNames

GetQueueNames

Send


GetQueueNames
TMSServiceBroker.GetQueueNames

TMSServiceBroker

procedure GetQueueNames(List: TStrings);

Description

Call GetQueueNames to get queue names from the server.

See Also

GetServiceNames

GetContractNames

GetMessageTypeNames


GetServiceNames
TMSServiceBroker.GetServiceNames

TMSServiceBroker

procedure GetServiceNames(List: TStrings);

Description

Call GetServiceNames to get service names from the server.

See Also

GetQueueNames

GetContractNames

GetMessageTypeNames

Service

TMSConversation.FarService


Receive
TMSServiceBroker.Receive

TMSServiceBroker

function Receive(Conversation: TMSConversation = nil): boolean;

Description

The Receive method is designed for receiving messages from the queue on the server from the specified service. You can get access to the current message using the CurrentMessage property.

If the Receive method returns False, there are no more messages on the server. So, the CurrentMessage will be nil.

Synchronous mode (AsyncNotification is False)

In this mode, after calling the Receive method, up to FetchRows messages are received from the server. The CurrentMessage property will point to the first message of the received ones. The subsequent calls to Receive will not lead to the server round trips, while there are messages in cache. This mode is enabled by default.

If the Conversation parameter is assigned, only messages of this conversation will be received.

Example for using Receive in synchronous mode:

while MSServiceBroker.Receive do

  Process(MSServiceBroker.CurrentMessage);

Synchronous mode (AsyncNotification is True)

In this mode messages from the server are received in a separate thread and are put into a local queue. Calls to Receive itself do not lead to the server round trips.

The Conversation parameter can not be used in asynchronous mode.

See Also

Service

FetchRows

CurrentMessage

AsyncNotification

TMSMessage

TMSConversation

RECEIVE


OnBeginConversation
TMSServiceBroker.OnBeginConversation

TMSServiceBroker

type

  TMSConversationBeginEvent = procedure(Sender: TObject; Conversation: TMSConversation) of object;

property OnBeginConversation: TMSConversationBeginEvent;

Description

The OnBeginConversation event occurs when creating a new object of the TMSConversation class.

See Also

TMSConversation


OnEndConversation
TMSServiceBroker.OnEndConversation

TMSServiceBroker

type

  TMSConversationEndEvent = procedure(Sender: TObject;

                                      Conversation: TMSConversation;

                                      ErrorMessage: string;

                                      ErrorCode: integer) of object;

property OnEndConversation: TMSConversationBeginEvent;

Description

The OnEndConversation event occurs when closing an existent conversation. The conversation can be closed due to the following reasons:

    - The EndConversation method is called.

    - A message with the SEndDialogType or SErrorType message type is received.

See Also

TMSConversation


OnMessage
TMSServiceBroker.OnMessage

TMSServiceBroker

type

  TMSMessageEvent = procedure(Sender: TObject) of object;

property OnMessage: TMSMessageEvent;

Description

The OnMessage event occurs when a new message is received in asynchronous mode (AsyncNotification is set to True).

This event is called in the context of the main thread.

Example:

  procedure TForm1.MSServiceBrokerMessage(Sender: TObject);

  begin

    while MSServiceBroker.Receive do

      Process(MSServiceBroker.CurrentMessage);

  end;

See Also

AsyncNotification

Receive


Description
TMSQuery

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

TMSQuery is a direct descendant of TCustomMSDataSet component. It publishes most of its inherited properties and events so that they can be manipulated at design time.

Use TMSQuery's functionality to fetch/update database tables using DML SQL statements. Set SQL, SQLInsert, SQLDelete, SQLRefresh and SQLUpdate properties to define SQL statements for subsequent accesses to database server. There is no restriction on their syntax, so any of SQL statement is allowed. Usually you need to use INSERT, DELETE and UPDATE statements but you also may use stored procedures in more diverse cases.

SQLInsert, SQLDelete, SQLUpdate, SQLRefresh properties support automatic binding of parameters which have identical names to fields captions. To retrieve the value of a field as it was before operation use the field name with 'OLD_' prefix. This is especially useful when doing field comparisons in the WHERE clause of the statement. Use BeforeUpdateExecute event to assign value to additional parameters and AfterUpdateExecute event to read them.

If any of SQLInsert, SQLDelete or SQLUpdate properties is undefined TMSQuery implicitly generates it on demand before applying corresponding modification to a database. This largely depends on UpdatingTable property.

See also

Query demo project

UpdatingTable

TCustomMSDataSet

TCustomMSTable

TCustomMSStoredProc

Performance of obtaining data

Working with master/detail relationships


UpdatingTable
TMSQuery.UpdatingTable

TMSQuery

property UpdatingTable: string;

Description

Specifies which table in a query is assumed to be the target for subsequent data-modification queries as a result of user incentive to insert, update or delete records.

Property UpdatingTable is used on Insert, Update, Delete or RefreshRecord (see also Options.FullRefresh) if appropriate SQL (SQLInsert, SQLUpdate or SQLDelete) is not provided.

If UpdatingTable is not set then the first table used in query is assumed to be the target.

If the query is addressed to the View then entire View is taken as a target for subsequent modifications.

All fields from other than target table have their ReadOnly properties set to True (if Options.SetFieldsReadOnly is True).

With server cursors UpdatingTable can be used only if Options.CursorUpdate = False.

Example 1

For the query:

  SELECT OrderID, ShipName FROM Orders;

the only allowed value for UpdatingTable property is 'Orders'.

Example 2

For the query:

  SELECT A.OrderID, A.ShipName, B.Quantity FROM Orders A,

[Order Details] B WHERE (A.OrderID=B.OrderID);

allowed values for UpdatingTable are 'Orders' and 'Order Details'. In the first case (or on default) editable field is ShipName, in the second – Quantity field.


Description
TMSScript

Hierarchy	Properties	Methods	Events

Unit

MSScript

Description

Often it is necessary to execute several SQL statements one by one. Known way is using a lot of components such as TMSSQL. Usually it isn't a good solution. With only one TMSScript component you can execute several SQL statements as one. To separate single statements use semicolon (;), slash (/) or keyword 'GO'.  Note that slash must be first character in the line.

Errors that occur while execution can be processed in OnError event handler. By default, on error TMSScript shows exception and continues execution.

If you need to create several Stored Procedures (Functions) at the single script, use slash (/) to separate commands for creating stored procedures.

See Also

TMSSQL


Connection
TMSScript.Connection

TMSScript

property Connection: TMSConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TMSConnection objects.

At run-time, set Connection property to reference an existing TMSConnection object.

See Also

TMSConnection


DataSet
TMSScript.DataSet

TMSScript

property DataSet: TCustomMSDataSet;

Description

Set DataSet property if you need to retrieve the results of SELECT statements execution inside a script.

See Also

Execute


UseOptimisation
TMSScript.UseOptimization

TMSScript

property UseOptimization: boolean;

Description

If UseOptimization property is set, small queries will be united into blocks for block executing if possible. The UseOptimization option does not afect the ExecuteNext method performance. It works only for the Execute method.


Description
TMSSQL

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

Use TMSSQL to access database server using SQL statements.

TMSSQL object in a client application is used mainly to execute SQL statements or call stored procedures on a database server. The SQL statement should not retrieve records from a database since TMSSQL does not provide storage for returned data.

See Also

TMSQuery


CommandTimeout
TMSSQL.CommandTimeout

TMSSQL

property CommandTimeout: integer;

Description

Specifies amount of time to attempt execution of a command.

Use CommandTimeout to specify the amount of time that expires before an attempt to execute a command is considered unsuccessful. Measured in seconds.

If a command is successfully executed prior to the expiration of the seconds specified, CommandTimeout has no effect.

The default value is 0 (infinite).

See also:

TMSConnection.ConnectionTimeout


Connection
TMSSQL.Connection

TMSSQL

property Connection: TMSConnection;

Description

Use Connection to specify a connection object to use to connect to a data store.

Set at design-time by selecting from the list of provided TMSConnection descendant objects.

At runtime, set Connection property to reference an existing object of a TMSConnection descendant.

See also:

TMSConnection


NonBlocking
TMSSQL.NonBlocking

TMSSQL

property NonBlocking: boolean;

Description

Set the NonBlocking option to True to execute a SQL statement in a separate thread.


Params
TMSSQL.Params

TMSSQL

property Params: TMSParams;

Description

Contains the parameters for a query's SQL statement.

Access Params at runtime to view and set parameter names, values, and data types dynamically (at design time use the Parameters editor to set parameter information). Params is a zero-based array of parameter records. Index specifies the array element to access.

An easier way to set and retrieve parameter values when the name of each parameter is known is to call ParamByName.

See Also

TMSParam

ParamByName


PermitPrepare
TMSSQL.PermitPrepare

TMSSQL

property PermitPrepare: boolean;

Description

This option is out of date and isn't supported any more. The default behavior is the same to that when PermitPrepare set to False. To get the same behaviour as PermitPrepare set to True you need execute TMSSQL.Prepare method explicitly.


BreakExec
TMSSQL.BreakExec

TMSSQL

procedure BreakExec;

Description

Call BreakExec to break execution of the SQL statement on the server.

It makes sense to call BreakExec only from another thread.

See Also

Execute

TMSConnection.OnInfoMessage

TCustomMSDataSet.BreakExec


ExecuteForXML
TMSSQL.ExecuteForXML

TMSSQL

type

  TOLEDBOutputEncoding = (oeANSI, oeUTF8, oeUnicode);

procedure ExecuteForXML(out XML: string); overload;

procedure ExecuteForXML(out XML: UTF8String); overload;

procedure ExecuteForXML(out XML: WideString); overload;

procedure ExecuteForXML(Stream: TStream; OutputEncoding: TOLEDBOutputEncoding); overload;

Description

SQL Server returns data in specific format when queries with the FOR XML clause are opened using the TDataSet.Open method. In order to obtain data in readable view for SELECT statements written with use of the FOR XML clause, you should use on of these overloaded procedures.

See Also

Execute

MSDN: Guidelines for Using the FOR XML Clause


FindParam
TMSSQL.FindParam

TMSSQL

function FindParam(Name: String): TMSParam;

Description

Call FindParam to determine if parameter with the specified name exists in a dataset. Name is the name of the param for which to search. If FindParam finds a param with a matching name, it returns the TMSParam object for the specified Name. Otherwise it returns nil.

See Also

Params

ParamByName


ParamByName
TMSSQL.ParamByName

TMSSQL

Accesses parameter information based on a specified parameter name.

function ParamByName(Name: String): TMSParam;

Description

Call ParamByName to set or use parameter information for a specific parameter based on its name. Name is the name of the parameter for which to retrieve information. ParamByName is used to set an parameter's value at runtime and returns TMSParam object. For example, the following statement retrieves the current value of a parameter called "Contact" into an edit box:

Example

Edit1.Text := MSSQL1.ParamsByName('Contact').AsString;

See Also

TMSParam

Params

FindParam


Prepare
TMSSQL.Prepare

TMSSQL

procedure Prepare;

Description

Call Prepare to allocate, open and parse cursor for the query. Calling Prepare before multiple executing a query improves application performance.

SQL statements which have output parameters and aren't stored procedures calls or some of system functions such as sp_setapprole should be executed without prior call of Prepare method.

The UnPrepare method unprepares a query.

Note

When you change the text of a query at runtime, the query is automatically unprepared.

See Also

Prepared

UnPrepare


Description
TMSSQLMonitor

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

Use TMSSQLMonitor to monitor dynamic SQL execution in SDAC based applications. TMSSQLMonitor provides two ways of displaying debug information: monitoring with dialog window or by Borland's SQL Monitor. Furthermore to receive debug information use OnSQL event. Also it is possible to use all these ways at the same time, though an application may instanciate only one TMSSQLMonitor object. If an application has none of these objects, TMSSQLMonitor dialog window is available to display debug information.

See Also

TCustomDADataSet.Debug

TCustomDASQL.Debug


Description
TMSStoredProc

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

Use TMSStoredProc to access stored procedures on a database server.

You need only to define StoredProcName property, while not bothering about writing SQL statement by hand.

Use Execute method at runtime to generate request that instructs server to execute procedure and return parameters in Params property.

To call stored proc with default value for IN parameter, use following syntax:

MSStoredProc.ParamByName('ParamWithDefaultValue').Bound := False;

MSStoredProc.ExecProc;

Replace "ParamWithDefaultValue" with the name of the required parameter.

See also

TCustomMSStoredProc

TCustomMSDataSet

TMSQuery

TMSSQL

Performance of obtaining data

Working with master/detail relationships


Description
TMSTable

Hierarchy	Properties	Methods	Events

Unit

MSAccess

Description

Use TMSTable to access data in a table or view. TMSTable provides properties and methods to gain direct access to records and fields in an underlying server database without writing SQL statements.

See also

TMSQuery

TCustomMSTable

TCustomMSDataSet

Performance of obtaining data

Working with master/detail relationships


Description
TMSUpdateSQL

Hierarchy	Properties	Methods

Unit

MSAccess

Description

Use a TMSUpdateSQL object to provide SQL statements used to update read-only datasets represented by TMSQuery, TMSTable or TMSStoredProc components when cached updates are enabled. TMSUpdateSQL replaces behavior introduced by TUpdateSQL component and comprises functionally equivalent properties and methods.

See Also

TUpdateSQL


Description
TMSXMLField

Hierarchy	Properties

Unit

MSAccess

Description

TMSXMLField provides access to SQL Server 2005 xml data type. TMSXMLField.DataType property values equal to ftXML. You can access actual XML document using AsString and XML properties.


SchemaCollection
TMSXMLField.SchemaCollection

TMSXMLField

type

  TMSSchemaCollection = record

    Name: string;

    CatalogName: string;

    SchemaName: string;

  end;

property SchemaCollection: TMSSchemaCollection;

Description

Contains following XML schema information about typed XML column.

Name	The name of a catalog in which an XML schema collection is defined. Empty for or untyped XML column.

CatalogName	The name of a schema in which an XML schema collection is defined. Empty for a untyped XML column.

SchemaName	The name of XML schema collection. Empty for a untyped XML column.

See Also

Typed


Typed
TMSXMLField.Typed

TMSXMLField

property Typed: boolean;

Description

Indicates whether XML column is typed or not. If XML column is typed, SchemaCollection property is filled.

See Also

SchemaCollection


XML
TMSXMLField.XML

TMSXMLField

property XML: string;

Description

Returns XML document or fragment of XML document as string.


Hierarchy

TObject

Exception

EDatabaseError


EDAError_Properties
EDAError properties

EDAError	Legend

In EDAError

			ErrorCode
Derived from Exception

			HelpContext
			Message


Scope

Published

Protected

Accessibility

Read only


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


DADataAdapter_Properties
DADataAdapter properties

DADataAdapter

In DADataAdapter

			DataSet


DADataAdapter_Methods
DADataAdapter methods

DADataAdapter

In DADataAdapter

	Fill
	Update


Hierarchy

TObject

TPersistent

TSharedObject

Hierarchy Chart


TBlob_Methods
TBlob methods

TBlob

In TBlob

	Assign
	Clear
	LoadFromFile
	LoadFromStream
	Read
	SaveToFile
	SaveToStream
	Truncate
	Write
Derived from TSharedObject

	AddRef
	Release
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TBlob_Properties
TBlob properties

TBlob

In TBlob

			AsString
			AsWideString
			Size
			IsUnicode
Derived from TSharedObject

			RefCount


Hierarchy

TObject

TPersistent

TSharedObject

TBlob

Hierarchy Chart


TCompressedBlob_Methods
TCompressedBlob methods

TCompressedBlob

Derived fromTBlob

	Assign
	Clear
	LoadFromFile
	LoadFromStream
	Read
	SaveToFile
	SaveToStream
	Truncate
	Write
Derived from TSharedObject

	AddRef
	Release
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCompressedBlob_Properties
TCompressedBlob properties

TCompressedBlob	Legend

In TCompressedBlob

			Compressed
			CompressedSize
Derived from TBlob

			AsString
			AsWideString
			Size
			IsUnicode
Derived from TSharedObject

			RefCount


Hierarchy

TObject

TPersistent

TComponent

TDataSource

Hierarchy Chart


TCRBatchMove_Events
TCRBatchMove events

TCRBatchMove

In TCRBatchMove

	OnBatchMoveProgress


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


TCRBatchMove_Methods
TCRBatchMove methods

TCRBatchMove	Legend

In TCRBatchMove

	Execute
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCRBatchMove_Properties
TCRBatchMove properties

TCRBatchMove	Legend

In TCRBatchMove

			AbortOnKeyViol
			AbortOnProblem
			ChangedCount
			CommitCount
			Destination
			KeyViolCount
			Mappings
			Mode
			MovedCount
			ProblemCount
			RecordCount
			Source
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


TCustomConnectDialog_Methods
TCustomConnectDialog methods

TCustomConnectDialog

In TCustomConnectDialog

	Execute
	GetServerList


TCustomConnectDialog_Propertie
TCustomConnectDialog properties

TCustomConnectDialog	Legend

In TCustomConnectDialog

CancelButton

Caption

ConnectButton

DialogClass

LabelSet

PasswordLabel

Retries

SavePassword

ServerLabel

StoreLogInfo

UsernameLabel

Derived from TComponent

ComObject

ComponentCount

ComponentIndex

Components

ComponentState

ComponentStyle

DesignInfo

Name

Owner

Tag

VCLComObject


TCustomDAConnection_Events
TCustomDAConnection events

TCustomDAConnection

In TCustomDAConnection

	OnConnectionLost
	OnError
Derived from TCustomConnection

	AfterConnect
	AfterDisconnect
	BeforeConnect
	BeforeDisconnect
	OnLogin


Hierarchy

TObject

TPersistent

TComponent

TCustomConnection

Hierarchy Chart


TCustomDAConnection_Methods
TCustomDAConnection methods

TCustomDAConnection	Legend

In TCustomDAConnection

	ApplyUpdates
	Commit
	Connect
	CreateDataSet
	CreateSQL
	Disconnect
	ExecSQL
	GetDatabaseNames
	GetTableNames
	GetStoredProcNames
	MonitorMessage
	RemoveFromPool
	Rollback
	StartTransaction
Derived from TCustomConnection

	Close
	Open
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCustomDAConnection_Properties
TCustomDAConnection properties

TCustomDAConnection	Legend

In TCustomDAConnection

			ConnectDialog
			InTransaction
			Password
			Options
			Pooling
			PoolingOptions
			Server
			Username
Derived from TCustomConnection

			Connected
			DataSetCount
			DataSets
			LoginPrompt
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TCustomDADataSet_Events
TCustomDADataSet events

TCustomDADataSet	Legend

In TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

Hierarchy Chart


TCustomDADataSet_Methods
TCustomDADataSet methods

TCustomDADataSet	Legend

In TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TCustomDADataSet_Properties
TCustomDADataSet properties

TCustomDADataSet	Legend

In TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


TCustomDASQL_Events
TCustomDASQL events

TCustomDASQL	Legend

In TCustomDASQL

	AfterExecute


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


TCustomDASQL_Methods
TCustomDASQL methods

TCustomDASQL

In TCustomDASQL

	Execute
	Executing
	FindMacro
	FindParam
	MacroByName
	ParamByName
	Prepare
	UnPrepare
	WaitExecuting
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCustomDASQL_Properties
TCustomDASQL properties

TCustomDASQL	Legend

In TCustomDASQL

			AutoCommit
			Connection
			Debug
			FinalSQL
			MacroCount
			Macros
			ParamCheck
			ParamCount
			Params
			ParamValues
			Prepared
			RowsAffected
			SQL
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TCustomDASQLMonitor_Events
TCustomDASQLMonitor events

TCustomDASQLMonitor	Legend

In TCustomDASQLMonitor

	OnSQL


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


TCustomDASQLMonitor_Methods
TCustomDASQLMonitor methods

TCustomDASQLMonitor

Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCustomDASQLMonitor_Properties
TCustomDASQLMonitor properties

TCustomDASQLMonitor	Legend

In TCustomDASQLMonitor

			Active
			Options
			TraceFlags
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TComponent

Hierarchy Chart


TCustomDAUpdateSQL_Methods
TCustomDAUpdateSQL methods

TCustomDAUpdateSQL

In TCustomDAUpdateSQL

	Apply
	ExecSQL
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TCustomDAUpdateSQL_Properties
TCustomDAUpdateSQL properties

TCustomDAUpdateSQL	Legend

In TCustomDAUpdateSQL

			DataSet
			DeleteObject
			DeleteSQL
			InsertObject
			InsertSQL
			ModifyObject
			ModifySQL
			RefreshObject
			RefreshSQL
			SQL
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TCollection


TDAColumns_Properties
TDAColumns properties

TDAColumns

In TDAColumns

			Items


TDAColumn_Properties
TDAColumn properties

TDAColumn	Legend

In TDAColumn

			DataType
			FieldType
			Name


Hierarchy

TObject

TPersistent

TCollectionItem


Hierarchy

TObject

TPersistent

TComponent


TDADump_Methods
TDADump methods

TDADump

In TDADump

	Backup
	BackupQuery
	BackupToFile
	BackupToStream
	Restore
	RestoreFromFile
	RestoreFromStream
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TDADump_Properties
TDADump properties

TDADump	Legend

In TDADump

			Connection
			Debug
			Options
			SQL
			TableNames
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TDADump_Events
TDADump events

TDADump	Legend

In TDADump

	OnBackupProgress
	OnRestoreProgress


Hierarchy

TObject

TPersistent

TComponent


TDALoader_Methods
TDALoader methods

TDALoader

In TDALoader

	CreateColumns
	Load
	LoadFromDataSet
	PutColumnData
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TDALoader_Properties
TDALoader properties

TDALoader	Legend

In TDALoader

			Columns
			Connection
			TableName
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TDALoader_Events
TDALoader events

TDALoader	Legend

In TDALoader

	OnGetColumnData
	OnPutData


Hierarchy

TObject

TPersistent

TCollectionItem

TParam


TDAParam_Methods
TDAParam methods

TDAParam

In TDAParam

	LoadFromFile
	LoadFromStream
Derived from TParam

	Clear
	GetData
	GetDataSize
	SetBlobData
	SetData
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TDAParam_Properties
TDAParam properties

TDAParam	Legend

In TDAParam

			AsBlob
			AsBlobRef
			AsFloat
			AsInteger
			AsMemo
			AsMemoRef
			AsString
			DataType
			IsNull
			ParamType
			Size
			Value
Derived from TParam

			AsBCD
			AsFMTBCD
			AsBlob
			AsBoolean
			AsCurrency
			AsDate
			AsDateTime
			AsSmallInt
			AsSQLTimeStamp
			AsTime
			AsWord
			Bound
			NativeStr
			Text
			Precision
			NumericScale
			Name
Derived from TCollectionItem

			Collection
			DisplayName
			ID
			Index


Hierarchy

TObject

TPersistent

TCollection

TParams


TDAParams_Methods
TDAParams methods

TDAParams

In TDAParams

	FindParam
	ParamByName
Derived from TParams

	AssignValues
	AddParam
	RemoveParam
	CreateParam
	GetParamList
	IsEqual
	ParseSQL
Derived from TCollection

	Owner
	Add
	BeginUpdate
	Clear
	Delete
	EndUpdate
	FindItemID
	Insert
Derived from TPersistent

	Assign
	GetNamePath
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TDAParams_Properties
TDAParams properties

TDAParams

In TDAParams

			Items
Derived from TParams

			ParamValues
Derived from TCollection

			Count
			ItemClass


TDAScript_Events
TDAScript events

TDAScript	Legend

In TDAScript

	AfterExecute
	BeforeExecute
	OnError


Hierarchy

TObject

TPersistent

TComponent


TDAScript_Methods
TDAScript methods

TDAScript

In TDAScript

	BreakExec
	ErrorOffset
	Execute
	ExecuteFile
	ExecuteNext
	ExecuteStream
	FindMacro
	MacroByName
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TDAScript_Properties
TDAScript properties

TDAScript	Legend

In TDAScript

			Debug
			Delimiter
			EndLine
			EndOffset
			EndPos
			Macros
			StartLine
			StartOffset
			StartPos
			Statements
			SQL
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TCollectionItem


TDAStatement_Methods
TDAStatement methods

TDAStatement

In TDAStatement

	Execute


TDAStatement_Properties
TDAStatement properties

TDAStatement	Legend

In TDAStatement

			EndOffset
			EndPos
			Omit
			Params
			SQL
			StartOffset
			StartPos


Hierarchy

TObject

TPersistent

TCollection


TDAStatements_Properties
TDAStatements properties

TDAStatements

In TDAStatements

			Items


Hierarchy

TObject

TPersistent

TComponent

TField


Hierarchy

TObject

TPersistent

TCollectionItem


TMacro_Properties
TMacro properties

TMacro

In TMacro

			Active
			AsDateTime
			AsFloat
			AsInteger
			AsString
			Name
			Value


Hierarchy

TObject

TPersistent

TCollection


TMacros_Methods
TMacros methods

TMacros

In TMacros

	FindMacro
	MacroByName


TMacros_Properties
TMacros properties

TMacros	Legend

In TMacros

			Count
			Items


TMemDataSet_Events
TMemDataSet events

TMemDataSet

In TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

Hierarchy Chart


TMemDataSet_Methods
TMemDataSet methods

TMemDataSet

In TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmark
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TMemDataSet_Properties
TMemDataSet properties

TMemDataSet	Legend

In TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

Hierarchy Chart


TSharedObject_Methods
TSharedObject methods

TSharedObject

In TSharedObject

	AddRef
	Release
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TSharedObject_Properties
TSharedObject properties

TSharedObject

In TSharedObject

			RefCount


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

Hierarchy Chart


TVirtualTable_Methods
TVirtualTable methods

TVirtualTable

In TVirtualTable

	AddField
	Assign
	Clear
	DeleteField
	DeleteFields
	LoadFromFile
	LoadFromStream
	SaveToFile
	SaveToStream
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmark
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TVirtualTable_Properties
TVirtualTable properties

TVirtualTable	Legend

In TVirtualTable

			Options
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

Exception

EDatabaseError

EDAError

EOLEDBError


EMSError_Properties
EMSError properties

EMSError	Legend

In EMSError

			ErrorCode
			LastMessage
			LineNumber
			MSSQLErrorCode
			ProcName
			ServerName
			SeverityClass
			State
Derived from EOLEDBError

			ErrorCode
			ErrorCount
			Errors
			MessageWide
			OLEDBErrorCode
Derived from Exception

			HelpContext
			Message


Hierarchy

TObject

Exception

EDatabaseError

EDAError


EOLEDBError_Properties
EOLEDBError properties

EOLEDBError	Legend

In EOLEDBError

			ErrorCode
			ErrorCount
			Errors
			MessageWide
			OLEDBErrorCode

Derived from Exception

			HelpContext
			Message


Hierarchy

TObject

TPersistent

TComponent

DADataAdapter

Hierarchy Chart


MSDataAdapter_Methods
MSDataAdapter methods

MSDataAdapter

Derived from DADataAdapter

	Fill
	Update


MSDataAdapter_Properties
MSDataAdapter properties

MSDataAdapter

Derived from DADataAdapter

			DataSet


TCustomMSDataSet_Events
TCustomMSDataSet events

TCustomMSDataSet	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

Hierarchy Chart


TCustomMSDataSet_Methods
TCustomMSDataSet methods

TCustomMSDataSet	Legend

In TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TCustomMSDataSet_Properties
TCustomMSDataSet properties

TCustomMSDataSet	Legend

In TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


TCustomMSStoredProc_Events
TCustomMSStoredProc events

TCustomMSStoredProc	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

Hierarchy Chart


TCustomMSStoredProc_Methods
TCustomMSStoredProc methods

TCustomMSStoredProc	Legend

In TCustomMSStoredProc

	ExecProc
	PrepareSQL
Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TCustomMSStoredProc_Properties
TCustomMSStoredProc properties

TCustomMSStoredProc	Legend

In TCustomMSStoredProc

			StoredProcName
			UpdatingTable
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


TCustomMSTable_Events
TCustomMSTable events

TCustomMSTable	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

Hierarchy Chart


TCustomMSTable_Methods
TCustomMSTable methods

TCustomMSTable	Legend

In TCustomMSTable

	PrepareSQL
Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TCustomMSTable_Properties
TCustomMSTable properties

TCustomMSTable	Legend

In TCustomMSTable

			OrderFields
			TableName
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TCollectionItem

TDAColumn


Hierarchy

TObject

TPersistent

TComponent

TCustomConnectDialog

Hierarchy Chart


TMSConnectDialog_Methods
TMSConnectDialog methods

TMSConnectDialog

In TMSConnectDialog

	GetServerList
Derived from TCustomConnectDialog

	Execute


TMSConnectDialog_Properties
TMSConnectDialog properties

TMSConnectDialog	Legend

In TMSConnectDialog

			Connection
Derived from TCustomConnectDialog

			CancelButton
			Caption
			ConnectButton
			DialogClass
			LabelSet
			PasswordLabel
			Retries
			SavePassword
			ServerLabel
			StoreLogInfo
			UsernameLabel
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TMSConnection_Events
TMSConnection events

TMSConnection	Legend

In TMSConnection

	OnInfoMessage
Derived from TCustomDAConnection

	OnConnectionLost
	OnError
Derived from TCustomConnection

	AfterConnect
	AfterDisconnect
	BeforeConnect
	BeforeDisconnect
	OnLogin


Hierarchy

TObject

TPersistent

TComponent

TCustomConnection

TCustomDAConnection

Hierarchy Chart


TMSConnection_Methods
TMSConnection methods

TMSConnection	Legend

In TMSConnection

	CreateDataSet
	CreateSQL
Derived from TCustomDAConnection

	ApplyUpdates
	Commit
	Connect
	CreateDataSet
	CreateSQL
	Disconnect
	ExecSQL
	GetDatabaseNames
	GetTableNames
	GetStoredProcNames
	MonitorMessage
	RemoveFromPool
	Rollback
	StartTransaction
Derived from TCustomConnection

	Close
	Open
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSConnection_Properties
TMSConnection properties

TMSConnection	Legend

In TMSConnection

			Authentication
			ClientVersion
			ConnectionTimeout
			ConnectString
			Database
			IsolationLevel
			Options
			ServerVersion
Derived from TCustomDAConnection

			ConnectDialog
			InTransaction
			Password
			Pooling
			PoolingOptions
			Server
			Username
Derived from TCustomConnection

			Connected
			DataSetCount
			DataSets
			LoginPrompt
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject


TMSConnectionPoolManager_Methods
TMSConnectionPoolManager methods

TMSConnectionPoolManager

In TMSConnectionPoolManager

	AsyncClear
	Clear


Hierarchy

TObject

TMSConversation

Hierarchy Chart


TMSConversation_Methods
TMSConversation methods

TMSConversation	Legend

In TMSConversation

	EndConversation
	Send
	EndConversationWithError
	SendEmpty
	BeginTimer
	GetTransmissionStatus


TMSConversation_Properties
TMSConversation properties

TMSConversation	Legend

In TMSConversation

			Handle
			GroupId
			ServiceBroker
			FarService
			IsInitiator
			ContractName


Hierarchy

TObject

TPersistent

TComponent

TDataSource

TCRDataSource

Hierarchy Chart


TMSDump_Events
TMSDump events

TMSDump	Legend

Derived from TDADump

	OnBackupProgress
	OnRestoreProgress


Hierarchy

TObject

TPersistent

TComponent

TDADump

Hierarchy Chart


TMSDump_Methods
TMSDump methods

TMSDump

Derived from TDADump

	Backup
	BackupQuery
	BackupToFile
	BackupToStream
	Restore
	RestoreFromFile
	RestoreFromStream
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSDump_Properties
TMSDump properties

TMSDump	Legend

In TMSDump

			Connection
			Options
Derived from TDADump

			Connection
			Debug
			Options
			SQL
			TableNames
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TMSLoader_Events
TMSLoader events

TMSLoader	Legend

Derived from TDALoader

	OnGetColumnData
	OnPutData


Hierarchy

TObject

TPersistent

TComponent

TDALoader

Hierarchy Chart


TMSLoader_Methods
TMSLoader methods

TMSLoader

Derived from TDALoader

	CreateColumns
	Load
	LoadFromDataSet
	PutColumnData
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSLoader_Properties
TMSLoader properties

TMSLoader	Legend

In TMSLoader

			Connection
			KeepIdentity
			KeepNulls
			Options
Derived from TDALoader

			Columns
			TableName
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TMSMessage

Hierarchy Chart


TMSMessage_Properties
TMSMessage properties

TMSMessage	Legend

In TMSMessage

	AsString
	AsWideString
	AsBytes
	Conversation
	QueuingOrder
	MessageSequenceNumber
	MessageType
	IsEmpty
	Validation
	MessageId


TMSMetadata_Events
TMSMetadata events

TMSMetadata	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

Hierarchy Chart


TMSMetadata_Methods
TMSMetadata methods

TMSMetadata	Legend

Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TMSMetadata_Properties
TMSMetadata properties

TMSMetadata	Legend

In TMSMetadata

			AssemblyID
			AssemblyName
			ColumnName
			ConstraintName
			DatabaseName
			IndexName
			LinkedServer
			ObjectType
			ReferencedAssemblyID
			SchemaCollectionName
			SchemaName
			StoredProcName
			TableName
			TargetNamespaceURI
			UDTName
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TCollectionItem

TParam

TDAParam

Hierarchy Chart


TMSParam_Properties
TMSParam properties

TMSParam	Legend

In TMSParam

			Size
Derived from TDAParam

			AsBlob
			AsBlobRef
			AsFloat
			AsInteger
			AsMemo
			AsMemoRef
			AsString
			DataType
			IsNull
			ParamType
			Size
			Value
Derived from TParam

AsBCD

AsFMTBCD

AsBlob

AsBoolean

AsCurrency

AsDate

AsDateTime

AsSmallInt

AsSQLTimeStamp

AsTime

AsWord

Bound

NativeStr

Text

  Precision

  NumericScale

  Name

Derived from TCollectionItem

Collection

DisplayName

ID

Index


Hierarchy

TObject

TPersistent

TCollection

TParams

TDAParams

Hierarchy Chart


TMSQuery_Events
TMSQuery events

TMSQuery	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

Hierarchy Chart


TMSQuery_Methods
TMSQuery methods

TMSQuery	Legend

Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TMSQuery_Properties
TMSQuery properties

TMSQuery	Legend

In TMSQuery

			UpdatingTable
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


TMSScript_Events
TMSScript events

TMSScript	Legend

Derived from TDAScript

	AfterExecute
	BeforeExecute
	OnError


Hierarchy

TObject

TPersistent

TComponent

TDAScript

Hierarchy Chart


TMSScript_Methods
TMSScript methods

TMSScript

Derived from TDAScript

	BreakExec
	ErrorOffset
	Execute
	ExecuteFile
	ExecuteNext
	ExecuteStream
	FindMacro
	MacroByName
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSScript_Properties
TMSScript properties

TMSScript	Legend

In TMSScript

			Connection
			DataSet
			UseOptimization
Derived from TDAScript

			Debug
			Delimiter
			EndLine
			EndOffset
			EndPos
			Macros
			StartLine
			StartOffset
			StartPos
			Statements
			SQL
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TMSServiceBroker_events
TMSServiceBroker events

TMSServiceBroker	Legend

In TMSServiceBroker

	OnBeginConversation
	OnEndConversation
	OnMessage


Hierarchy

TObject

TPersistent

TComponent

TMSServiceBroker

Hierarchy Chart


TMSServiceBroker_methods
TMSServiceBroker methods

TMSServiceBroker	Legend

In TMSServiceBroker

	BeginDialog
	CreateServerObjects
	DropServerObjects
	GetContractNames
	GetMessageTypeNames
	GetQueueNames
	GetServiceNames
	Receive


TMSServiceBroker_properties
TMSServiceBroker properties

TMSServiceBroker	Legend

In TMSServiceBroker

	AsyncNotification
	Connection
	ConversationCount
	Conversations
	CurrentMessage
	FetchRows
	Queue
	Service
	WaitTimeout


TMSSQL_Events
TMSSQL events

TMSSQL	Legend

Derived from TCustomDASQL

	AfterExecute


Hierarchy

TObject

TPersistent

TComponent

TCustomDASQL

Hierarchy Chart


TMSSQL_Methods
TMSSQL methods

TMSSQL

In TMSSQL

	BreakExec
	FindParam
	ParamByName
	Prepare
Derived from TCustomDASQL

	Execute
	Executing
	FindMacro
	FindParam
	MacroByName
	ParamByName
	Prepare
	UnPrepare
	WaitExecuting
Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSSQL_Properties
TMSSQL properties

TMSSQL	Legend

In TMSSQL

			CommandTimeout
			Connection
			NonBlocking
			Params
			PermitPrepare
Derived from TCustomDASQL

			AutoCommit
			Connection
			Debug
			FinalSQL
			MacroCount
			Macros
			ParamCheck
			ParamCount
			Params
			ParamValues
			Prepared
			RowsAffected
			SQL
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TMSSQLMonitor_Events
TMSSQLMonitor events

TMSSQLMonitor	Legend

Derived from TCustomDASQLMonitor

	OnSQL


Hierarchy

TObject

TPersistent

TComponent

TCustomDASQLMonitor

Hierarchy Chart


TMSSQLMonitor_Methods
TMSSQLMonitor methods

TMSSQLMonitor

Derived from TComponent

	DestroyComponents
	Destroying
	ExecuteAction
	FindComponent
	FreeNotification
	FreeOnRelease
	GetNamePath
	GetParentComponent
	HasParent
	InsertComponent
	RemoveComponent
	SafeCallException
	UpdateAction
Derived from TPersistent

	Assign
Derived from TObject

	AfterConstruction
	BeforeDestruction
	ClassInfo
	ClassName
	ClassNameIs
	ClassParent
	ClassType
	CleanupInstance
	DefaultHandler
	Dispatch
	FieldAddress
	Free
	FreeInstance
	GetInterface
	GetInterfaceEntry
	GetInterfaceTable
	InheritsFrom
	InitInstance
	InstanceSize
	MethodAddress
	MethodName
	NewInstance


TMSSQLMonitor_Properties
TMSSQLMonitor properties

TMSSQLMonitor	Legend

Derived from TCustomDASQLMonitor

			Active
			Options
			TraceFlags
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Name
			Owner
			Tag
			VCLComObject


TMSStoredProc_Events
TMSStoredProc events

TMSStoredProc	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

TCustomMSStoredProc

Hierarchy Chart


TMSStoredProc_Methods
TMSStoredProc methods

TMSStoredProc	Legend

Derived from TCustomMSStoredProc

	ExecProc
	PrepareSQL
Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TMSStoredProc_Properties
TMSStoredProc properties

TMSStoredProc	Legend

Derived from TCustomMSStoredProc

			StoredProcName
			UpdatingTable
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


TMSTable_Events
TMSTable events

TMSTable	Legend

Derived from TCustomDADataSet

	AfterExecute
	AfterFetch
	AfterUpdateExecute
	BeforeFetch
	BeforeUpdateExecute
Derived from TMemDataSet

	OnUpdateError
	OnUpdateRecord
Derived from TDataSet

	AfterCancel
	AfterClose
	AfterDelete
	AfterEdit
	AfterInsert
	AfterOpen
	AfterPost
	AfterRefresh
	AfterScroll
	BeforeCancel
	BeforeClose
	BeforeDelete
	BeforeEdit
	BeforeInsert
	BeforeOpen
	BeforePost
	BeforeScroll
	OnCalcFields
	OnDeleteError
	OnEditError
	OnFilterRecord
	OnNewRecord
	OnPostError


Hierarchy

TObject

TPersistent

TComponent

TDataSet

TMemDataSet

TCustomDADataSet

TCustomMSDataSet

TCustomMSTable

Hierarchy Chart


TMSTable_Methods
TMSTable methods

TMSTable	Legend

Derived from TCustomMSTable

	PrepareSQL
Derived from TCustomMSDataSet

	BreakExec
	FindParam
	OpenNext
	ParamByName
	Prepare
	RefreshQuick
Derived from TCustomDADataSet

	AddWhere
	DeleteWhere
	Execute
	Executing
	Fetched
	Fetching
	FetchingAll
	FindKey
	FindMacro
	FindNearest
	FindParam
	GetDataType
	GetFieldObject
	GetFieldPrecision
	GetFieldScale
	GetOrderBy
	GotoCurrent
	MacroByName
	ParamByName
	Prepare
	RefreshRecord
	RestoreSQL
	SaveSQL
	SetOrderBy
	SQLSaved
Derived from TMemDataSet

	ApplyUpdates
	CancelUpdates
	CommitUpdates
	DeferredPost
	GetBlob
	Locate
	LocateEx
	Prepare
	RestoreUpdates
	RevertRecord
	SaveToXML
	UnPrepare
	UpdateResult
	UpdateStatus
Derived from TDataSet

	ActiveBuffer
	Append
	AppendRecord
	BookmarkValid
	Cancel
	CheckBrowseMode
	ClearFields
	Close
	CompareBookmarks
	ControlsDisable
	Create
	CreateBlobStream
	CursorPosChanged
	Delete
	Destroy
	DisableControls
	Edit
	EnableConrol
	FieldByName
	FindField
	FindFirst
	FindLast
	FindNext
	FindPrior
	First
	FreeBookmark
	GetBlobFieldData
	GetBookmark
	GetCurrentRecord
	GetDetailDataSets
	GetDetailLinkFields
	GetFiledData
	GetFieldList
	GetFieldName
	GotoBookmark
	Insert
	InsertRecord
	IsEmpty
	IsLinkedTo
	IsSequenced
	Last
	Locate
	Lookup
	MoveBy
	Next
	Open
	Post
	Prior
	Refresh
	Resync
	SetFields
	Translate
	UpdateCursorPos
	UpdateRecord
	UpdateStatus


TMSTable_Properties
TMSTable properties

TMSTable	Legend

Derived from TCustomMSTable

			OrderFields
			TableName
Derived from TCustomMSDataSet

			CommandTimeout
			Connection
			CursorType
			Options
			Params
			PermitPrepare
			SQLDelete
			SQLInsert
			SQLRefresh
			SQLUpdate
Derived from TCustomDADataSet

			AutoCommit
			BaseSQL
			Connection
			Debug
			DetailFields
			FetchAll
			FetchRows
			FilterSQL
			FinalSQL
			IsQuery
			MacroCount
			Macros
			MasterFields
			MasterSource
			Options
			ParamCheck
			ParamCount
			Params
			ReadOnly
			RefreshOptions
			RowsAffected
			SQL
			UniDirectional
			UpdateObject
Derived from TMemDataSet

			CachedUpdates
			LocalConstraints
			LocalUpdate
			IndexFieldNames
			Prepared
			UpdateRecordTypes
			UpdatesPending
Derived from TDataSet

			Active
			ActiveRecord
			AggFields
			AutoCalcFields
			BlobFieldCount
			BlockReadSize
			Bof
			Bookmark
			BookmarkSize
			BufferCount
			Buffers
			CalcBuffer
			CalcFieldsSize
			CanModify
			Constraints
			CurrentRecord
			DatasetField
			DataSource
			DefaultFields
			Designer
			Eof
			FieldCount
			FieldDefList
			FieldDefs
			FieldList
			Fields
			FieldValues
			Filter
			Filtered
			FilterOptions
			Found
			InternalCalcFields
			Modified
			Name
			NestedDataSetClass
			NestedDataSets
			ObjectView
			RecNo
			RecordCount
			RecordSize
			Reserved
			SparseArrays
			State
Derived from TComponent

			ComObject
			ComponentCount
			ComponentIndex
			Components
			ComponentState
			ComponentStyle
			DesignInfo
			Owner
			Tag
			VCLComObject


Hierarchy

TObject

TPersistent

TComponent

TField


TMSXMLField_Properties
TMSXMLField properties

TMSXMLField

In TMSXMLField

			SchemaCollection
			Typed
			XML