Copyright: Copyright (c) RemObjects Software, LLC. 2002-2006. All rights reserved.
Citation: Copyright (c) RemObjects Software, LLC. 2002-2006. All rights reserved.


RemObjects Data Abstract for Delphi


Welcome to Data Abstract

Topics

Data Abstract is an innovative data-access framework built upon the RemObjects SDK. It allows you to create multi-tier applications that access any database and provides a clear separation between data-access and business-logic.

Data Abstract is currently available in two distinct editions, for .NET (supporting .NET 2.0, the Compact Framework 2.0 and Mono) and Delphi (supporting Win32 and Linux/Kylix).

In .NET, Data Abstract wraps the native data providers of ADO.NET and provides a non-database-dependent interface; in Delphi, Data Abstract is a logical layer on top of existing component sets such as dbExpress, dbGo/ADO, IBObjects and CoreLab that encapsulates the data-access layer.

Thus, regardless of the platform, Data Abstract abstracts both the underlying database and the data access framework used.

Data Abstract for .NET and Data Abstract for Delphi are designed with portability in mind and are binary compatible, allowing you to mix Delphi servers with .NET clients, and vice versa.

Getting Started

If you are new to Data Abstract, please look at topics in the Programming with Data Abstract and our Tutorials , first. If you are an experienced user of DA/Delphi and moving to .NET, check out the Comparing .NET and Delphi Implementations of Data Abstract topic.

Contents of this help file

Separate help files are provided for the .NET and Delphi editions of the product. Many topics are identical or almost identical for the two editions, but there are some concepts which differ slightly between versions. This is highlighted by green/blue color coding for .NET/Delphi.

The top level topics provided in this help file consist of:

Welcome: this topic.

Overview of DA Components explains the various components provided by Data Abstract and how they fit together.

Programming with Data Abstract provides detailed introductions to the core concepts involved with Data Abstract and the underlying architecture that makes DA work.

Tools introduces you to the tools provided with Data Abstract, most notably the Schema Modeler.

Data Abstract Reference provides a detailed reference of the classes, methods and properties that make up the Data Abstract Library.

Samples gives a quick overview of the available sample projects and points out which samples are best reviewed to see particular features in action.

Links

Topics


Topics

Welcome to Data Abstract

Topics

What's New in Data Abstract

For a detailed list of changes and fixes in each updated release, please check the online Change Log for Data Abstract 4.0 for Delphi.

Overview of DA Components

The following components are provided by Data Abstract:


What's New in Data Abstract

Welcome to Data Abstract	Topics

For a detailed list of changes and fixes in each updated release, please check the online Change Log for Data Abstract 4.0 for Delphi.

Links

Welcome to Data Abstract, Topics


Topics

What's New in Data Abstract

Topics

Breaking Changes

This topic provides a list of breaking changes in new major versions of Data Abstract for Delphi, and points out areas that might need your attention when upgrading to new versions.


Breaking Changes

What's New in Data Abstract

This topic provides a list of breaking changes in new major versions of Data Abstract for Delphi, and points out areas that might need your attention when upgrading to new versions.

Breaking Changes in Data Abstract 4.0 for Delphi

The basic architecture Data Tables communicate with the server has bee enhanced by introducing a new TDARemoteDataAdapter component that encapsulates the remote calls. Please refer to the online article DA26 for detailed information and migration.

A new "v4.0 style" server interface is provided as default implementation for Data Abstract servers; this interface is improved for speed, easier data access and compatibility wit the edition for .NET. For backward compatibility, the old "v3.0" interface and base class is still provided, but has been deprecated and will be removed in future versions of DA. Again, please refer to the online article DA26 for detailed information and migration.

Minor Changes

Data Adapters have been renamed to Data Streamers; as such the components are now called TDABinDataStreamer and TDAXmlDataStreamer. The old *Adapter components are still available on the "Data Abstract (Legacy)" component palette.

Terminology has changed and "data sets" are now referred to as "data tables" in Schema, Schema Modeler and related places. This was done for consistency and compatibility with .NET. This change should not affect code.

The TDAWhere.OpenBraket/CloseBraket methods have been renamed to OpenBracket/CloseBracket to fix the typo; the old methods have been marked as deprecated and will be removed in a future version of DA (bug id #366).

Links

What's New in Data Abstract


Overview of DA Components

Welcome to Data Abstract

The following components are provided by Data Abstract:
Icon / Name / Unit	Description
Driver Manager	The TDADriverManager component manages the database drivers available in a Data Abstract server application, whether they are statically linked in or dynamically loaded from .DAD files.
Connection Manager	The TDAConnectionManager servers two related purposes. First, it maintains the list of connections defined for a particular Data Abstract server application and makes them available to the TDASchema and Schema Modeler for design-time purposes. Secondly, it maintains pools of active connections at runtime, forming the foundation of all server-side database and connection pooling.
Data Dictionary	The TDADataDictionary component is used to store a number of predefined field configurations (so called data dictionary entries, or data dictionary fields). These entries exhibit most of the properties of normal fields; however, they are not used to represent actual data fields, but are templates for the configuration if actual fields in the data tables of your schema.
TDASchema	The TDASchema component represents the complete or partial schema of your database, including the data tables and commands defined for it, and relationships between data tables. While you can edit the contents of a schema from code or in Object Inspector, Data Abstract provides the powerful Schema Modeler to make schema editing truly RAD.
Data Streamers	The data streamer components TDABinDataStreamer and TDAXmlDataStreamer component perform the task of reading and writing data and delta packets from and to a format that can be transmitted over the network between client and server
Data Tables	Client Data Tables are classes that hold live data on the client application at runtime, to make it available to application code and visual controls. They can be filled from a remote server,maintain a local history of changes and can apply those changes aback to the database. Data Abstract currently provides two concrete implementations of client data tables in the form of the TDACDSDataTable and TDAADODataTable components.
Data Source	TDADataSource is a descendant of the standard Delphi TDataSource component. Instead of linking standard TDataSets to visual database components, it performs this same task for TDADataTables.
Dataset Provider	TDADatasetProvider implements a DataSnap TDataSetProvider based on the TDADataTable class, allowing you to use data from a TDADataTable wherever a TDataSetProvider is expected.
Business Processor	TDABusinessProcessor provide the core logic for processing changes from client applications and applying them to the backend database.
Session Managers	TDADBSessionManager implements a session manager for RemObjects SDK that stores session data in a database accessed using Data Abstract.
Diagrams	The TDADiagrams component is used to store diagrams for a specific TDASchema. The component has no effect at runtime, its only purpose is to serve as a storage for the diagram visualization data available in Schema Modeler.
Cache	The TDACache component provides data caching for the legacy v3.0 TDARemoteService service implementation.
Script Providers	The TDAPSScriptingProvider forms the basis for Pascal Script integration in Data Abstract for Delphi.
Database Drivers	Database Drivers provide the connection between the Data Abstract Middle tier and the actual underlying back-end database. Drivers for many different types of databases are provided with Data Abstract, and new drivers can easily be created to access any custom database.
"Powered By" Button	Let the world know that you use Data Abstract by adding this button to your application's About Box. The button provides two views, featuring the client and the server icon. Clicking the button will launch the RemObjects Software website (www.remobjects.com) in the user's web browser.
Links

Welcome to Data Abstract


Programming with Data Abstract

Topics

This topic collection provides you with information about the architecture of Data Abstract and the concepts involved with writing Data Abstract applications.

Links

Topics


Topics

Programming with Data Abstract

Topics

Concepts

This topic collection provides you with information about the architecture of Data Abstract and the concepts involved with writing Data Abstract applications.

IDE Integration

Data Abstract for Delphi extends your Borland Delphi and Borland Developer Studio IDE to make creating Data Abstract applications as easy as possible.

The following IDEs are supported:

Comparing .NET and Delphi Implementations of Data Abstract

When development started on Data Abstract for .NET, it became clear very early that Data Abstract would need a completely new architecture to fit in with .NET and be a successful product in the .NET world. We decided that it wasn't sufficient just to port existing code that depended on Delphi or VCL classes not present in the .NET framework; we had to conform to .NET standards and re-engineer the library to feel natural to .NET developers.

Thus, the library of Data Abstract for .NET is very different from the Delphi version when you look at the code and classes... more


Concepts

Programming with Data Abstract	Topics

This topic collection provides you with information about the architecture of Data Abstract and the concepts involved with writing Data Abstract applications.

Links

Programming with Data Abstract, Topics


Topics

Concepts

Topics

Schemas

Data Abstract’s schemas are the foundation for both its unique approach to developing data-oriented multi tier systems and its cross-database support.

By creating schemas (which are then associated with a service), developers define a contract between a client application and the service. This contract defines what data elements (data tables and commands) are accessible to clients, how they are structured (their fields and parameters), how to apply updates (update rules) and how some of the data elements contained by the schema relate to each other (data table relationships).

When you create this contract, you define, for instance, that clients can... more

Database Drivers

Data Abstract for Delphi provides access to many different database systems, from the most common high-power databases such as Microsoft SQL Server and Oracle, over smaller database systems like Interbase/Firebird, PostgreSQL and MySQL to embedded databases such as DBISAM or NexusDB.

Support for each of these database systems is provided by database drivers, which are specifically written to connect Data Abstract to these databases, typically using existing, well-tested and time-proven data access components (DACs) such as dbGo (ADO), DBX, IBX or the thirdparty SDAC, ODAC, PostgresDAC, IBO and FIBPlus.

These drivers provide a common interface based in the IDAConnection, IDADataset and... more

Connection Pooling

Data Abstract provides connection pooling for server-side database connections through the ConnectionManager /TDAConnectionManager components.

Connection pooling increases performance in server applications shared by many clients, as connections can be shared among several clients to perform subsequent requests, rather than new connections having to be created and disposed repeatedly, which is a relatively costly process for most database systems.

Using connection pooling, once the server is finished with processing a request, the connection it used to communicate with the back-end database will be returned to a pool, where it can be redistributed to the next incoming request (which might be handled... more

Transaction Handling

Most modern databases provide support for transactions, to group several data modifications into one atomic action. An entire transaction either completes 100% successfully, or fails entirely, thus making sure that the database is not never left in an inconsistent state.

As the classic example, consider a database handling money transfers within a bank. To transfer money from one account to another, the database would reduce the balance for one account, and increase the balance for the other. For any one of these actions to fail on its own would be catastrophic, as money would have been lost (deducted from one... more

Command and Data Table Parameters

Data Abstract provides the concept of parameters to pass data to data tables and commands. Parameters can be used to filter the records retrieved from a data table for certain conditions (for example to only obtain details for a specific master record), to pass new data to insert/update/delete statements, or to simply provide parameters that a certain operation or stored procedure requires.

Regardless of the underlying database system and platform (.NET or Delphi), Data Abstract defines a standardized syntax for representing parameters in SQL statements, and exposes them in a consistent way using the DataParameter /TDAParam classes (... more

Where Clauses

Data Abstract provides the TDAWhere class to make it easy to dynamically build WHERE statements for your SQL queries. This class can be used both on the server for internal querying logic , as well as the client to pass conditions for data retrieval to the server.

In version 4.0 of Data Abstract, TDAWhere builds plain text WHERE clauses in SQL syntax, that will be transmitted to the server in plain text and directly applied. Because parsing and validating such a SQL WHERE clause is difficult (if not impossible), this leaves very little possibility for the server to inspect WHERE clauses... more

Master/Detail Relationships

Data Abstract actively supports tables in Master/Detail relationships, and provides options that make it easy to establish Master/Detail relationships between tables.

Updates

This topic explains how updates work in Data Abstract. It covers topics such as BusinessProcessors /TDABusinessProcessors, Deltas /IDADeltas, the RemoteDataAdapter /TDARemoteDataAdapter component and more.

Client Side Deltas

ADO.NET datasets (.NET) TDADataTables (Delphi) work in disconnected mode: any updates, deletions or inserts performed on them aren't immediately reflected in the underlying database, but are collected in a local cache instead. This cached list of changes is referred to as a “delta” and will eventually be streamed over to the server to be applied to the physical database.

This operation is commonly handled by... more

Cross Database Support

To understand how Data Abstract allows you to design systems that target multiple RDBMs (and even databases with different structures) we'll take a look at one of the samples that ships with Data Abstract: the Mega Demo (Currently only shipping with the edition for .NET; a version for Delphi will be provided in release 4.0.11).

The server project exposes two services (LoginService and OrdersService) that are capable of working with data stored in either Microsoft SQL Server’s Northwind and Interbase/Firebird's EMPLOYEES databases.

If you open the OrderService schema (by double click on the OrdersService.daSchema file in .NET... more

Business Rules Scripts

Business Rules Scripts provide the option to define specific rules and actions to be taken on the client to validate data input, without having to hard-code this logic into the client application.

With business rules scripts, the server can provide the business logic in form of Pascal language scripts as part of the schema, which will then be executed on the client using RemObjects Pascal Script 3.0 (included with Data Abstract).

This allows business rules to dynamically be updated on the server over time, without having to redeploy updated clients - all the client's need to do is use TDARemoteDataAdapter.... more

Dynamic Method Binding

Data Abstract's Dynamic Method Binding (DMB) is one of the major foundations of its architecture. It allows you to connect to remote service methods rather than forcing the use of pre-built interfaces.

Dynamic Method Binding provides a truly object oriented way to fetch data and, at the same time, increases design elegance because it does not restrict data-fetch to predefined (and often rigid) method calls.

Data Abstract's TDARemoteDataAdapter connects to the remote server by using the RemObjects SDK's remote service. All communication with the server (filling data, applying updates, retrieving schema info) are implemented using dynamic method binding, allowing... more


Schemas

Concepts	See Also

Data Abstract’s schemas are the foundation for both its unique approach to developing data-oriented multi tier systems and its cross-database support.

By creating schemas (which are then associated with a service), developers define a contract between a client application and the service. This contract defines what data elements (data tables and commands) are accessible to clients, how they are structured (their fields and parameters), how to apply updates (update rules) and how some of the data elements contained by the schema relate to each other (data table relationships).

When you create this contract, you define, for instance, that clients can access a list of customers or orders and how these rowsets are structured. You can then expand the schema by providing a column mapping to any number of specific SQL dialects for each of those rowsets (as discussed in more detail, below).

The schema information is helpful both at design-time and at run-time:

At design-time, the schema information is used to populate properties of the data service and the business processors, and to create strongly typed .XSD datasets (.NET) and fill meta data for TDADataTables (Delphi).

At run-time your client applications can obtain schema information from the server and use it, for example, to display a list of all the queries or commands that can be executed by the client. Server side, the information in the schema is used to generate the sometimes complex SQL statements needed to update your database, or to determine the order of client delta updates.

Data Tables and Commands

The most important elements of a schema are its data tables and commands. Data tables are the definitions of tabular row-sets commonly associated with a SELECT statement, while commands are elements that execute a specific action and don’t return a row set. Commands are commonly associated with INSERT, DELETE and UPDATE statements, but could also map to a stored procedure or other, more complex SQL code.

Data Abstract is different from most other data access frameworks in that it lets you associate multiple SQL statement to a data element. You can think of each of these statements as related to a specific SQL dialect or database layout. This is very important, as it forms the foundation of Data Abstract's cross database support.

For example, let’s assume you start developing using a Microsoft SQL server database and you define the Customers and OrdersByCustomer data tables. Their select statements might make use of some TSQL specific functions. If you were to add support for Oracle without a framework like Data Abstract, you would need to restructure your project to add support for PL-SQL syntax, to ensure that whenever opening the data tables you pick the right SQL statement, and so on. Data Abstract already provides this separation and logic inside the schema, so all you would need to do is to associate a new PL-SQL statement to the data tables – the application code does not need to worry about the differences, at all.

Schemas inside Data Abstract for .NET Projects

When you create a Data Abstract for .NET server project, one or more schemas are automatically placed in your source directory and added to your project as files with the .daSchema extension.

Data Abstract for .NET handles schema files as parts of your project, allowing them to be managed from Solution Explorer, and to be double-clicked to edit them, just like any other file in your project. When compiling your server project, the .daSchema files are embedded into your executable as resources so that they are available at runtime.

When your service tries to load a schema at runtime, the resource will be located by name.

Although the above scenario is probably the most common, there are situations where linking the schema into your executable might not be ideal: your application might need to work on a database structure that is determined by your customer or can change often. If this is the case, you might prefer to keep the .daSchema files external to your executable, so you will be able to edit them without having to rebuild your application.

To ensure that your schemas are not linked in the executable, change your Build Action to “None” and set “Copy to Output Directory” to “Copy if newer”. Next, implement the DataAbstractService .BeforeFindServiceSchema event to load the schema from disk manually, when needed.

It’s important to understand that although the list of connections is editable from inside the Schema Modeler application, this list is not stored in the schema file. It is stored instead in a file with the .daConnections extension. Please refer to the Drivers and Connections help topics for more information about .daConnection files.

Schemas inside Data Abstract for Delphi Projects

In Data Abstract for Delphi, schemas are represented by the TDASchema component that you can drop on your data services or global data modules. The schema component stores all the content of the schema internally. No external .daSchema files are used, although the TDASchema component does provide the option to load from and save to a .daSchema File. You can edit a schema by double-clicking the component to launch Schema Modeler.

Similarly, connection information is stored in the TDAConnectionManager component assigned to the TDASchema.

See Also

RemObjects.DataAbstract.Schema namespace (.NET) and TDASchema component (Delphi)

DataAbstractService /TDataAbstractService classes

Schema Modeler, Column Mapping and Cross Database Support help topics

Online Article "DA03 - Introduction to Schemas"

Links

Concepts, See Also


See Also

RemObjects.DataAbstract.Schema namespace (.NET) and TDASchema component (Delphi)

DataAbstractService /TDataAbstractService classes

Schema Modeler, Column Mapping and Cross Database Support help topics

Online Article "DA03 - Introduction to Schemas"


Database Drivers

Concepts	See Also	Topics

Data Abstract for Delphi provides access to many different database systems, from the most common high-power databases such as Microsoft SQL Server and Oracle, over smaller database systems like Interbase/Firebird, PostgreSQL and MySQL to embedded databases such as DBISAM or NexusDB.

Support for each of these database systems is provided by database drivers, which are specifically written to connect Data Abstract to these databases, typically using existing, well-tested and time-proven data access components (DACs) such as dbGo (ADO), DBX, IBX or the thirdparty SDAC, ODAC, PostgresDAC, IBO and FIBPlus.

These drivers provide a common interface based in the IDAConnection, IDADataset and IDASQLCommand interfaces that abstract the actual database-specific details away from the Data Abstract core - allowing a common data access approach across the board.

Available drivers are handled by the TDADriverManager component and registered using a unique name that will be used as the first part of a Data Abstract connection string to determine the driver to be used.

Drivers can be statically linked into the application (the preferred option for most scenarios) by either referencing the driver's unit in the project's uses cause or dropping a driver component, or dynamically loaded from a driver .DAD file (which is essentially a DLL with the driver's code).

Driver .DAD files are also used by Schema Modeler to provide design-time data access.

Driver .DAD Files Deployed by Setup

The Data Abstract for Delphi setup deploys .DAD files for all supported drivers, in the Schema Modeler folder. These .DAD files are intended primarily for use with Schema Modeler at design-time, and only those based on standard Delphi components (ADO, BDX, IBX) allow dynamically loading into applications other than Schema Modeler or DAServer at runtime.

To use any of the drivers based on third party libraries, you must own the third party library and manually rebuild the .DAD. Allowing the deployed driver .DADs to be dynamically loaded at runtime would circumvent the requirement to license these components from the third party developers, who of course rely on the revenue support and expand their products.

See Also

IDAConnection, IDADataset and IDASQLCommand interfaces

Driver Components and Schema Modeler help topics

Links

Concepts, See Also, Topics


Topics

Database Drivers

Topics

Driver Components

Data Abstract includes components for all of the supported drivers, that allow you to statically link the respective drivers into your applications.

These components are only provided as a visual means to add the driver to the application and make sure the driver unit is referenced by the project to statically link the driver. Dropping the component or merely adding the driver unit to the project's uses clause both serve the same purpose.


See Also

IDAConnection, IDADataset and IDASQLCommand interfaces

Driver Components and Schema Modeler help topics


Driver Components

Database Drivers	See Also

Data Abstract includes components for all of the supported drivers, that allow you to statically link the respective drivers into your applications.

These components are only provided as a visual means to add the driver to the application and make sure the driver unit is referenced by the project to statically link the driver. Dropping the component or merely adding the driver unit to the project's uses clause both serve the same purpose.

Notes

Note that only the components for the drivers based on standard Delphi libraries (ADI, DBX and IBX) are installed in the component palette by default; all other driver components require the respective third party libraries and thus no pre-compiled packages are provided.

To install these components, please manually build and install the respective packages yourself, after making sure the third party data access components are installed.

Of course you can always just reference the driver unit directly, without installing the component.

See Also

Database Drivers help topic

Links

Database Drivers, See Also


See Also

Database Drivers help topic


Connection Pooling

Concepts	See Also

Data Abstract provides connection pooling for server-side database connections through the ConnectionManager /TDAConnectionManager components.

Connection pooling increases performance in server applications shared by many clients, as connections can be shared among several clients to perform subsequent requests, rather than new connections having to be created and disposed repeatedly, which is a relatively costly process for most database systems.

Using connection pooling, once the server is finished with processing a request, the connection it used to communicate with the back-end database will be returned to a pool, where it can be redistributed to the next incoming request (which might be handled by the same or a different service, and serve the same or a different client.

When working with several different connection strings (for example for targeting different databases, or accessing the database with differently privileged logins), a separate pool will of course be used for each connection string, so that every database request will use the appropriate connection.

Connection Pooling and Transactions

In Data Abstract for Delphi, the connection manager's PoolTransactionBehaviour property can be used to configure how the pool will behave if connections with an active transaction are returned to the pool. Options include to roll back the transaction (preferred), commit it, or do nothing.

This functionality is not yet available in Data Abstract for .NET, but under review for a future version (bug id #2052)

See Also

ConnectionManager /TDAConnectionManager components

TDAConnectionManager.PoolTransactionBehaviour property (Delphi)

Transaction Handling help topic

Links

Concepts, See Also


See Also

ConnectionManager /TDAConnectionManager components

TDAConnectionManager.PoolTransactionBehaviour property (Delphi)

Transaction Handling help topic


Transaction Handling

Concepts	See Also

Most modern databases provide support for transactions, to group several data modifications into one atomic action. An entire transaction either completes 100% successfully, or fails entirely, thus making sure that the database is not never left in an inconsistent state.

As the classic example, consider a database handling money transfers within a bank. To transfer money from one account to another, the database would reduce the balance for one account, and increase the balance for the other. For any one of these actions to fail on its own would be catastrophic, as money would have been lost (deducted from one but not credited to the other account), or duplicated (credited to the new but not deducted from the original account).

By wrapping the two database actions into a single transaction, the database engine ensures that one of two possible outcomes: either both actions succeed, or both actions fail.

In the first case, the transaction would be considered Commited, the changes having been applied to the database. In the second case, the transaction would be Rolled Back, and all changes (including those that succeeded on their own) have been discarded. As far as the database is concerned, a rolled back transaction simply never happened.

Transactions in Data Abstract

Like all other aspects of data access, Data Abstract encapsulates transactions in a database-agnostic way, so that transaction-based code will work against all databases that support them.

When working directly with the low-level IAbstractConnection /IDAConnection objects, methods are provided to begin, commit and roll back transactions, as needed.

The DataAbstractService /TDataAbstractService classes automatically apply transactions when applying changes from clients back to the server, making sure that transactions are committed or rolled back as needed, depending on whether updates succeeded. They also provide events that allow you to take more explicit control over transactions, including beginning/committing/rolling them back on your own, as needed.

See Also

IAbstractConnection /IDAConnection interfaces

IDAIBTransactionAccess interface (Delphi)

DataAbstractService /TDataAbstractService

Links

Concepts, See Also


See Also

IAbstractConnection /IDAConnection interfaces

IDAIBTransactionAccess interface (Delphi)

DataAbstractService /TDataAbstractService


Command and Data Table Parameters

Concepts	See Also

Data Abstract provides the concept of parameters to pass data to data tables and commands. Parameters can be used to filter the records retrieved from a data table for certain conditions (for example to only obtain details for a specific master record), to pass new data to insert/update/delete statements, or to simply provide parameters that a certain operation or stored procedure requires.

Regardless of the underlying database system and platform (.NET or Delphi), Data Abstract defines a standardized syntax for representing parameters in SQL statements, and exposes them in a consistent way using the DataParameter /TDAParam classes (.NET/Delphi).

Parameters in SQL statements

To define parameters in your SQL statements, simply precede the identifier with a colon, as such:

SELECT * FROM Orders WHERE Customer = :CustomerID

This will automatically create a parameter "CustomerID" for the data table (or command) that can be filled with a value before executing the query. For each parameter, a data type can be defined in Schema Modeler, from the range of all the data types also supported for fields by Data Abstract. This data type will determine how value assigned to the parameter will be embedded into the query.

Note that some databases or data access layers do not allow the use of the same parameter twice in a query. Instead of writing a SQL statement such as:

SELECT * FROM Orders WHERE Customer = :CustomerID OR ShipToCustomer = :CustomerID

you will need to rewrite the query using a local variable, so that :CustomerID only occurs once inside the query, for example:

DIM @c = :CustomerID

SELECT * FROM Orders WHERE Customer = @c OR ShipToCustomer = @c

Filling Parameters at Runtime

As mentioned before, parameters are represented using a collection of DataParameter /TDAParam classes. On the server side, a IDbCommand/IDASQLCommand will provide a collection of parameters that can be filled before executing the command or opening the data table.

On the client side, parameters can be passed to RemoteDataAdapter .Fill (.NET) or defined on the TDADataTable (Delphi). Also, the RemoteCommand (.NET) component allows specifying parameters to be passed to the server for executing the command.

See Also

DataParameter , RemoteDataAdapter and RemoteCommand classes (.NET)

TDAParam and TDADataTable classes (Delphi)

Where Clauses help topic

Links

Concepts, See Also


See Also

DataParameter , RemoteDataAdapter and RemoteCommand classes (.NET)

TDAParam and TDADataTable classes (Delphi)

Where Clauses help topic


Where Clauses

Concepts	See Also

Data Abstract provides the TDAWhere class to make it easy to dynamically build WHERE statements for your SQL queries. This class can be used both on the server for internal querying logic , as well as the client to pass conditions for data retrieval to the server.

In version 4.0 of Data Abstract, TDAWhere builds plain text WHERE clauses in SQL syntax, that will be transmitted to the server in plain text and directly applied. Because parsing and validating such a SQL WHERE clause is difficult (if not impossible), this leaves very little possibility for the server to inspect WHERE clauses received from the client, to make sure they are acceptable. For example, clients could misuse a WHERE clause to circumvent access restrictions enforced by the server, or - worse - use malicious SQL Injection code to harm the database or gain access to private tables.

For this reason, Data Abstract services are by default configured to not accept WHERE clauses send from the client. You should only enable this feature if you are certain that client applications are under your control, or that malicious code cannot harm the database. To enable this feature, set the AllowWhereSQL property of your data service to true.

In version 5.0 of Data Abstract, the concept of WHERE clauses will be expanded to allow passing of structured information between client and server, that the server can easily validate and verify before generating actual SQL, server side - making the passing of WHERE clauses between clients and servers safe.

Using TDAWhere now (with the above security considerations in mind) instead of building WHERE clauses as strings on your own will make sure that your application will automatically reap the benefits of the improved WHERE clause system, when upgrading to version 5.0.

See Also

TDAWhere class

TDataAbstractService.AllowWhereSQL property

SQL Injection on Wikipedia

Links

Concepts, See Also


See Also

TDAWhere class

TDataAbstractService.AllowWhereSQL property

SQL Injection on Wikipedia


Master/Detail Relationships

Concepts	See Also

Data Abstract actively supports tables in Master/Detail relationships, and provides options that make it easy to establish Master/Detail relationships between tables.

Relationship Modeling in Schemas

Data Abstract schemas support relationships as part of the meta data stored in the schema for data tables.

Depending on the database driver used, relationships will automatically be established when importing tables or views form the back-end database into the schema. Schema Modeler also provides the Relationships View that allows you to manually define and edit relationships between tables.

Finally, Schema Modeler's Diagramming and Modeling Support visually shows relationships as part of the schema diagrams, and allows establishing of new relationships using intuitive drag and drop operations within the diagram.

Relationships and AutoIncs

Data Abstract also uses master/detail relationships defined in the schema to allow automatic handling of AutoInc values, making it possible to use integer based AutoInc primary keys in disconnected clients.

Please refer the AutoIncs and Generators help topic for more details on this subject.

Automatic Fetching and Updating of Master/Detail tables

Finally, Data Abstract provides support for automatically linking master and detail tables on the client side, including the options to incrementally fetch data for detail tables as the user changes records on the master, and automatically applying changes to masters and details in one step.

Please refer to the Master/Detail Wizard help topic for more information on how to set up these scenarios in Data Abstract for Delphi.

See Also

Schema Modeler, Relationships View and Diagramming and Modeling Support help topics

AutoIncs and Generators help topic

Master/Detail Wizard help topic (Delphi)

Links

Concepts, See Also


See Also

Schema Modeler, Relationships View and Diagramming and Modeling Support help topics

AutoIncs and Generators help topic

Master/Detail Wizard help topic (Delphi)


Updates

Concepts	See Also	Topics

This topic explains how updates work in Data Abstract. It covers topics such as BusinessProcessors /TDABusinessProcessors, Deltas /IDADeltas, the RemoteDataAdapter /TDARemoteDataAdapter component and more.

Client Side Deltas

ADO.NET datasets (.NET) TDADataTables (Delphi) work in disconnected mode: any updates, deletions or inserts performed on them aren't immediately reflected in the underlying database, but are collected in a local cache instead. This cached list of changes is referred to as a “delta” and will eventually be streamed over to the server to be applied to the physical database.

This operation is commonly handled by the remote data adapters's Update or ApplyUpdates method, which will use a DataStreamer /TDADataStreamer component to serialize and deserialize the information to a stream and send them across the network to the server.

It’s important to note that each data table will generate a separate delta of changes, but several of these deltas can be applied to the server with a single method call.

Applying Updates

When Update or ApplyUpdates is called, the remote data adapter creates a new stream to contain the data that will be sent to the server. It will then loop through all the data tables that want to apply their updates, and use the data streamer to write the delta for all those named in the “aTableNameArray” array.

The deltas written in the stream are conceptually similar to ADO.NET diffgrams, but they are written in a manner that is specific to the data streamer being used. For example, the BinDataStreamer will write deltas in an efficient binary format that is also compatible between the Delphi and .NET version of Data Abstract and much less verbose than the original XML diffgrams. The upcoming XmlDataStreamer (currently provided for Delphi only) writes deltas as XML instead - a format that is more verbose than binary data, but in exchange is parsable by non-DA clients or servers.

Once all the deltas are written to the stream, the remote data adapter will use the call configured in its DataUpdateCall /UpdateDataCall property to invoke a remote method on the server and deliver the stream for updating. We will analyze what happens server side further down in this help topic.

Once the remote method call is completed, the remote data adapter might receive back a stream containing new deltas generated by the server. If this is the case, it will then use the data streamer again to unpack these deltas and merge any changes back into the original Data Table. This might happen if certain changes failed on the server, or if fields have been configured to automatically be refreshed from the server.

If no stream is received back, all changes are considered successfully applied, and the local delta will simply be discarded.

To understand how you can take advantage of this, you need to understand how deltas are structured and how they work, which is discussed in more detail in the Deltas and Delta Changes help topic.

Updates on the Server

When the server receives changes from the client, it will unpack the received delta, again using a data streamer, start a transaction and then begin processing each delta sequentially.

Update Rules

The sequence of updates is determined in two ways: if the service’s schema has a set of Update Rules defined, it will follow the order in which these rules are ordered. This provides you with a no-code mechanism to apply updates in the specific order you decide and to restrict processing of the delta to changes of a certain type in any of those steps. If no update rules are defined, the order is determined by how the client application wrote the deltas in the incoming stream.

Please refer to the Update Rules help topic for further details on this topic.

Business Processors

To apply the changes contained in each delta, the remote service uses the functionality of a special component called a business processor. Business processors can be either auto-created or manually dropped at design-time on the design surface of the component.

Each Business processor applies to one specific data table in the service schema (identified through the ReferencedDataTable property) and will only be responsible for handling the deltas for that table.

Business processors provide a variety of events where you can add custom business logic. For instance, the BeforeProcessDelta /OnBeforeProcessDelta event can be used to log that a certain number of updates are about to be processed or check if the current user has enough privileges to update the data table in question, while the BeforeProcessChange /OnBeforeProcessChange event could be used to inspect or adjust the individual changes.

In addition to these events, the Business Processor component includes properties that determine if the SQL for inserts, updates and deletes should be auto-generated or whether you want to use a specific command contained in the service schema. In the majority of cases, auto generated SQL will work just fine, but if you want explicit control on what SQL will be run, explicit commands defined in your schema can be specified.

Processing changes

The first thing the business processor does when processing changes is to create and prepare the appropriate commands that will be needed to apply INSERTs, UPDATEs and DELETEs to the database. Once the commands are ready, the business processor will then loop through all changes in the delta in the order in which they have been added and execute the respective commands.

If an update is successful, the delta change will (by default) be removed from the delta, and the next one will be processed. If the update fails, the delta change will be preserved, its Status property will be set to Failed and the exception message will be logged in the Message property of the delta change.

Another possible situation in which delta changes are kept in the delta and sent back to the client is when you set the ServerAutoRefresh property of any of the fields of the data table to true. Whenever you have ServerAutoRefresh fields, the Business Processor generates a select statement for the current row and writes the new values in the delta change and ensures it doesn't get removed from the delta. The same happens whenever AutoInc fields are present and new records are inserted.

The remote data adapter will then be able to merge these trigger-modified values once the new delta is received.

You can also decide to keep delta changes in a delta programmatically by setting the CanRemove property of the event arguments of the BeforeProcessChange /OnBeforeProcessChange or AfterProcessChange /OnAfterProcessChange events.

The server will return a new stream containing the remaining changes, if one or more changes have been kept in the delta. The client can then process them to merge updated values back into the dataset or to inform the user of failed updates.

See Also

BusinessProcessors /TDABusinessProcessors and RemoteDataAdapter /TDARemoteDataAdapter classes

AutoIncs and Generators, Delta and Delta Changes and Update Rules help topics

Links

Concepts, See Also, Topics


Topics

Updates

Topics

Deltas and Delta Changes

A delta is essentially a collection of DeltaChange /TDADeltaChange items that is bound to one specific data table in a dataset.

When you create an instance of a delta using the constructor with a data table parameter, the Delta class will invoke the method DataTable.GetChanges to retrieve the list of updates made. It will then loop through all these changes and add a new delta change.

Instances of the Delta class are created automatically by the RemoteDataAdapter /TDARemoteDataAdapter when you call to the Update method.

An important aspect of deltas is that they need to have a name; Data Abstract... more

AutoIncs and Generators

This topic explains how Data Abstract handles auto increment field types and simplifies their use, regardless of the underlying RDBMs you are using.

Update Rules

Data Abstract uses Update Rules to give your server application details control over the order in which updates to different data table swill be applied to the server.

By default, if no update rules are defined, the data abstract service will simply apply all deltas in the order they have been received. This works fine in many scenarios, if the data tables involved are independent. However, if dependencies such as foreign keys or master/detail relationships exist between tables, things become more complicated.

Imagine a typical master/detail scenario with Customers and Orders, where each order is assigned to a particular customer.... more


See Also

BusinessProcessors /TDABusinessProcessors and RemoteDataAdapter /TDARemoteDataAdapter classes

AutoIncs and Generators, Delta and Delta Changes and Update Rules help topics


Deltas and Delta Changes

Updates	See Also

A delta is essentially a collection of DeltaChange /TDADeltaChange items that is bound to one specific data table in a dataset.

When you create an instance of a delta using the constructor with a data table parameter, the Delta class will invoke the method DataTable.GetChanges to retrieve the list of updates made. It will then loop through all these changes and add a new delta change.

Instances of the Delta class are created automatically by the RemoteDataAdapter /TDARemoteDataAdapter when you call to the Update method.

An important aspect of deltas is that they need to have a name; Data Abstract will automatically use the name of the data table contained in an ADO.NET dataset (.NET) or the TDADataTable.LogicalName (Delphi). Deltas without a name cannot be properly streamed or identified by the server.

The DeltaChange class

The DeltaChange /TDADeltaChange items contained by the Delta /IDADelta collection provide you with properties for the type of change they reference, the status of the change before and after it has been processed by the server and the old and new values of the fields, before and after their row was edited.

In addition, delta changes also have a Message property that you can set to custom text, after a change is processed, and that also will be filled with any error messages encountered while applying the change.

You can access the old and new values either by field name or by index. When you access them by index, keep in mind that the index of fields might not be the same as in the original data table, as only fields whose LogChanges property was set to true in the original schema are included in these arrays.

See Also

Delta /IDADelta class/interface

DeltaChange /TDADeltaChange classes

Updates help topic

Links

Updates, See Also


See Also

Delta /IDADelta class/interface

DeltaChange /TDADeltaChange classes

Updates help topic


AutoIncs and Generators

Updates	See Also

This topic explains how Data Abstract handles auto increment field types and simplifies their use, regardless of the underlying RDBMs you are using.

Different Solutions for a Common Problem

Many databases require auto increment numbers. While the most common need is probably to generate primary key values for referential integrity, there are other situations in which incrementing numbers sequentially can be useful.

Regardless of why you might think of using auto increments, you should be aware that different RDBMs provide different solutions to this problem. Microsoft SQL Server lets you mark integer fields as "identities" and automates the increment transparently for you. Other systems like Interbase or Oracle don’t have any specific field attribute or type that helps in this regard. Instead, they provide "generators", which can be considered a persistent location to store a unique value that will be queried and incremented during an update. Generators are usually accessed from custom code or triggers, and their value is then manually assigned to a field.

Using Data Abstract’s AutoInc Field Type

Data Abstract’s AutoInc field type has been designed to hide and encapsulate the RDBM-specific details and provide a consistent development experience.

This is particularly useful when you need to support multiple databases (for example Microsoft SQL Server and Oracle), because it allows you to write one set of database-agnostic code that won’t need to change or be modified to accommodate such differences.

The schema field contains two properties that are relevant for dealing with auto increments:

Data Type, which needs to be set to datAutoInc to enable Data Abstract’s auto increment support.

Generator Name needs to be set to the name of the generator in your database, if your RDBMS is using generators. If your database suppts AutoIncs natively, this property is not needed.

For example, in the Northwind database, Employee.EmployeeID can simply be marked as datAutoInc. In Firebird’s Employees database, EMPLOYEE.EMP_NO would be marked as datAutoInc and Generator Name set to EMP_NO_GEN.

AutoIncs Handling when Inserting New Rows

When you insert new rows in an client-side data table, Data Abstract will generate incremental negative values to fill the AutoInc fields. Using negative numbers ensures that the client can generate new values that will not conflict with values generated on the server, and without the need to keep track of the actual values generated on the server (which would be impossible in a disconnected client scenario).

Once the data is applied to the server, the business processors will handle the updating of the AutoInc fields to their proper values, depending on the database. If the database natively supports AutoIncs, it will simply insert the row and then read back the AutoInc value the RDBMS generated. If the database relies on generators instead, it will first query the specified generator for a new value, adjust the delta change and then insert the new row with the proper value.

In both cases, the AutoInc value generated by the database will then be written in the delta change that originated the insert and will be sent back to the client, allowing the client to update the local data table without requiring a full refresh or another round trip to the server.

AutoInc Support and master detail tables

If you have tables like Northwind’s Orders and Order Details, you are basically facing a situation in which both the master table and its details will contain negative AutoInc values that need to be synchronized. When you insert the first new Order, its OrderID value will be -1 (the next order would get -2, and so on). If you also insert Order Details, their foreign keys will be set to match the same negative numbers, to establish the proper relationships. So Order Details.OrderID will be -1, for any details added to the first order, -2 for the second, etc.

Data Abstract is capable of automatically handling these master/detail relationships when applying updates to the database by properly adjusting the detail relationship IDs appropriately before inserting.

If the remote Data Abstract service receives deltas for tables such as Order and Order Details, it will first insert the master records, as described above. After that, it will use the real IDs obtained during the insert, and replace the negative OrderID values in the detail deltas for you.

Master/Detail and Schema Relationships

For Data Abstract to provide this automatic handling of master/detail AutoIncs when applying updates on the server, a relationship needs to be defined between these two tables in the underlying schema.

Relationships can be added in Schema Modeler’s diagram view by dragging connections between the involved fields: from the primary key in the master table to the foreign key in the detail table. Alternatively, you can also click on the “Relationships” button on the main toolbar of the Schema Modeler and manually manage relationships.

Without such a relationship, automatic synchronization of IDs will not happen automatically.

See Also

BusinessProcessor (.NET)/TDABusinessProcessor (Delphi) classes

Links

Updates, See Also


See Also

BusinessProcessor (.NET)/TDABusinessProcessor (Delphi) classes


Update Rules

Updates	See Also

Data Abstract uses Update Rules to give your server application details control over the order in which updates to different data table swill be applied to the server.

By default, if no update rules are defined, the data abstract service will simply apply all deltas in the order they have been received. This works fine in many scenarios, if the data tables involved are independent. However, if dependencies such as foreign keys or master/detail relationships exist between tables, things become more complicated.

Imagine a typical master/detail scenario with Customers and Orders, where each order is assigned to a particular customer. When a new customer and order pair is added on the client, it is imperative that the customer will be inserted first, before the orders that reference it. Otherwise, inserting of the orders would be rejected by the database, because the foreign key relationship would link them to a non-existing customer.

Conversely, when deleting both a customer and his orders on the client, the reverse logic must be applied, and orders must be deleted before the corresponding customer - otherwise deleting the customer fails because it would again break the foreign key relationship.

Setting up Update Rules

Schema Modeler's Update Rules View provides two ways for configuring update rules. First of all, you can click the "New Rule" button to create a new empty rule, and configure that new rule manually.

More importantly, you can drag tables from the Data Tables Pane over to the Update Rules View, to automatically create rules for specific tables. Dropping a table will give you two options, to create one rule for the table, or to create three separate rules for inserts, updates and deletes, respectively.

By creating three separate rules, you can control the order of inserts, updates, and deletes, separately.

To create rules for the scenario outlined above, follow these steps:

Drag and drop the Customers table, and select to create three separate rules

Drag the Order table and create one rule

Finally, sort the four rules that were created into the following order:

This configuration will ensure that inserts (and updates) to Customers will happen first, followed by any changes (inserts, updates or deletes) to Orders, and finally followed by any deletes for Customers.

See Also

Schema Modeler and Update Rules View help topics

Links

Updates, See Also


See Also

Schema Modeler and Update Rules View help topics


Cross Database Support

Concepts	See Also	Topics

To understand how Data Abstract allows you to design systems that target multiple RDBMs (and even databases with different structures) we'll take a look at one of the samples that ships with Data Abstract: the Mega Demo (Currently only shipping with the edition for .NET; a version for Delphi will be provided in release 4.0.11).

The server project exposes two services (LoginService and OrdersService) that are capable of working with data stored in either Microsoft SQL Server’s Northwind and Interbase/Firebird's EMPLOYEES databases.

If you open the OrderService schema (by double click on the OrdersService.daSchema file in .NET, or double-clicking the TDASchema component in Delphi), you will be presented with a schema that looks like this:

As you can see in the Data Tables Pane, this schema exposes two data tables: Customers and OrdersByCustomer. We’re going to concentrate on the OrdersByCustomer data table, which has been declared as having five fields (CustomerID, OrderDate, RequiredDate, ShippedDate and OrderAmount) and two parameters (CustomerID and EmployeeID).

The purpose of this data table is to return the list of all orders belonging to a specific customer (identified by the CustomerID parameter) that were entered by a certain employee (identified by the EmployeeID parameter).

Separating Data Table Design and the Underlying Database

When designing data tables or commands in a schema, it is important to realize that they are only a structured definition of row sets or actions that you want to expose through your service. They define what the client will see and need to manipulate data and do its work without knowing anything about the underlying database.

The data table structure does not necessarily have to be identical to that of the physical database (even though in most single-database scenarios this will be the case).

The structure defined for the data table will now need to be connected to the two actual databases that the application will access. This is done through the Statements pane:

As you can see, two statements have been defined for OrdersByCustomer, one for each of the supported back-end databases. The screenshot above shows the details for the Employees database statement, and contains the following SQL query (accessible by clicking the SQL property):

SELECT S.CUST_NO, S.ORDER_DATE, S.DATE_NEEDED,

       S.SHIP_DATE, S.TOTAL_VALUE

  FROM SALES S

  WHERE S.SALES_REP = :EmployeeID AND S.CUST_NO = :CustomerID

The statement for Northwind instead uses thew following SQL query:

SELECT Ords.CustomerID, Ords.OrderDate, Ords.RequiredDate,

       Ords.ShippedDate, Ords.Freight AS OrderAmount

  FROM  Orders Ords

  WHERE Ords.EmployeeID=:EmployeeID AND Ords.CustomerID=:CustomerID

As you can see, in addition to defining the structure of a data table (essentially its fields and parameters), a different SQL statement can be provided for each of the databases types the application supports. These SQL statements all needs to return data that matches the definition of the data table in terms of field numbers, types and parameter it requires, but other than that the queries can be very different to account for differences in table structure or even variations in SQL dialect.

Once these statements are provided, the Data Abstract server has all the information it needs to automatically select the right SQL query to execute, given a database connection instantiated at runtime.

For the application code, both in the middle and client tier, only the structure of the data table itself is visible - the underlying database differences are hidden.

Column Mappings

One final consideration needs to be made about the Column Mappings: the names of your data table fields don’t necessarily have to match those of the original table in your database. As you can see from the SQL queries we listed above, the CustomerID field is populated using the table field SALES.CUST_NO when working on Firebird and Orders.CustomerID when on Microsoft SQL Server.

The Column Mapping help topic covers this in more detail.

See Also

Schema Modeler and Column Mapping help topics

MegaDemo sample application (.NET)

Links

Concepts, See Also, Topics


Topics

Cross Database Support

Topics

Column Mapping

Data Abstract introduces the concept of Column Mapping as one of the core features enabling cross database support. within a single schema.

The idea behind cross database support is to provide one schema that defines the structure of the application's database to the middle- (and eventually the client-) tier, but allowing that same schema to target multiple different database back-ends at the same time.

To the application code all that matters is the structure of data tables as defined in the schema, it does not not have to be concerned about the layout of the physical database.


See Also

Schema Modeler and Column Mapping help topics

MegaDemo sample application (.NET)


Column Mapping

Cross Database Support	See Also

Data Abstract introduces the concept of Column Mapping as one of the core features enabling cross database support. within a single schema.

The idea behind cross database support is to provide one schema that defines the structure of the application's database to the middle- (and eventually the client-) tier, but allowing that same schema to target multiple different database back-ends at the same time.

To the application code all that matters is the structure of data tables as defined in the schema, it does not not have to be concerned about the layout of the physical database.

Why Column Mappings?

In an ideal scenario, the layouts of all database supported by your application would be identical, and column mapping would not be necessary. In reality however, this is often not the case.

Reasons for targeting different database structures are manifold, including:

Differences in SQL dialects that enforce different naming schemes on different database back-ends

Targeting two or more existing databases that have been designed independently

Designing a new database for the application, but accessing an old legacy database during migration

In these you will typically have databases that contain similar data, but use slightly different table structures or field names to represent the same type of data. One database might have a Customers table with CustomerID, Name, etc., while the other database has a table CUSTS, with CUSTOMER_NO and CUSTOMER_NAME fields.

Mapping Differences in Table Layouts

The Data Abstract approach to abstracting such different database layouts is to define your data tables to represent the data in the way that you want your application to see it. This representation can (and usually will) be based on one of the existing database layouts, but could also be designed independently.

For each back-end database, you will then create individual SQL statements that select the appropriate data, and define a column mapping that connects the fields from your database to the fields defined in the schema.

For example, CUSTOMER_NO would map to CustomerID, and CUSTOMER_NAME to Name:

In this column mapping, Data Table Field is the field as defined in your schema - as mentioned before, this can match the field name in one of your database layouts, but can also be a fresh name (for example if all your database layouts used "awkward" or all-upper-case names, but you want proper PascalCase names in your schema).

Table Field is the name of the field in your physical database table, while SQL Origin is the name of the field returned from your query (which will be identical to the Table Field in most cases, unless your SQL query uses the AS directive to change field names).

See Also

Cross Database Support help topic

Links

Cross Database Support, See Also


See Also

Cross Database Support help topic


Business Rules Scripts

Concepts	See Also

Business Rules Scripts provide the option to define specific rules and actions to be taken on the client to validate data input, without having to hard-code this logic into the client application.

With business rules scripts, the server can provide the business logic in form of Pascal language scripts as part of the schema, which will then be executed on the client using RemObjects Pascal Script 3.0 (included with Data Abstract).

This allows business rules to dynamically be updated on the server over time, without having to redeploy updated clients - all the client's need to do is use TDARemoteDataAdapter.FillScripts or TDADataTable.LoadScript to download the latest scripts - for example on application startup.

Editing Scripts

Schema Modeler provides a special dialog for editing business rules scripts for a particular table, accessible by right-clicking the table and choosing Business Rules or clicking the Business Rules button in the toolbar.

The Business Rules Editor dialog provides a code editor with Pascal syntax highlighting for writing the actual script, and three drop-downs that allow you to easily add new code elements:

Events shows a list of all available event handlers (comparable to those of the TDADataTable or a standard Delphi TDataset). Selecting any item form the menu will insert a new method body that can be filled with code for the event.

Variables shows a list of all Data Abstract-specific variables available to the script. This includes Table for accessing properties and methods of the entire table, and all individual fields defined for the data table.

Actions, finally, shows a list of commonly used actions, such as ShowMessage() to show a message notification, and Abort() to abort the current process.

Of course, any code constructs available in Pascal Script can be used in these scripts, and you can register custom classes, methods and variables to be accessed form your script, if needed.

Please refer to the Pascal Script 3.0 documentation for more details.

Notes

Please note that client side business rules script should never be used as the only means to enforce business logic, as they are executed on the client and therefore outside of the control of the server application. Malicious or compromised clients could modify the scripts, or simply omit execution altogether.

The server should always enforce data integrity and business logic, as well.

See Also

TDARemoteDataAdapter.FillScripts and TDADataTable.LoadScript methods

TDADataTable.ScriptingProvider property

TDAPSScriptingProvider component

Links

Concepts, See Also


See Also

TDARemoteDataAdapter.FillScripts and TDADataTable.LoadScript methods

TDADataTable.ScriptingProvider property

TDAPSScriptingProvider component


Dynamic Method Binding

Concepts	See Also	Topics

Data Abstract's Dynamic Method Binding (DMB) is one of the major foundations of its architecture. It allows you to connect to remote service methods rather than forcing the use of pre-built interfaces.

Dynamic Method Binding provides a truly object oriented way to fetch data and, at the same time, increases design elegance because it does not restrict data-fetch to predefined (and often rigid) method calls.

Data Abstract's TDARemoteDataAdapter connects to the remote server by using the RemObjects SDK's remote service. All communication with the server (filling data, applying updates, retrieving schema info) are implemented using dynamic method binding, allowing you to model your server interface the way you like and still be able to use them in a RAD way from the client.

Provided the server is running, you can display data at design time and modify data access using properties rather than writing code. For example, suppose you have a service method called GetMyData (with as many parameters as needed) define don your service. Your client data table will be able to use it to fetch data by mapping the remote data adapter's GetDataCall to GetMyData and configuring the call's parameters as necessary. Calling TDADataTable.Open then results in a call to GetMyData on the server.

TDARemoteDataAdapoter has four properties for mapping DMB calls (in parenthesis the methods on the adapter and data table that trigger these calls):

GetDataCall (Fill/Open)

UpdateDataCall (ApplyUpdates/ApplyUpdates)

GetSchemaCall (FillSchema/LoadSchema)

GetScriptsCall (FillScripts/LoadScript)

See Also

TDARemoteDataAdapter

DA04 - Dynamic Method Binding website article

Links

Concepts, See Also, Topics


Topics

Dynamic Method Binding

Topics

The New v4.0 Service Interface

Data Abstract version 4.0 introduces a new standard service interface for publishing data services to clients. In the edition for .NET, this is the only interface provided; for Delphi, this interface supersedes the old interface used in versions 2.0 and 3.0, which has not been deprecated, but is still provided for backward compatibility.

The new v4.0 style interface provides several advantages:

It provides methods for more streamlined data access than the old v3.0 interface. In particular, it makes it a lot easier to fetch and update multiple data tables within a single server call.

It makes it easier... more


See Also

TDARemoteDataAdapter

DA04 - Dynamic Method Binding website article


The New v4.0 Service Interface

Dynamic Method Binding	See Also

Data Abstract version 4.0 introduces a new standard service interface for publishing data services to clients. In the edition for .NET, this is the only interface provided; for Delphi, this interface supersedes the old interface used in versions 2.0 and 3.0, which has not been deprecated, but is still provided for backward compatibility.

The new v4.0 style interface provides several advantages: 	It provides methods for more streamlined data access than the old v3.0 interface. In particular, it makes it a lot easier to fetch and update multiple data tables within a single server call.

It makes it easier to implement new client applications, as RemoteDataAdapter /TDARemoteDataAdapter client components will be set up to talk to the new interface automatically, right after you drop them onto your form.

The new interface is shared between both editions for .NET and Delphi, making it easy to build cross-platform applications.

Upgrading Delphi Applications to the v4.0 Interface

Please refer t the DA26 web article, which provides more information and detailed step-by-step instructions for migrating existing v3.0 applications to the new interface.

See Also

DA26 - Upgrading to Data Abstract 4.0 for Delphi web article

RemoteDataAdapter /TDARemoteDataAdapter classes

DataAbstractService /TDataAbstractService classes

Links

Dynamic Method Binding, See Also


See Also

DA26 - Upgrading to Data Abstract 4.0 for Delphi web article

RemoteDataAdapter /TDARemoteDataAdapter classes

DataAbstractService /TDataAbstractService classes


IDE Integration

Programming with Data Abstract	See Also	Topics

Data Abstract for Delphi extends your Borland Delphi and Borland Developer Studio IDE to make creating Data Abstract applications as easy as possible.

The following IDEs are supported:
Development Environment

Borland Delphi 6

Borland Delphi 7

Borland Developer Studio 2005 (Delphi/Win32 only)

Borland Developer Studio 2006 (Delphi/Win32 only)

Borland Kylix 3 (Delphi language only; limited support)

Kylix/Linux Development

IDE support (and library support in general) is limited for Kylix 3, as Kylix has been deprecated, is no longer being updated by Borland and has severe problems running on most current Linux distributions.

Re recommend using CrossKylix from the Delphi IDE to build Linux projects, or considering RemObjects SDK for .NET and Mono.

See Also

CrossKylix website

Links

Programming with Data Abstract, See Also, Topics


Topics

IDE Integration

Topics

New Project Templates

Just like RemObjects SDK, Data Abstract integrates with Delphi's New Item dialog to provide an extensive set of different project templates to help you get started writing Data Abstract projects.

These templates can be found in a special Data Abstract sub-folder below Delphi Projects (in Delphi 2005 and up), and on the Data Abstract tab in Delphi 7 and below:

Component Editors

Data Abstract provides component editors to make the design time experience inside the Delphi IDE as pleasant and as comfortable as possible, and to relieve the developer of performing redundant and tedious tasks that can be automated.


See Also

CrossKylix website


New Project Templates

IDE Integration

Just like RemObjects SDK, Data Abstract integrates with Delphi's New Item dialog to provide an extensive set of different project templates to help you get started writing Data Abstract projects.

These templates can be found in a special Data Abstract sub-folder below Delphi Projects (in Delphi 2005 and up), and on the Data Abstract tab in Delphi 7 and below:

4.0 Combo Server

Creates a new standard v4.0 Data Abstract server that can be run as standalone application or as Windows Service.

4.0 Simple Login Server

Expands the Combo template to provide a default user authentication system, making sure your server application is only accessible by authorized clients.

4.0 MultiDb Login Server

Expends the Simple Login template to allow the clients to choose a connection name during login; ideal for creating servers that will target several databases.

4.0 Local Application

Creates a single application containing both middle- and client-tier of the database logic.

Legacy 3.0 Server

Creates a server using the legacy v3.0 server interface (not recommended,unless you need to serve existing v3.0 clients).

Links

IDE Integration


Component Editors

IDE Integration	Topics

Data Abstract provides component editors to make the design time experience inside the Delphi IDE as pleasant and as comfortable as possible, and to relieve the developer of performing redundant and tedious tasks that can be automated.

Links

IDE Integration, Topics


Topics

Component Editors

Topics

Remote Data Adapter Design-Time Support

The TDARemoteDataAdapter provides a context menu with four options that help you set up the adapter and related data tables:

Data Table Design-Time Support

The TDADataTable provides a context menu with several options that help configuring the data table:


Remote Data Adapter Design-Time Support

Component Editors	See Also

The TDARemoteDataAdapter provides a context menu with four options that help you set up the adapter and related data tables:

Reset Calls to Default

This menu option will reset all four call objects, GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall back to the default settings needed to talk to a standard v4.0 service interface. This is the default setup of a newly dropped/created remote data adapter.

Reset Calls to Default (Legacy v3.0)

This menu option will configure the four call objects, GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall to the settings needed to talk to a legacy v3.0 service interface.

Hook up Data Tables...

Will provide a list of all TDADataTables found on the current form or data module, and allow to connect them to the current remote data adapter with one click. This is helpful when upgrading a v3.0 client application with a large number of data tables that need to be connected to the new remote data adapter.

Create Data Tables...

Will provide a list of all data tables found in the server's schema, and will upon request create TDACDSDataTable and TDADataSource components for each of them - already configured and hooked up to the remote data adapter.

See Also

TDARemoteDataAdapter, TDADataTable, TDACDSDataTable and TDADataSource components

The New v4.0 Service Interface help topic

Links

Component Editors, See Also


See Also

TDARemoteDataAdapter, TDADataTable, TDACDSDataTable and TDADataSource components

The New v4.0 Service Interface help topic


Data Table Design-Time Support

Component Editors	See Also	Topics

The TDADataTable provides a context menu with several options that help configuring the data table:

Field Collection Editor

Opens up the standard Delphi editor for field collections, as available on any Delphi TDataset component. You can use this editor to inspect and configure fields and their setup, create new fields or remove existing ones.

Retrieve DataTable Schema

Retrieves the schema for the table specified in LogicalName from the server and configured fields and parameters accordingly.

Master/Detail Wizard

Launches the Master/Detail Wizard to guide you thru setting up the current data table as a detail table.

Generate Business Class...

Generates a unit with a Business Class for the current data table.

Load Data from Briefcase File...

Loads design-time data from a local file using the LoadFromFile method.

Save Data to Briefcase File...

Saves design-time data to a local file for later reuse, using the SaveToFile method.

See Also

TDADataTable.LogicalName property

TDADataTable.LoadFromFile and SaveToFile methods

Master/Detail Wizard help topic

Links

Component Editors, See Also, Topics


Topics

Data Table Design-Time Support

Topics

Master/Detail Wizard

The Master/Detail Wizard is designed to help you setting up master/detail relationships between two TDADataTables. You will invoke it on the table that will become the detail, and use it to establish the link to the master.

The wizard can be invoked by right-clicking the data table component and choosing Master/Detail Wizard from the context menu, or by clicking the "..." button on the MasterFields, DetailFields, MasterParamsMappings or MasterRequestMappings properties in Object Inspector.


See Also

TDADataTable.LogicalName property

TDADataTable.LoadFromFile and SaveToFile methods

Master/Detail Wizard help topic


Master/Detail Wizard

Data Table Design-Time Support	See Also

The Master/Detail Wizard is designed to help you setting up master/detail relationships between two TDADataTables. You will invoke it on the table that will become the detail, and use it to establish the link to the master.

The wizard can be invoked by right-clicking the data table component and choosing Master/Detail Wizard from the context menu, or by clicking the "..." button on the MasterFields, DetailFields, MasterParamsMappings or MasterRequestMappings properties in Object Inspector.

The Wizard

The first page of the wizard provides an introduction, and lists the properties of the data table that will be adjusted during the process of the wizard:

The second page allows you to pick the master table (via its TDADataSource), and choose the mapping mode you want to use. Depending on the configuration of your data tables , one (or even both) of the mapping options might be unavailable. If that is the case, a short message will be provided as to why the option is disabled.

Parameter mapping is only available if your detail data table defines parameters; request mapping is only available if your detail data table uses its own TDARemoteDataAdapter.

The next page allows you to define the mapping of MasterFields and DetailFields. Select a pair of matching primary and foreign key fields, and click Add; repeat this until all fields relevant for the relationship are set up.

Finally, master fields need to be matched up with the parameters that will transport them to the server. Depending on your choice of mapping mode, you will match the fields to parameters of the detail dataset or parameters of the GetDataCall.

With this last step, the master/detail relationship is set up, and the wizard shows the final screen:

See Also

TDADataTable.MasterFields, DetailFields, MasterParamsMappings and MasterRequestMappings properties

TDADataTable, TDADataSource and TDARemoteDataAdapter components

Links

Data Table Design-Time Support, See Also


See Also

TDADataTable.MasterFields, DetailFields, MasterParamsMappings and MasterRequestMappings properties

TDADataTable, TDADataSource and TDARemoteDataAdapter components


Comparing .NET and Delphi Implementations of Data Abstract

Programming with Data Abstract

When development started on Data Abstract for .NET, it became clear very early that Data Abstract would need a completely new architecture to fit in with .NET and be a successful product in the .NET world. We decided that it wasn't sufficient just to port existing code that depended on Delphi or VCL classes not present in the .NET framework; we had to conform to .NET standards and re-engineer the library to feel natural to .NET developers.

Thus, the library of Data Abstract for .NET is very different from the Delphi version when you look at the code and classes included within it. Having said that, core concepts such as Business Processors, pre-built services with out-of-the-box functionality; connection managers, schemas, etc. are still there. Also, binary compatibility between .NET and Delphi has been preserved, allowing you to mix existing Delphi clients or servers with the new .NET counterparts.

The bottom line is that Data Abstract for .NET is a product that doesn't make you rethink the way you design your systems if you already are familiar with the Delphi edition, and it allows you to port your existing knowledge and feel “at home”, very easily. In addition, it does improve quite a lot on what you are accustomed to use and requires some time to learn how to take advantage of such changes and how to work properly in a new framework.

Some of the architectural changes and enhancements made for .NET are now also available in Data Abstract 4.0 for Delphi.

Components

In the following paragraphs we will take a look at the key classes and components you will be familiar with from the Delphi edition and explain how and where equivalent concepts are present in the edition for .NET.

TDADriverManager and driver components (TDAADODriver, TDAIBXDriver, etc.).

The concept of drivers has been thoroughly re-thought for .NET, eliminating the need for separate driver class implementations for each supported database. Instead, Data Abstract for .NET uses an XML based .daConfig file that provides information about the available data providers and matches them to driver names in connection strings. Please refer to the Drivers and Connections help topic for more information.

TDAConnectionManager

This component has been renamed to ConnectionManager and is included in the RemObjects.DataAbstract.Server namespace. Its methods and events are virtually identical to the Delphi version although the mechanism through which connection lists are stored and loaded has been improved quite significantly. Connection information is now, by default, loaded from file or resources embedded into your project, rather than being included in the form's DFM.

Again, please refer to the Drivers and Connections help topic and the ConnectionManager class for more information.

TDASchema

This component has been dropped for .NET. Schemas are now stored as resources in the project and editable by a simple double click on their filename in the Solution Explorer pane. They are referenced from the DataAbstractService by name and loaded from the resource at runtime when needed.

The Schemas help topic will provide more information on how schemas are handled.

TDABINStreamer, TDAXMLStreamer

Data Adapters have been renamed Data Streamers in version 4.0, as the new name is more precise and avoids confusion with the DataAdapter concept preset in ADO.NET. TDABINAdapter’s equivalent is the BinDataStreamer component contained in the RemObjects.DataAbstract namespace. Additional streamers are planned for future releases of Data Abstract for .NET.

See the Data Streamers help topic for more details.

TDACDSDataTable, TDAADODataTable and data tables in general

Data table components are not present in the .NET version of Data Abstract. The ADO.NET DataSet class contains all the important functionality introduced by these components and is used by Data Abstract just as in standard ADO.NET. The new RemoteDataAdapter component provides the necessary infrastructure for retrieving data and applying deltas of changes. It also provides the Dynamic Method Binding available in DA/Delphi's data tables.

Please check the RemoteDataAdapter component reference and the Updates help topic for more information.

TDABusinessProcessor

This component has been renamed BusinessProcessor and is contained in the RemObjects.DataAbstract.Server namespace. Its functionality is virtually identical although event names, signatures of methods etc. have been adapted to conform to .NET standards.

Check the BusinessProcessor component reference and the Updates help topic for more details.

TDADataSource

Delphi's concept of data sources has no equivalent in .NET and ADO.NET, and no data source class is provided. In .NET, controls can be directly bound to the DataSet to display and edit data.

Links

Programming with Data Abstract


Schema Modeler

Topics

Schema Modeler is the RAD design tool for Data Abstract that lets you define your data access and create your Schemas and abstract the underlying database structure separately from the data interface that your client and business tier are programmed against.

The Schema Modeler is shared between the Delphi and .NET editions of Data Abstract. It provides a consistent approach to working with Schemas regardless of the platform or platforms for which you are developing.

Launching Schema Modeler

Schema Modeler can be invoked in several ways: 	By launching it directly via the "RemObjects Data Abstract" Start menu entry

By double-clicking a .daSchema file in Windows Explorer

For .NET, by double-clicking on the .daSchema in the Visual Studio Solution Explorer

For Delphi by double-clicking a TDASchema component in the Delphi IDE or selecting Edit Schema from it's context menu.

Schema Modeler will also run as part of the New Project Guide Wizard when creating a new Data Abstract application using the provided templates.

Links

Topics


Topics

Schema Modeler

Topics

Schema Modeler Overview

After launching Schema Modeler with a schema, you will see a view similar to the following, showing four panes docked to the left and right of the main window, and a large middle pane showing the Welcome Page.

Schema Modeler Application Layout

The Schema Modeler basically consists of 5 elements:

Along the left side, you see docked windows with the Data Tables and Commands panes, and along the right side you see the Connections pane and the Data Explorer. The layout has been designed so that client access is shown on the left and server only on the right.

You... more

Data Tables Pane

The Data Tables pane lists all Data tables that are defined in your Schema.

A data table represents a rowset of data that will be retrieved and worked with by your Data Abstract application. A data table mustn't necessarily be backed by a physical table in your database, the data can come from either a table, a view or a custom query that might for example join multiple tables or calculate live data.

There are two ways to create a new data table for your schema: 1.	Press the "New Data Table" button in the pane's toolbar, and then fill in... more

Commands Pane

The Commands pane lists all Commands that are defined in your Schema.

A Command represents an action your application will want to execute on the database. This can be calling a stored procedure, Inserting/Updating/Deleting records or running any kind of custom query that performs, for example, data manipulations.

There are three ways to create a new Command for your schema:

1.	Press the New Command button in the pane's toolbar and then fill in the details for your command by hand.

2.	Drag a Stored Procedure from the Data Explorer to create a command that will call this stored procedure.

3.	Drag a dataset from... more

Detail Pane

The center of the Schema Modeler window contains the Detail Pane. Depending on which items you select in the other panes and the menu, you will see a different view here. These views are displayed:

Data Table Details: by selecting a Data Table in the left hand pane

Command Details: by selecting a Command in the left hand pane

Connection Details: by selecting a Connection in the right hand pane

Relationships View:  by clicking on the Relationships button in the toolbar

Data Dictionary Editor: by clicking on the Data Dictionary button in the toolbar

Update Rules View: by clicking on the Update Rules button in the toolbar

Diagramming and Modeling Support: by... more

Connections Pane

The Connections pane lists all database connections that are defined for your project.

Your Data Abstract applications may be built to target multiple databases with one code base, and you can use the Connections pane to define multiple connections. These connections may point to separate copies of the same database structure (say, your local test database and the live database used on the production server), or could represent different database types your applications is targeted against (say, one Microsoft SQL Server based database, and one using Borland InterBase).

You can create a new connection by pressing the " [image] New Connection"... more

Data Explorer

The Data Explorer can be used to browse the Tables, Views and Stored Procedures defined in the database referred to by the current connection. You can choose which connection to view in Data Explorer by selecting the appropriate connection in the Connections Pane.

Data Explorer is used in two places in the Schema Modeler:

1.	An instance of the Data Explorer is docked to the main window of Schema Modeler. This instance always shows the currently selected connection. You can drag items from it to the Data Tables and Commands panes to create new datasets and commands, respectively.

2.	Data Explorer... more

SQL Editor

The SQL Editor is a custom editor provided for simplifying SQL maintenance. It can be invoked in two ways:

from the Connections pane

from the Statements view of a particular dataset or command.


Schema Modeler Overview

Schema Modeler	See Also

After launching Schema Modeler with a schema, you will see a view similar to the following, showing four panes docked to the left and right of the main window, and a large middle pane showing the Welcome Page.

Schema Modeler Application Layout

The Schema Modeler basically consists of 5 elements:

Along the left side, you see docked windows with the Data Tables and Commands panes, and along the right side you see the Connections pane and the Data Explorer. The layout has been designed so that client access is shown on the left and server only on the right.

You can drag and float these panes to other locations, to best adjust Schema Modeler to the way you work.

The center of the Schema Modeler window contains the Detail pane. Depending on which items you select in the detail pane or from the toolbar or menu, you will see a different view here. These views contain: 	Data Table Details: by selecting a Data Tables in the left hand pane

Command Details: by selecting a Command in the left hand pane

Connection Details: by selecting a Connection in the right hand pane

Relationships View:  by clicking on the Relationships button in the toolbar

Data Dictionary Editor: by clicking on the Data Dictionary button in the toolbar

Update Rules View: by clicking on the Update Rules button in the toolbar

Diagramming and Modeling Support: by clicking on the Diagrams button in the toolbar

Welcome Page: on startup and is also accessible via the Help | Show Welcome Page menu item

Notes

Delphi Notes: 1.	If the Data Dictionary button is disabled, it is because the Schema Modeler was invoked from within Data Abstract and the Schema's DataDictionary property is not assigned to a TDADataDictionary component.

2.	If the Diagrams button is disabled, it is because the Schema Modeler was invoked from within the Delphi IDE and there is no TDADiagrams component linked by the Schema.

See Also

Online articles:

DA03 - Introduction to Schemas

DA14 - Introducing Diagramming with Data Abstract

Links

Schema Modeler, See Also


See Also

Online articles:

DA03 - Introduction to Schemas

DA14 - Introducing Diagramming with Data Abstract


Data Tables Pane

Schema Modeler	See Also

The Data Tables pane lists all Data tables that are defined in your Schema.

A data table represents a rowset of data that will be retrieved and worked with by your Data Abstract application. A data table mustn't necessarily be backed by a physical table in your database, the data can come from either a table, a view or a custom query that might for example join multiple tables or calculate live data.

There are two ways to create a new data table for your schema: 1.	Press the "New Data Table" button in the pane's toolbar, and then fill in the details for your table by hand

2.	Drag a table from Data Explorer to the Data Tables pane and select "Create New Data Table":

The Schema Modeler will automatically create a new data table (in this case "Categories") for you, and set it up accordingly (it will create persistent field definitions for all fields, as well as provide a default SQL query to select the data).

You can then use the Data Table Details view to make manual adjustments to the new dataset, if needed.

Notes

The Create New Data Table and Delta-Commands option in the screenshot will create additional Commands for you in the Commands Pane, to be used for INSERTING, UPDATING and DELETING data.

These created SQL commands will be identical to those that are auto-generated by BusinessProcessor , so in general you will not need to create them. But if you are planning to use custom queries for updating data, these commands provide a good starting point.

See Also

Commands Pane Connections Pane Data Explorer SQL Editor Diagramming and Modeling Support

Links

Schema Modeler, See Also


See Also

Commands Pane Connections Pane Data Explorer SQL Editor Diagramming and Modeling Support


Commands Pane

Schema Modeler	See Also

The Commands pane lists all Commands that are defined in your Schema.

A Command represents an action your application will want to execute on the database. This can be calling a stored procedure, Inserting/Updating/Deleting records or running any kind of custom query that performs, for example, data manipulations.

There are three ways to create a new Command for your schema: 1.	Press the New Command button in the pane's toolbar and then fill in the details for your command by hand.

2.	Drag a Stored Procedure from the Data Explorer to create a command that will call this stored procedure.

3.	Drag a dataset from Data Tables pane to the Command pane and select "Create Delta Commands for Data Table" to create three Insert/Update/Delete commands for the data table:

After the Schema Modeler has created the new command or commands (in this case "Insert_Customer", "Update_Customer" and "Delete_Customer"), you can then use the Command Details view to make manual adjustments to the new commands or modify their statements.

Notes

You will only need to create INSERT/UPDATE/DELETE commands if you then wish to modify them (i.e. treat them as the base for custom SQL you are going to write), since the BusinessProcessor can automatically generate default statements at runtime when updating data.

See Also

Data Tables and Connections panes

Data Explorer

SQL Editor

Diagramming and Modeling Support

Links

Schema Modeler, See Also


See Also

Data Tables and Connections panes

Data Explorer

SQL Editor

Diagramming and Modeling Support


Detail Pane

Schema Modeler	Topics

The center of the Schema Modeler window contains the Detail Pane. Depending on which items you select in the other panes and the menu, you will see a different view here. These views are displayed: 	Data Table Details: by selecting a Data Table in the left hand pane

Command Details: by selecting a Command in the left hand pane

Connection Details: by selecting a Connection in the right hand pane

Relationships View:  by clicking on the Relationships button in the toolbar

Data Dictionary Editor: by clicking on the Data Dictionary button in the toolbar

Update Rules View: by clicking on the Update Rules button in the toolbar

Diagramming and Modeling Support: by clicking on the Diagrams button in the toolbar

Welcome Page: on startup and is also accessible via the Help | Show Welcome Page menu item

Links

Schema Modeler, Topics


Topics

Detail Pane

Topics

Data Table Details

You will see the Data Table Details view when selecting a Data Table in the left hand pane of the Schema Modeler.

This view allows you to adjust the properties of a data table, including the fields that make up its rowset, the parameters needed to retrieve the dataset (if any) and the statements used to obtain the rowset from the physical database.

Command Details

You will see the Command Details view when selecting a Command in the left hand pane of the Schema Modeler.

This view allows you to adjust the properties of a command, including the parameters needed to execute the command (if any) and the statements used to run it on the database system.

Connection Details

You will see the Connection Details view when selecting a Connection in the right hand pane of the Schema Modeler.

This view allows you to adjust the properties of a connection, such as the name, the actual connection string, and whether the connection is the default connection.

Relationships View

The Master/Detail Relationships view can be activated by clicking on the Relationships button in the Schema Modeler toolbar, and allows you to edit and maintain the master/detail relationships and primary/foreign key connections between your data tables.

Data Dictionary Editor

Delphi Note: For the Data Dictionary Editor to be available when the Schema Modeler is invoked from within the IDE, the Schema's DataDictionary property needs to be assigned to a TDADataDictionary component, which can be dropped from the Data Abstract component palette.

Display the Data Dictionary Editor view by clicking on the Data Dictionary button in the Schema Modeler toolbar:

Update Rules View

Display the Update Rules view by clicking on the Update Rules button in the Schema Modeler toolbar:

The Update rules view only occupies the top half of the center pane and this allows you to view the fields of a datatable underneath.

Update rules control the processing of a delta packet on the server. If no rules are defined, items in the delta packet are processed sequentially. For master/detail relationships that you wish to update in a single server round trip, it is important to get the processing order correct.

For a master/detail update in a single shot, you need... more

Diagramming and Modeling Support

The Diagrams view can be activated via the Diagrams menu item or by right-clicking on any of the Datasets and by selecting New Diagram.

Diagrams allow you to visually layout related tables in a Entity Relationship diagram and visualize and create master/detail connections between your tables:

You can drag more data tables from the Data Tables Pane to add them to the diagram.

Dragging one or more tables from the Data Explorer to the diagram will automatically add it to the list of data tables defined in the Schema Modeler's left panel, and will also automatically import relationship data between those... more

Schema Modeler Welcome Page

The Welcome Page is automatically shown on startup and is also accessible via the Help|Show Welcome Page menu item.


Data Table Details

Detail Pane

You will see the Data Table Details view when selecting a Data Table in the left hand pane of the Schema Modeler.

This view allows you to adjust the properties of a data table, including the fields that make up its rowset, the parameters needed to retrieve the dataset (if any) and the statements used to obtain the rowset from the physical database.

Links

Detail Pane


Command Details

Detail Pane

You will see the Command Details view when selecting a Command in the left hand pane of the Schema Modeler.

This view allows you to adjust the properties of a command, including the parameters needed to execute the command (if any) and the statements used to run it on the database system.

Links

Detail Pane


Connection Details

Detail Pane

You will see the Connection Details view when selecting a Connection in the right hand pane of the Schema Modeler.

This view allows you to adjust the properties of a connection, such as the name, the actual connection string, and whether the connection is the default connection.

Links

Detail Pane


Relationships View

Detail Pane	See Also

The Master/Detail Relationships view can be activated by clicking on the Relationships button in the Schema Modeler toolbar, and allows you to edit and maintain the master/detail relationships and primary/foreign key connections between your data tables.

See Also

Diagramming and Modeling Support help topic

Links

Detail Pane, See Also


See Also

Diagramming and Modeling Support help topic


Data Dictionary Editor

Detail Pane

Delphi Note: For the Data Dictionary Editor to be available when the Schema Modeler is invoked from within the IDE, the Schema's DataDictionary property needs to be assigned to a TDADataDictionary component, which can be dropped from the Data Abstract component palette.

Display the Data Dictionary Editor view by clicking on the Data Dictionary button in the Schema Modeler toolbar:

Links

Detail Pane


Update Rules View

Detail Pane

Display the Update Rules view by clicking on the Update Rules button in the Schema Modeler toolbar:

The Update rules view only occupies the top half of the center pane and this allows you to view the fields of a datatable underneath.

Update rules control the processing of a delta packet on the server. If no rules are defined, items in the delta packet are processed sequentially. For master/detail relationships that you wish to update in a single server round trip, it is important to get the processing order correct.

For a master/detail update in a single shot, you need four rules in the following order:
DataTable	Commands
master	Insert + Update
detail	Insert + Update
detail	Delete
master	Delete
Inserts and Updates can be combined because the delta packet will not contain an Insert after an Update for a particular item.

Once update rules are in place, they are applied sequentially to the delta packet.

Links

Detail Pane


Diagramming and Modeling Support

Detail Pane	See Also

The Diagrams view can be activated via the Diagrams menu item or by right-clicking on any of the Datasets and by selecting New Diagram.

Diagrams allow you to visually layout related tables in a Entity Relationship diagram and visualize and create master/detail connections between your tables:

You can drag more data tables from the Data Tables Pane to add them to the diagram.

Dragging one or more tables from the Data Explorer to the diagram will automatically add it to the list of data tables defined in the Schema Modeler's left panel, and will also automatically import relationship data between those tables, if the database driver provides relationship meta data.

Creating Master/Detail Relationships

Adding links can be achieved by clicking on a dataset field in the diagram and by dragging it to the appropriate field in another dataset. A link can also be modified by double-clicking anywhere on the connection line representing the link. In both cases, the following dialog will display, allowing you to adjust the relationship.

Notes

Delphi Note: For Diagramming support to be available when the Schema Modeler is invoked from within the IDE, the Schema's Diagrams property needs to refer to a TDADiagrams component, which can be dropped from the Data Abstract component palette.

See Also

Relationships View help topic

Links

Detail Pane, See Also


See Also

Relationships View help topic


Schema Modeler Welcome Page

Detail Pane

The Welcome Page is automatically shown on startup and is also accessible via the Help|Show Welcome Page menu item.

Links

Detail Pane


Connections Pane

Schema Modeler	See Also

The Connections pane lists all database connections that are defined for your project.

Your Data Abstract applications may be built to target multiple databases with one code base, and you can use the Connections pane to define multiple connections. These connections may point to separate copies of the same database structure (say, your local test database and the live database used on the production server), or could represent different database types your applications is targeted against (say, one Microsoft SQL Server based database, and one using Borland InterBase).

You can create a new connection by pressing the " [image] New Connection" button, which will bring up the Connection Wizard dialog to assists you in building a connection string:

Depending on your selection for Driver Name, a different number of steps will appear in the the dialog and the help panel provided is context sensitive. For example, when you set the Driver Name to NexusDB, you get the following:

Once you press Ok, the new connection will be created, and you can configure it further via the Connection Details view (see Connection Details in the Detail Pane, especially for the note about the Default property).

You can also use the Data Explorer to browse the content of the database, or click the [image] Check Connections button to verify all the connections you have defined.

Notes

The list of available driver names will depend on the installed editions of Data Abstract.

See Also

Data Tables and Commands panes,

Data Explorer, SQL Editor, Diagramming and Modeling Support

Links

Schema Modeler, See Also


See Also

Data Tables and Commands panes,

Data Explorer, SQL Editor, Diagramming and Modeling Support


Data Explorer

Schema Modeler	See Also

The Data Explorer can be used to browse the Tables, Views and Stored Procedures defined in the database referred to by the current connection. You can choose which connection to view in Data Explorer by selecting the appropriate connection in the Connections Pane.

Data Explorer is used in two places in the Schema Modeler: 1.	An instance of the Data Explorer is docked to the main window of Schema Modeler. This instance always shows the currently selected connection. You can drag items from it to the Data Tables and Commands panes to create new datasets and commands, respectively.

2.	Data Explorer is also used inside the SQL Editor, which can be invoked from the Connections pane or from the Statements view of a particular data table or command. In SQL Editor, you can drag items from the Data Explorer to the SQL text window, to create new SQL queries or to use field names in the current query.

See Also

Data Tables, Commands and Connections panes,

SQL Editor, Diagramming and Modeling Support

Links

Schema Modeler, See Also


See Also

Data Tables, Commands and Connections panes,

SQL Editor, Diagramming and Modeling Support


SQL Editor

Schema Modeler	See Also

The SQL Editor is a custom editor provided for simplifying SQL maintenance. It can be invoked in two ways: 	from the Connections pane

from the Statements view of a particular dataset or command.

Invoking SQL Editor for manual queries

Simply right-click any connection in the Connections pane and select Open SQL Editor to open an new SQL Editor for the selected connection. You can also right-click a data table in the Data Tables pane or a table or view in the Data Explorer to open a new SQL Editor that queries that table.

You can use this instance of the SQL Editor to run any query or command that you like on the selected connection.

Invoking SQL Editor for a Statement

You can also invoke SQL Editor for a specific data table or command statement on Statements page of the Data Table Details or Command Details views. If you open SQL Editor like this, you will be editing the SQL associated with the statement in question, and any changes you make to the SQL in the editor will be applied to the statement.

Using the SQL Editor

In SQL Editor, you can drag items from the Data Explorer to the SQL text window, to create new SQL queries or to use field names in the current query:

The screenshot above shows that, having created and/or modified the SQL, you can test it by clicking on "Run as DataSet".

See Also

Data Tables, Commands and Connections panes

Data Explorer

Links

Schema Modeler, See Also


See Also

Data Tables, Commands and Connections panes

Data Explorer


Data Abstract Reference

Classes	Interfaces	Legend	Structs, Records, Enums

This reference section provides detailed information about all the components, classes and types that make up the Data Abstract library.

You can not only browse the reference based help by hierarchy here, you can also invoke context sensitive help on identifiers and components directly from your source code or form designers in Delphi, simply by clicking F1.

Links

Classes, Interfaces, Legend, Structs, Records, Enums


Data Abstract Reference Classes

Data Abstract Reference

Classes

EDASchemaModelerOnly

This exception is raised when a .DAD driver file that is licensed for use in Schema Modeler only is loaded into a Data Abstract application at runtime.

Some drivers provided with Data Abstract are based on third party data access components and require these components to be installed in order to be used by your application.

In order to provide the full design time experience with these drivers, special .DAD versions are deployed with Data Abstract, which allow these drivers to be loaded in Schema Modeler. However, allowing these driver .DADs to be dynamically loaded at runtime would circumvent the... more

TBaseLoginService

Provides the abstract the base service for the TSimpleLoginService and TMultiDbLoginService login services.

TDAADODataTable

TDAADODataTable is a TDADataTable implementation based on the ADO dataset class.

TDAADODriver

TDAADODriver is a placeholder component used to statically link the ADO driver (contained in the uDAADODriver unit) into your executable.

TDABaseField

TDABaseField is the abstract base class for field and parameter definitions in Data Abstract. It provides the common elements of the following classes: 	TDAField used for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables.

TDAParam used for parameter definitions in commands and data tables.

TDABinDataStreamer

TDABinDataStreamer implements a data streamer that uses a proprietary binary format for streaming data across the network.

The TDABinDataStreamer is the preferred streamer type, as it provides efficient streaming minimal data size for network transfer. It is also wire compatible with the BinDataStreamer available with Data Abstract for .NET.

TDABusinessProcessor

Data Abstract Business Processors provide the core logic for processing changes from client applications and applying them to the back-end database.

The functionality of the Business Processors tightly integrates with the default data service implementations provided by Data Abstract (TDataAbstractService for new v4.0 style servers, and TDARemoteService for the legacy v3.0 server interface), allowing the majority of middle-tier server applications to function without any manual processing code.

Furthermore, the data service classes provide the ability to automatically and internally instantiate business processors as needed, requiring you to drop and manually configure TDABusinessProcessor components only if you want to override the default... more

TDACache

The TDACache component provides data caching for the legacy v3.0 TDARemoteService service implementation.

TDACDSDataTable

TDACDSDataTable is a TDADataTable implementation based on the DataSnap TClientDataSet dataset class.

TDAColumnMapping

The TDAColumnMapping class represents an individual column mapping for a specific statement.

Column mappings are used to to map fields defined for a data table to specific field names in the back-end database, allowing one data table definition to be the frond-end for different database tables.

Please refer to the Column Mapping help topic for a detailed discussion of column mappings and their use in building cross-database applications.

TDAConnectionManager

The TDAConnectionManager servers two related purposes.

First, it maintains the list of connections defined for a particular Data Abstract server application and makes them available to the TDASchema and Schema Modeler for design-time purposes.

Secondly, it maintains pools of active connections at runtime, forming the foundation of all server-side database and connection pooling.

While you can edit the connections defined in a connection manager from code or in Object Inspector using the Connections collection property, you will usually edit them by double-clicking a TDASchema component that references it, to launch the Schema Modeler.

TDACustomField

TDACustomField expands the abstract TDABaseField to add properties and methods needed for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables. 	TDAParam used for parameter definitions in commands and data tables.

TDADataDictionary

The TDADataDictionary component is used to store a number of predefined field configurations (so called data dictionary entries, or data dictionary fields).

These entries exhibit most of the properties of normal fields; however, they are not used to represent actual data fields, but are templates for the configuration of actual fields in the data tables of your schema.

For example, a schema might define several tables that contain a "phone number" string field; common configuration for this field type (edit masks, display formats, field captions) might be defined in a common data dictionary entry, which is then referenced from the... more

TDADataDictionaryField

TDADataDictionaryField descends from TDACustomField to represent entries stored in a TDADataDictionary.

It adds no additional members and is only used for distinction from standard fields.

TDADataset

The TDADataset class descends from TDASQLCommand to represents an individual dataset (or data table) defined in a schema.

You will usually not create instances of this class directly, but define data tables in Schema Modeler or access them through the Datasets property of the TDASchema component.

TDADatasetProvider

TDADatasetProvider implements a DataSnap TDataSetProvider based on the TDADataTable class, allowing you to use data from a TDADataTable wherever a TDataSetProvider is expected.

Please refer to the Delphi inline help for TDataSetProvider for more details.

TDADatasetRelationship

The TDADatasetRelationship class represents individual Foreign-Key or Master/Detail relationships between data tables defined in a schema.

You will usually not create instances of this class directly, but define relationships in Schema Modeler or access them through the Relationships property of the TDASchema component.

TDADataSource

TDADataSource is a descendant of the standard Delphi TDataSource component. Instead of linking standard TDataSets to visual database components, it performs this same task for TDADataTables.

TDADataStreamer

Data Streamers perform the task of reading and writing data and delta packets from and to a format that can be transmitted over the network between client and server. As such they form a critical part of the Data Abstract architecture.

TDADataStreamer is the abstract base class on top of which the actual streamers such as the TDABinDataStreamer and TDAXmlDataStreamer are implemented.

While the TDADataStreamer exposes several public properties and methods, you will not usually work with data streamers directly, as the Data Abstract infrastructure (such as the TDataAbstractService, TDABusinessProcessor and TDARemoteDataAdapter classes) will handle the use of the streamers.

TDADataTable

TDADataTable is the abstract base class for all client data table implementations in Data Abstract.

Client Data Tables are classes that hold live data on the client application at runtime, to make it available to application code and visual controls. Client Data Tables can be filled from a remote source (typically a Data Abstract server) using a TDARemoteDataAdapter that coordinates the connection to the server; they maintain a local history of changes (Delta) and can apply those changes back to the database, again using the remote data adapter.

Data Abstract currently provides two concrete implementations of client data tables... more

TDADBISAMDriver

TDADBISAMDriver is a placeholder component used to statically link the DBISAM3 and DBISAM4 drivers (contained in the uDADBISAMDriver unit) into your executable.

TDADBSessionManager

TDADBSessionManager implements a session manager that stores session data in a database accessed using Data Abstract. This database can in theory be shared by multiple servers, allowing session state to be accessible across a server farm.

The component works similarly to the TRODBSessionManager session manager shipped with the RemObjects SDK.

TDADBXDriver

TDADBXDriver is a placeholder component used to statically link the Borland DBX driver (contained in the uDADBXDriver unit) into your executable.

TDADelta

The TDADelta interface represents a set of changes to be transmitted between client and server. This can be client-side changes that are pending to be applied to the server database, or server-side changes that are being propagated back to the client.

This class is usually access through the IDADelta interface

TDADeltaChange

The TDADeltaChange class represents an individual changed record with in TDADelta or IDADelta collection of changes.

TDADiagrams

The TDADiagrams component is used to store diagrams for a specific TDASchema.

The component has no effect at runtime, its only purpose is to serve as a storage for the diagram visualization data available in Schema Modeler.

TDADriverManager

The TDADriverManager component manages the database drivers available in a Data Abstract server application, whether they are statically linked in or dynamically loaded from .DAD files.

Every server application must contain one (and not more than one) TDADriverManager instances, and it must be referenced from the TDAConnectionManager's DriverManager property.

Please refer to the Database Drivers help topic for a more detailed discussion on how drivers work in Data Abstract.

TDAFIBDriver

TDAFIBDriver is a placeholder component used to statically link the DevRace FIBPlus driver for Firebird (contained in the uDAFIBDriver unit) into your executable.

This driver depends on the third-party FIBPlus components available from DevRace.

TDAField

TDACustomField expands the abstract TDABaseField to add properties and methods needed for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables. 	TDAParam used for parameter definitions in commands and data tables.

TDAGetDataRequest

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve data from the server.

TDAGetSchemaRequest

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve schema information from the server.

TDAGetScriptsRequest

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve schema information from the server.

TDAIBODriver

TDAIBODriver is a placeholder component used to statically link the Interbase IBO driver (contained in the uDAIBODriver unit) into your executable.

This driver depends on the third-party IBO components available from Jason Wharton.

TDAIBXDriver

TDAIBXDriver is a placeholder component used to statically link the Interbase IBX driver (contained in the uDAIBXDriver unit) into your executable.

TDAMyDACDriver

TDAMyDACDriver is a placeholder component used to statically link the CoreLab MyDAC driver for MySQL (contained in the uDAMyDACDriver unit) into your executable.

This driver depends on the third-party MyDAC components available from CoreLab.

TDAMySQLDacDriver

TDAMySQLDACDriver is a placeholder component used to statically link the microOLAP MySQLDAC driver for MySQL (contained in the uDAMySQLDACDriver unit) into your executable.

This driver depends on the third-party MySQLDAC components available from microOLAP.

TDAODACDriver

TDAODACDriver is a placeholder component used to statically link the CoreLab ODAC driver for Oracle (contained in the uDAODACDriver unit) into your executable.

This driver depends on the third-party ODAC components available from CoreLab.

TDAParam

Descending from TDABaseField, TDAParam is used to represent an individual parameter for a command or data table.

Please refer to the Command and Data Table Parameters help topic for more details.

TDAPostgresDACDriver

TDAPostgresDACDriver is a placeholder component used to statically link the microOLAP PostgresDAC driver for PostgreSQL (contained in the uDAPostgresDACDriver unit) into your executable.

This driver depends on the third-party PostgresDAC components available from microOLAP.

TDAPoweredByDataAbstractButton

TDAPoweredByDataAbstracyButton is a visual component that shows an image button with the RemObjects Data Abstract logo and the text "powered by Data Abstract". You can use it in your application's About box to let users know that your application was build with DA.

Clicking the button will open the RemObjects Software homepage (http://www.remobjects.com) in the user's default web browser.

TDAPSScriptingProvider

The TDAPSScriptingProvider forms the basis for Pascal Script integration in Data Abstract for Delphi.

You will usually hook an instance of this component up to the ScriptingProvider property of your TDADataTables and let them handle the rest.

TDARemoteDataAdapter

The TDARemoteDataAdapter component forms the center of communication from the client to the server. It provides all the logic for retrieving data into TDADataTables, applying changes back to the server and handling any other data-related communication with the server such as retrieving business rules scripts or schema information.

The adapter contains four specialized TDARemoteDataAdapterRequests to configure how communication with the server is handled. These requests can handle talking to the standard v3.0 or v4.0 service interfaces out of the box, or can be configured to any custom server interface you might be using, with Dynamic Method Binding.

TDARemoteDataAdapterRequest

Expands TRODynamicRequest for Data Abstract-specific calls done from within the TDARemoteDataAdapter.

You will not usually deal with instances of this class directly, but instead use the *Call properties on the TDARemoteDataAdapter.

TDARemoteService

TDARemoteService is the base class for old v3.0-style Data Abstract Servers. It has been deprecated and is on only provided for backward compatibility with v3.0 projects.

It is recommended to base all new Data Abstract servers on the new and advanced v4.0 interface, for which the TDataAbstractService provides the default implementation.

TDASchema

The TDASchema component represents the complete or partial schema of your database, including the data tables and commands defined for it, and relationships between data tables.

While you can edit the contents of a schema from code or in Object Inspector using the Commands, Datasets, Relationships and UpdateRules collection properties, you will usually edit your schema by double-clicking the component to launch the Schema Modeler.

TDAScriptingProvider

The abstract TDAScriptingProvider class forms the scripting support in Data Abstract for Delphi.

At the time of this writing, only RemObjects Pascal Script 3.0 is officially supported as scripting engine, via the TDAPSScriptingProvider class. Other scripting engines could be integrated with Data Abstract in the future or from third parties, by implementing their own scripting provider that connects DA to the underlying scripting technology.

For information on integrating a custom scripting language with Data Abstract, please contact support.

TDASDACDriver

TDASDACDriver is a placeholder component used to statically link the CoreLab SDAC driver for Microsoft SQL Server (contained in the uDASDACDriver unit) into your executable.

This driver depends on the third-party SDAC components available from CoreLab.

TDASQLCommand

The TDASQLCommand class represents an individual command defined in a schema.

The class also forms the base for TDADataset, which represent datasets (or data tables).

Commands can be used to perform inserts/updates/deletes for data tables in the same schema, or can perform unrelated database actions such as running stored procedures or SQL scripts.

You will usually not create instances of this class directly, but define commands in Schema Modeler or access them through the Commands property of the TDASchema component.

TDAStatement

The TDAStatement class represents an individual statement defined for a command or data table in a schema.

Each command or data table can provide one or more separate statements, allowing for different SQL to be executed for different databases or database systems. Please refer to the Cross Database Support help topic for more details on this topic.

You will usually not create instances of this class directly, but define data tables in Schema Modeler or access them through the Statements property of the TDASQLCommand or TDADataset classes.

TDataAbstractService

TDataAbstractService is the base class for the new v4.0-style Data Abstract servers.

You will generally use it as the base for implementing your data services with Data Abstract, either by using the service provided by the New Project templates or by defining your own services descending from DataAbstracctService in your server's RODL.

TDataAbstractService implements all the necessary logic for providing data access and publishing data to the clients, so your service will be ready after just dropping a few components (which will already be provided by the new project templates) and fine-tuning a couple of properties - no manual code... more

TDAUpdateDataRequest

Configures the server request that will be executed by the TDARemoteDataAdapter to apply updates to the server.

TDAUpdateRule

The TDAUpdateRule class represents an individual update rule defined in a schema.

Update rules are used to define the order in which updates to particular data tables are performed, for example to ensure that detail data is inserted after, but deleted before changes to the master record. Please refer to the Update Rules help topic for more details on this topic.

You will usually not create instances of this class directly, but define update rules in Schema Modeler or access them through the UpdateRules property of the TDASchema component.

TDAWhere

The TDAWhere class is used to dynamically build WHERE statements.

While TDAWhere currently assembles WHERE clauses as plain-text SQL string, future versions will expand upon this to persist the clause in machine-parsable format, allowing WHERE clauses to safely be passed from client to server without danger of SQL injection attacks. Where clauses will also play a major role in LINQ support in Data Abstract 5.0.

Using TDAWhere to build your WHERE clauses now (rather then manually building SQL text) will ensure the code will be future-proof to reap these benefits once TDAWhere is expanded.

TDAXmlDataStreamer

TDAXmlDataStreamer implements a data streamer that uses an easily parsable XML format for streaming data across the network.

While slower and less efficient than the TDABinDataStreamer, the XML Streamer is helpful in scenarios where non-Data Abstract clients need to access data from a Data Abstract server (or vice versa), as the nature of XML allows the data to easily be parsed on different platforms, or converted to different data layouts using XSLT.

TMultiDbLoginService

Implements the base service for user authentication with the IMultiDbLogin service interface, which allows the user to specify a database connection name as part of the login.

A service of this type will be automatically created for you when you select the MultiDb Login template when starting a new project

TSimpleLoginService

Implements the base service for user authentication with the ISimpleLogin service interface.

A service of this type will be automatically created for you when you select the Simple Login template when starting a new project.

UserInfo

The UserInfo class is used to return information about the current user from the standard Login methods of the TSimpleLoginService and TMultiDbLoginService services.

You can use either this class or define a custom descendant in your RODL that might contain additional application-specific data for this.


Data Abstract Reference Interfaces

Data Abstract Reference	Legend

Interfaces

 IDAADOConnection

This interface extends a generic IDAConnection with options specific to the ADO driver and related databases.

 IDAConnection

The IDAConnection interface represents an individual connection to a database.

Connections are usually obtained from the TDAConnectionManager component and will be implemented by different classes depending on the database driver you are using.

Connection classes for some drivers implement additional interfaces that expose driver- or database-specific functionality, such as IDAADOConnection, IDAInterbaseConnection or IDAOracleConnection.

 IDADataset

The IDADataset interface is used to represent a special type of command that fetches a record set from the database.

The interface extends IDASQLCommand, which provides the basic settings for executing commands on the database, and extends it with functionality specific to commands returning record sets.

Datasets are usually obtained via IDAConnection.NewDataset or TDASchema.NewDataset and will be implemented by different classes depending on the database driver you are using.

IDADataset is also implemented by the (usually client-side) TDADataTable, allowing it too to be used as source for data retrieval.

 IDADelta

The IDADelta interface represents a set of changes to be transmitted between client and server. These can be client-side changes that are pending to be applied to the server database, or server-side changes that are being propagated back to the client.

This interface is implemented by the TDADelta class.

 IDAIBConnectionProperties

This interface extends a generic IDAConnection with options specific to Interbase and Firebird drivers and databases.

 IDAIBTransactionAccess

This interface extends a generic IDAConnection with options specific to Interbase and Firebird transactions.

 IDAInterbaseConnection

This interface extends a generic IDAConnection to indicate the connection is specific to an Interbase or Firebird database.

 IDAOracleConnection

This interface extends a generic IDAConnection to indicate the connection is specific to an Oracle database.

 IDASQLCommand

The IDASQLCommand interface is used to represents an individual command to be executed on the database.

Commands are usually obtained via IDAConnection.NewCommand or TDASchema.NewCommand and will be implemented by different classes depending on the database driver you are using.


Legend

Interface


Data Abstract Reference Structs, Records, Enums

Data Abstract Reference	Legend

Structs, Records, Enums

 TDABlobType

Defines the different BLOB (Binary Large Object) types supported by Data Abstract.

 TDAChangeStatus

Defines the different states of a TDADeltaChange:

 TDAChangeType

Specifies the type of change represented by a TDADeltaChange:

 TDADataType

Defines the different data types supported by Data Abstract.

 TDADetailOption

Defines options used in the TDADataTable.DetailOptions property to configure the behavior of a data table in a Master/Detail relationship.

 TDAMasterMappingMode

Defines the individual options for master/detail mapping in the TDADataTable.MasterMappingMode property:

 TDAMasterOption

Defines options used in the TDADataTable.MasterOptions property to configure the behavior of a data table in a Master/Detail relationship.

 TDAParamType

Specifies the directions available for TDAParams.

 TDAPoolBehaviour

Specifies how the pool behaves when the maximum number of connections has been reached.

 TDAPoolTransactionBehaviour

Specifies how the pool handles connections that are returned to the pool with an active transaction.

 TDAProcessorOption

Defines the individual options for the TDABusinessProcessor.ProcessorOptions property:

 TDARemoteUpdatesOption

Defines possible values for the RemoteUpdatesOptions of the TDADataTable.

 TDASQLStatementType

Specifies the type of statement represented by a TDAStatement.

 TDAStreamingOption

Defines possible values for the StreamingOptions of the TDADataTable.

 TDAUpdateFailureBehavior

Specifies how Data Abstract behaves when an error is encountered while processing updates

 TDAUpdateMode

Defines the different update modes available for the TDABusinessProcessor:

 TDAXmlDataStreamerOption

Defines general options for streaming with the TDAXmlDataStreamer.

 TDAXMLRowOption

Defines the individual options for streaming rows with the TDAXmlDataStreamer.

 TDAXMLSchemaOption

Defines the individual options for streaming schema info with the TDAXmlDataStreamer.


Legend

Enumeration


Legend

Data Abstract Reference

Legend

Interface

Enumeration


EDASchemaModelerOnly Class

Data Abstract Reference	See Also

This exception is raised when a .DAD driver file that is licensed for use in Schema Modeler only is loaded into a Data Abstract application at runtime.

Some drivers provided with Data Abstract are based on third party data access components and require these components to be installed in order to be used by your application.

In order to provide the full design time experience with these drivers, special .DAD versions are deployed with Data Abstract, which allow these drivers to be loaded in Schema Modeler. However, allowing these driver .DADs to be dynamically loaded at runtime would circumvent the requirement to license these components from the third party developers, who of course rely on the revenue support and expand their products.

For this reason, these .DADs will not be loadable at runtime; any attempt to do so will result in an EDASchemaModelerOnly exception.

See Also

Database Drivers and Driver Components help topics

Pascal

EDASchemaModelerOnly = class(EDADriverLoadException);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics


TBaseLoginService Class

Data Abstract Reference	Legend	Members	Properties	See Also

Provides the abstract the base service for the TSimpleLoginService and TMultiDbLoginService login services.

Essential Events

OnLogout - implement this event in your service implementation to handle the logout

See Also

TSimpleLoginService and TMultiDbLoginService class

Pascal

TBaseLoginService = class(TRORemoteDataModule, IBaseLoginService);

Class Hierarchy

File

BaseLoginService_Impl

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TBaseLoginService Class Properties

TBaseLoginService Class	Legend

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project


Legend

Property


Legend

TBaseLoginService Class

Legend

Property


TBaseLoginService Class Members

TBaseLoginService Class	Legend

Members

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project


Legend

Property


See Also

TSimpleLoginService and TMultiDbLoginService class


TBaseLoginService.OnLogout Property

TBaseLoginService Class	TBaseLoginService Class	See Also

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project

See Also

TSimpleLoginService.OnLogin and TMultiDbLoginService.OnLogin events

New Project Templates help topic

Pascal

property OnLogout: TNotifyEvent;

Links

TBaseLoginService Class, TBaseLoginService Class, See Also


See Also

TSimpleLoginService.OnLogin and TMultiDbLoginService.OnLogin events

New Project Templates help topic


TDAADODataTable Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDAADODataTable is a TDADataTable implementation based on the ADO dataset class.

See Also

TDADataTable and TDACDSDataTable classes

Pascal

TDAADODataTable = class(TDADataTable);

Class Hierarchy

File

uDAADODataTable

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDAADODataTable Class Properties

TDAADODataTable Class	Legend

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement


Legend

Property

read only


TDAADODataTable Class Methods

TDAADODataTable Class	Legend

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.


Legend

Method

virtual


TDAADODataTable Class Events

TDAADODataTable Class	Legend

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Event


Legend

TDAADODataTable Class

Legend

Property

read only

Method

virtual

Event


TDAADODataTable Class Members

TDAADODataTable Class	Legend

Members

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Property

read only

Method

virtual

Event


See Also

TDADataTable and TDACDSDataTable classes


TDAADODriver Class

Data Abstract Reference	See Also

TDAADODriver is a placeholder component used to statically link the ADO driver (contained in the uDAADODriver unit) into your executable.

See Also

Database Drivers and Driver Components help topics

Pascal

TDAADODriver = class(TDADriverReference);

Class Hierarchy

File

uDAADODriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics


TDABaseField Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDABaseField is the abstract base class for field and parameter definitions in Data Abstract. It provides the common elements of the following classes: 	TDAField used for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables.

TDAParam used for parameter definitions in commands and data tables.

Essential Properties

Name specifies the name of the field or parameter.

DataType specifies the type of data contained within the field.

Also, Value and the individual As* properties give access to the value of the field for the current record, on live data.

See Also

TDAField, TDAParam and TDADataTable classes

Pascal

TDABaseField = class(TInterfacedCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDABaseField Class Properties

TDABaseField Class	Legend

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.


Legend

Property

read only


TDABaseField Class Methods

TDABaseField Class	Legend

Methods

 Clear

Clears the value of the field by setting it to Null.


Legend

Method


Legend

TDABaseField Class

Legend

Property

read only

Method


TDABaseField Class Members

TDABaseField Class	Legend

Members

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

Methods

 Clear

Clears the value of the field by setting it to Null.


Legend

Property

read only

Method


See Also

TDAField, TDAParam and TDADataTable classes


TDABaseField.AsBoolean Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as Boolean value.

See Also

AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsBoolean: boolean;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsCurrency Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as 64-bit fixed point Currency value.

See Also

AsBoolean, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsCurrency: currency;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsDateTime Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as TDateTime value.

See Also

AsBoolean, AsCurrency, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsDateTime: TDateTime;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsFloat Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as Float/Double value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsFloat: double;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsInteger, AsLargeInt, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsInteger Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as 32-bit integer value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsLargeInt, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsInteger: integer;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsLargeInt, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsLargeInt Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as 64-bit integer value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsString, AsVariant, AsWideString and Value properties

Pascal

property AsLargeInt: Int64;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsString, AsVariant, AsWideString and Value properties


TDABaseField.AsString Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as 8-bit ANSI string value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsVariant,AsWideString and Value properties

Pascal

property AsString: string;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsVariant,AsWideString and Value properties


TDABaseField.AsVariant Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as variant.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsWideString and Value properties

Pascal

property AsVariant: variant;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsWideString and Value properties


TDABaseField.AsWideString Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as 16-bit Unicode WideString value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and Value properties

Pascal

property AsWideString: WideString;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and Value properties


TDABaseField.BlobType Property

TDABaseField Class	TDABaseField Class	See Also

Specifies additional Blob options, if the DataType of the field is set to datBlob.

See Also

TDABlobType enum

DataType property

Pascal

property BlobType: TDABlobType;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

TDABlobType enum

DataType property


TDABaseField.DataType Property

TDABaseField Class	TDABaseField Class	See Also

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

See Also

TDADataType enum

Pascal

property DataType: TDADataType;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

TDADataType enum


TDABaseField.Description Property

TDABaseField Class	TDABaseField Class	See Also

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

See Also

Schema Modeler help topic

Pascal

property Description: string;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

Schema Modeler help topic


TDABaseField.DictionaryEntry Property

TDABaseField Class	TDABaseField Class	See Also

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry: 	DataType

BlobType

GeneratorName

Size

BusinessClassID

DisplayWidth

DisplayLabel

DisplayFormat

Visible

Alignment

DefaultValue

ReadOnly

EditMask

EditFormat

RegExpression

Required

See Also

TDADataDictionary component

Schema Modeler help topic

Pascal

property DictionaryEntry: string;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

TDADataDictionary component

Schema Modeler help topic


TDABaseField.GeneratorName Property

TDABaseField Class	TDABaseField Class	See Also

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

See Also

AutoIncs and Generators help topic

Pascal

property GeneratorName: string;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AutoIncs and Generators help topic


TDABaseField.IsNull Property

TDABaseField Class	TDABaseField Class	See Also

Returns whether the field currently contains a value (false) or is Null (true).

See Also

Clear method

Pascal

property IsNull: boolean;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

Clear method


TDABaseField.Name Property

TDABaseField Class	TDABaseField Class	See Also

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

See Also

Column Mapping help topic

Pascal

property Name: string;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

Column Mapping help topic


TDABaseField.Size Property

TDABaseField Class	TDABaseField Class	See Also

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

See Also

DataType property

Pascal

property Size: integer;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

DataType property


TDABaseField.Value Property

TDABaseField Class	TDABaseField Class	See Also

Gets or sets the value of the field as variant.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and AsWideString properties

Pascal

property Value: Variant;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and AsWideString properties


TDABaseField.Clear Method

TDABaseField Class	TDABaseField Class	See Also

Clears the value of the field by setting it to Null.

See Also

Value and IsNull properties

Pascal

procedure Clear;

Links

TDABaseField Class, TDABaseField Class, See Also


See Also

Value and IsNull properties


TDABinDataStreamer Class

Data Abstract Reference	See Also

TDABinDataStreamer implements a data streamer that uses a proprietary binary format for streaming data across the network.

The TDABinDataStreamer is the preferred streamer type, as it provides efficient streaming minimal data size for network transfer. It is also wire compatible with the BinDataStreamer available with Data Abstract for .NET.

Essential Properties

None, TDABinDataStreamer is usable after being dropped and hooked up.

See Also

TDADataStreamer and TDAXmlDataStreamer classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties

Pascal

TDABinDataStreamer = class(TDADataStreamer);

Class Hierarchy

File

uDABINAdapter

Links

Data Abstract Reference, See Also


See Also

TDADataStreamer and TDAXmlDataStreamer classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties


TDABusinessProcessor Class

Events	Data Abstract Reference	Legend	Members	Properties	See Also

Data Abstract Business Processors provide the core logic for processing changes from client applications and applying them to the back-end database.

The functionality of the Business Processors tightly integrates with the default data service implementations provided by Data Abstract (TDataAbstractService for new v4.0 style servers, and TDARemoteService for the legacy v3.0 server interface), allowing the majority of middle-tier server applications to function without any manual processing code.

Furthermore, the data service classes provide the ability to automatically and internally instantiate business processors as needed, requiring you to drop and manually configure TDABusinessProcessor components only if you want to override the default behavior.

Essential Properties

Schema references the TDASchema that the business processor will be working on. Most commonly, this is the ServiceSchema of the data service

ReferencedDataset specifies the name of the dataset (data table) that this business processor applies to

See Also

TDataAbstractService and TDARemoteService classes

TDASchema component

Pascal

TDABusinessProcessor = class(TScriptableComponent, IDASQLGenerator);

Class Hierarchy

File

uDABusinessProcessor

Links

Events, Data Abstract Reference, Legend, Members, Properties, See Also


TDABusinessProcessor Class Properties

TDABusinessProcessor Class	Legend

Properties

 BusinessRulesID

 CurrentChange

Returns the delta change currently being processed.

 CurrentDelta

Returns the delta currently being processed.

 DeleteCommandName

Specifies the name of the command that will be used to apply DELETE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing DELETE changes (which could be an SQL DELETE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateDelete in the ProcessorOptions; if poAutoGenerateDelete is specified, the Business Processor will automatically generate the necessary SQL code to perform the DELETE on the database.

 InsertCommandName

Specifies the name of the command that will be used to apply INSERT changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing INSERT changes (which could be an SQL INSERT statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateInsert in the ProcessorOptions; if poAutoGenerateInsert is specified, the Business Processor will automatically generate the necessary SQL code to perform the INSERT on the database.

 ProcessorOptions

Configured various options for the behavior of the business processor. Available options include:

 ReferencedDataset

Specifies the name of the dataset (data table) that this business processor applies to.

Every business processor is configured to handle deltas for one specific data table, and this property will be used to determine which table is handled by this processor.

 RefreshDatasetName

Specifies the name of the datatset (data table) that will be used fetch refresh data from the server.

This property only needs to be assigned if your schema provides a special dataset for refreshing data from the server (which could be an SQL SELETC statement or a stored procedure).

To make the business processor use this dataset, remove poAutoGenerateRefreshDataset in the ProcessorOptions; if poAutoGenerateRefreshDataset is specified, the Business Processor will automatically generate the necessary SQL code to perform the SELECT on the database.

 Schema

References the TDASchema that the business processor will be working on. Most commonly, this is the ServiceSchema of the data service.

All the data tables and commands referenced from InsertCommandName, UpdateCommandName, DeleteCommandName, RefreshDatasetName and ReferencedDataset must be defined in this schema

 UpdateCommandName

Specifies the name of the command that will be used to apply UPDATE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing UPDATE changes (which could be an SQL UPDATE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateUpdate in the ProcessorOptions; if poAutoGenerateUpdate is specified, the Business Processor will automatically generate the necessary SQL code to perform the UPDATE on the database.

 UpdateMode

Specifies how rows for UPDATEs and DELETEs will be located. Available options are:

 UserUpdateFields

Specifies the list of fields to be used to locate rows for updating and deleting, if the UpdateMode is set to updWhereKeyAndUserDefined or updWhereUserDefined.


Legend

Property

read only


TDABusinessProcessor Class Events

TDABusinessProcessor Class	Legend

Events

 OnAfterProcessChange

Fires right after the business processor is finished processing an individual change received from the client.

 OnAfterProcessDelta

Fires right after the business processor is finished processing a delta received from the client.

 OnBeforeProcessChange

Fires just before the business processor starts processing an individual change received from the client.

 OnBeforeProcessDelta

Fires just before the business processor starts processing a delta received from the client.

 OnGenerateSQL

Fires after the business processor has generated code for applying an update.

You can use the SQL parameter passed to this event to inspect, log or even modify the SQL before it will be applied.

 OnProcessChange

Fires as the business processor processes an individual change.

 OnProcessError

Fires if an error occurred while applying an individual change to the back-end database.

 OnRefreshDeltaChange

Fires as the business processor executes the data refresh for an individual change.


Legend

Event


Legend

TDABusinessProcessor Class

Legend

Property

read only

Event


TDABusinessProcessor Class Members

TDABusinessProcessor Class	Legend

Members

Properties

 BusinessRulesID

 CurrentChange

Returns the delta change currently being processed.

 CurrentDelta

Returns the delta currently being processed.

 DeleteCommandName

Specifies the name of the command that will be used to apply DELETE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing DELETE changes (which could be an SQL DELETE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateDelete in the ProcessorOptions; if poAutoGenerateDelete is specified, the Business Processor will automatically generate the necessary SQL code to perform the DELETE on the database.

 InsertCommandName

Specifies the name of the command that will be used to apply INSERT changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing INSERT changes (which could be an SQL INSERT statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateInsert in the ProcessorOptions; if poAutoGenerateInsert is specified, the Business Processor will automatically generate the necessary SQL code to perform the INSERT on the database.

 ProcessorOptions

Configured various options for the behavior of the business processor. Available options include:

 ReferencedDataset

Specifies the name of the dataset (data table) that this business processor applies to.

Every business processor is configured to handle deltas for one specific data table, and this property will be used to determine which table is handled by this processor.

 RefreshDatasetName

Specifies the name of the datatset (data table) that will be used fetch refresh data from the server.

This property only needs to be assigned if your schema provides a special dataset for refreshing data from the server (which could be an SQL SELETC statement or a stored procedure).

To make the business processor use this dataset, remove poAutoGenerateRefreshDataset in the ProcessorOptions; if poAutoGenerateRefreshDataset is specified, the Business Processor will automatically generate the necessary SQL code to perform the SELECT on the database.

 Schema

References the TDASchema that the business processor will be working on. Most commonly, this is the ServiceSchema of the data service.

All the data tables and commands referenced from InsertCommandName, UpdateCommandName, DeleteCommandName, RefreshDatasetName and ReferencedDataset must be defined in this schema

 UpdateCommandName

Specifies the name of the command that will be used to apply UPDATE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing UPDATE changes (which could be an SQL UPDATE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateUpdate in the ProcessorOptions; if poAutoGenerateUpdate is specified, the Business Processor will automatically generate the necessary SQL code to perform the UPDATE on the database.

 UpdateMode

Specifies how rows for UPDATEs and DELETEs will be located. Available options are:

 UserUpdateFields

Specifies the list of fields to be used to locate rows for updating and deleting, if the UpdateMode is set to updWhereKeyAndUserDefined or updWhereUserDefined.

Events

 OnAfterProcessChange

Fires right after the business processor is finished processing an individual change received from the client.

 OnAfterProcessDelta

Fires right after the business processor is finished processing a delta received from the client.

 OnBeforeProcessChange

Fires just before the business processor starts processing an individual change received from the client.

 OnBeforeProcessDelta

Fires just before the business processor starts processing a delta received from the client.

 OnGenerateSQL

Fires after the business processor has generated code for applying an update.

You can use the SQL parameter passed to this event to inspect, log or even modify the SQL before it will be applied.

 OnProcessChange

Fires as the business processor processes an individual change.

 OnProcessError

Fires if an error occurred while applying an individual change to the back-end database.

 OnRefreshDeltaChange

Fires as the business processor executes the data refresh for an individual change.


Legend

Property

read only

Event


See Also

TDataAbstractService and TDARemoteService classes

TDASchema component


TDABusinessProcessor.BusinessRulesID Property

TDABusinessProcessor Class	TDABusinessProcessor Class

property BusinessRulesID: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class


TDABusinessProcessor.CurrentChange Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Returns the delta change currently being processed.

See Also

CurrentDelta property

TDADeltaChange class

Pascal

property CurrentChange: TDADeltaChange;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

CurrentDelta property

TDADeltaChange class


TDABusinessProcessor.CurrentDelta Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Returns the delta currently being processed.

See Also

CurrentChange property

TDADelta class and IDADelta interface

Pascal

property CurrentDelta: TDADelta;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

CurrentChange property

TDADelta class and IDADelta interface


TDABusinessProcessor.DeleteCommandName Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies the name of the command that will be used to apply DELETE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing DELETE changes (which could be an SQL DELETE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateDelete in the ProcessorOptions; if poAutoGenerateDelete is specified, the Business Processor will automatically generate the necessary SQL code to perform the DELETE on the database.

See Also

InsertCommandName, UpdateCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics

Pascal

property DeleteCommandName: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

InsertCommandName, UpdateCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics


TDABusinessProcessor.InsertCommandName Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies the name of the command that will be used to apply INSERT changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing INSERT changes (which could be an SQL INSERT statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateInsert in the ProcessorOptions; if poAutoGenerateInsert is specified, the Business Processor will automatically generate the necessary SQL code to perform the INSERT on the database.

See Also

UpdateCommandName, DeleteCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics

Pascal

property InsertCommandName: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

UpdateCommandName, DeleteCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics


TDABusinessProcessor.OnAfterProcessChange Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires right after the business processor is finished processing an individual change received from the client.

Use Case

Use this event to inspect or log the result of the change, and to determine if the individual change can be removed from the delta as having been fully processed, or not.

See Also

OnProcessChange, OnBeforeProcessChange and OnAfterProcessDelta events

Pascal

property OnAfterProcessChange: TDAAfterProcessChangeEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnProcessChange, OnBeforeProcessChange and OnAfterProcessDelta events


TDABusinessProcessor.OnAfterProcessDelta Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires right after the business processor is finished processing a delta received from the client.

Use Case

You can use this event to inspect (or modify) any resulting delta that was generated and will be sent back to the client.

See Also

OnBeforeProcessDelta and OnAfterProcessChange events

Pascal

property OnAfterProcessDelta: TDAProcessDeltaEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnBeforeProcessDelta and OnAfterProcessChange events


TDABusinessProcessor.OnBeforeProcessChange Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires just before the business processor starts processing an individual change received from the client.

Use Case

Use this event to inspect or make modifications to the change before it will be applied, or to prevent the change from being applied at all by setting the ProcessChange parameter to false.

See Also

OnProcessChange, OnAfterProcessChange and OnBeforeProcessDelta events

Pascal

property OnBeforeProcessChange: TDABeforeProcessChangeEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnProcessChange, OnAfterProcessChange and OnBeforeProcessDelta events


TDABusinessProcessor.OnBeforeProcessDelta Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires just before the business processor starts processing a delta received from the client.

See Also

OnAfterProcessDelta and OnBeforeProcessChange events

Pascal

property OnBeforeProcessDelta: TDAProcessDeltaEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnAfterProcessDelta and OnBeforeProcessChange events


TDABusinessProcessor.OnGenerateSQL Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires after the business processor has generated code for applying an update.

You can use the SQL parameter passed to this event to inspect, log or even modify the SQL before it will be applied.

Notes

Note that this event will not fore for every individual change that is being processed; for each round of updates, the business processor will only generate each type of SQL statement (INSERT, UPDATE, DELETE and refresh SELECT) once. Therefore, you should not use this event to make change-specific modifications to the SQL code.

See Also

ProcessorOptions property

InsertCommandName, UpdateCommandName,DeleteCommandName and RefreshDatasetName properties

Pascal

property OnGenerateSQL: TDAGenerateSQLEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

ProcessorOptions property

InsertCommandName, UpdateCommandName,DeleteCommandName and RefreshDatasetName properties


TDABusinessProcessor.OnProcessChange Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires as the business processor processes an individual change.

Use Case

Use this event to inspect or log the change being processed, including the actual command and it's parameters that will be run on the dataset.

You can also use this event to make last adjustments to the command or its parameters, if needed, but modifications to the change itself will have no effect, as the command has already been fully initialized.

See Also

OnBeforeProcessChange and OnAfterProcessChange events

OnRefreshDeltaChange

Pascal

property OnProcessChange: TDAProcessChangeEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnBeforeProcessChange and OnAfterProcessChange events

OnRefreshDeltaChange


TDABusinessProcessor.OnProcessError Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires if an error occurred while applying an individual change to the back-end database.

See Also

OnProcessChange, OnBeforeProcessChange and OnAfterProcessChange events

Pascal

property OnProcessError: TDAProcessErrorEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnProcessChange, OnBeforeProcessChange and OnAfterProcessChange events


TDABusinessProcessor.OnRefreshDeltaChange Event

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Fires as the business processor executes the data refresh for an individual change.

Use Case

Use this event to inspect or log the refresh, including the actual SQL and dataset parameters parameters.

You can also use this event to make last adjustments to the dataset SQL or its parameters.

See Also

OnProcessChange

Pascal

property OnRefreshDeltaChange: TDARefreshDeltaChangeEvent;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

OnProcessChange


TDABusinessProcessor.ProcessorOptions Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Configured various options for the behavior of the business processor. Available options include:

Value	Meaning
poAutoGenerateInsert	Generate automatic INSERT statements instead of using the InsertCommandName.
poAutoGenerateUpdate	Generate automatic UPDATE statements instead of using the UpdateCommandName.
poAutoGenerateDelete	Generate automatic DELETE statements instead of using the DeleteCommandName.
poAutoGenerateRefreshDataset	Generate automatic SELECT statements instead of using the RefreshDatasetName.
poPrepareCommands	Prepare commands against the back-end database for faster execution. See IDASQLCommand.Prepared for details.
poIgnoreStaticCommands	DEPRECATED AND UNDER REVIEW.
poIgnoreRowsAffected	Disables the "no rows were affected by this update" error message.
See Also

TDAProcessorOption enum

IDASQLCommand.Prepared property

Pascal

property ProcessorOptions: TDAProcessorOptions;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

TDAProcessorOption enum

IDASQLCommand.Prepared property


TDABusinessProcessor.ReferencedDataset Property

TDABusinessProcessor Class	TDABusinessProcessor Class

Specifies the name of the dataset (data table) that this business processor applies to.

Every business processor is configured to handle deltas for one specific data table, and this property will be used to determine which table is handled by this processor.

Pascal

property ReferencedDataset: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class


TDABusinessProcessor.RefreshDatasetName Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies the name of the datatset (data table) that will be used fetch refresh data from the server.

This property only needs to be assigned if your schema provides a special dataset for refreshing data from the server (which could be an SQL SELETC statement or a stored procedure).

To make the business processor use this dataset, remove poAutoGenerateRefreshDataset in the ProcessorOptions; if poAutoGenerateRefreshDataset is specified, the Business Processor will automatically generate the necessary SQL code to perform the SELECT on the database.

See Also

InsertCommandName, UpdateCommandName and DeleteCommandName properties

ProcessorOptions property

TDADataset class

Schema Modeler and Data Tables Pane help topics

Pascal

property RefreshDatasetName: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

InsertCommandName, UpdateCommandName and DeleteCommandName properties

ProcessorOptions property

TDADataset class

Schema Modeler and Data Tables Pane help topics


TDABusinessProcessor.Schema Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

References the TDASchema that the business processor will be working on. Most commonly, this is the ServiceSchema of the data service.

All the data tables and commands referenced from InsertCommandName, UpdateCommandName, DeleteCommandName, RefreshDatasetName and ReferencedDataset must be defined in this schema

See Also

InsertCommandName, UpdateCommandName, DeleteCommandName, RefreshDatasetName and ReferencedDataset properties

TDataAbstractService.ServiceSchema property

TDASchema component

Pascal

property Schema: TDASchema;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

InsertCommandName, UpdateCommandName, DeleteCommandName, RefreshDatasetName and ReferencedDataset properties

TDataAbstractService.ServiceSchema property

TDASchema component


TDABusinessProcessor.UpdateCommandName Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies the name of the command that will be used to apply UPDATE changes for the data table back to the server.

This property only needs to be assigned if your schema provides a special command for processing UPDATE changes (which could be an SQL UPDATE statement or a stored procedure).

To make the business processor use this command, remove poAutoGenerateUpdate in the ProcessorOptions; if poAutoGenerateUpdate is specified, the Business Processor will automatically generate the necessary SQL code to perform the UPDATE on the database.

See Also

InsertCommandName, DeleteCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics

Pascal

property UpdateCommandName: string;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

InsertCommandName, DeleteCommandName and RefreshDatasetName properties

ProcessorOptions property

TDASQLCommand class

Schema Modeler and Commands Pane help topics


TDABusinessProcessor.UpdateMode Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies how rows for UPDATEs and DELETEs will be located. Available options are:

Value	Meaning
updWhereKeyOnly	Only the fields from the primary key (PK) of the data table will be used to locate records for UPDATEs and DELETEs.
updWhereAll	All fields defined for the data table will be used to locate records for UPDATEs and DELETEs.
updWhereKeyAndUserDefined	The fields from the primary key (PK) of the data table plus those listed in the business processor's UserUpdateFields property will be used to locate records for UPDATEs and DELETEs.
updWhereUserDefined	Only the fields listed in the business processor's UserUpdateFields property will be used to locate records for UPDATEs and DELETEs.
See Also

UserUpdateFields property

TDAUpdateMode enum

Pascal

property UpdateMode: TDAUpdateMode;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

UserUpdateFields property

TDAUpdateMode enum


TDABusinessProcessor.UserUpdateFields Property

TDABusinessProcessor Class	TDABusinessProcessor Class	See Also

Specifies the list of fields to be used to locate rows for updating and deleting, if the UpdateMode is set to updWhereKeyAndUserDefined or updWhereUserDefined.

See Also

UpdateMode property

TDAUpdateMode enum

Pascal

property UserUpdateFields: TStrings;

Links

TDABusinessProcessor Class, TDABusinessProcessor Class, See Also


See Also

UpdateMode property

TDAUpdateMode enum


TDACache Class

Data Abstract Reference	See Also

The TDACache component provides data caching for the legacy v3.0 TDARemoteService service implementation.

Essential Properties

None, the component is ready for use after being dropped and hooked up to thew Cache property of the v3.0 service module.

Notes

Due to the nature of the new v4.0 service interface and its ability to fetch arbitrary groups of data tables at once, caching of data packets is not provided for the v4.0 service, as it would provide little-to-no performance benefit.

See Also

TDARemoteService.Cache property

The New v4.0 Service Interface help topic

Pascal

TDACache = class(TComponent);

Class Hierarchy

File

uDACache

Links

Data Abstract Reference, See Also


See Also

TDARemoteService.Cache property

The New v4.0 Service Interface help topic


TDACDSDataTable Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDACDSDataTable is a TDADataTable implementation based on the DataSnap TClientDataSet dataset class.

See Also

TDADataTable and TDAADODataTable classes

Pascal

TDACDSDataTable = class(TDADataTable, IDAClonedCursorsSupport, IDARangeController, IDANativeDatasetStreaming, IDASimpleClonedCursorsSupport);

Class Hierarchy

File

uDACDSDataTable

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDACDSDataTable Class Properties

TDACDSDataTable Class	Legend

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement


Legend

Property

read only


TDACDSDataTable Class Methods

TDACDSDataTable Class	Legend

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.

TDACDSDataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 NativeLoadFromFile

Loads the content of the data table from a file, using the native DataSnap TClientDataSet data format.

 NativeLoadFromStream

Loads the content of the data table from a stream, using the native DataSnap TClientDataSet data format.

 NativeSaveToFile

Saves the content of the data table to a file, using the native DataSnap TClientDataSet data format.

 NativeSaveToStream

Saves the content of the data table to a stream, using the native DataSnap TClientDataSet data format.


Legend

Method

virtual


TDACDSDataTable Class Events

TDACDSDataTable Class	Legend

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Event


Legend

TDACDSDataTable Class

Legend

Property

read only

Method

virtual

Event


TDACDSDataTable Class Members

TDACDSDataTable Class	Legend

Members

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.

TDACDSDataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 NativeLoadFromFile

Loads the content of the data table from a file, using the native DataSnap TClientDataSet data format.

 NativeLoadFromStream

Loads the content of the data table from a stream, using the native DataSnap TClientDataSet data format.

 NativeSaveToFile

Saves the content of the data table to a file, using the native DataSnap TClientDataSet data format.

 NativeSaveToStream

Saves the content of the data table to a stream, using the native DataSnap TClientDataSet data format.

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Property

read only

Method

virtual

Event


See Also

TDADataTable and TDAADODataTable classes


TDACDSDataTable.ApplyUpdates Method

TDACDSDataTable Class	TDACDSDataTable Class	See Also

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

See Also

Delta property

CancelUpdates method

RemoteDataAdapter.UpdateDataCall property

Pascal

function ApplyUpdates(RefetchAll: boolean = FALSE): boolean; override;

Links

TDACDSDataTable Class, TDACDSDataTable Class, See Also


See Also

Delta property

CancelUpdates method

RemoteDataAdapter.UpdateDataCall property


TDACDSDataTable.NativeLoadFromFile Method

TDACDSDataTable Class	TDACDSDataTable Class	See Also

Loads the content of the data table from a file, using the native DataSnap TClientDataSet data format.

See Also

NativeLoadFromStream, NativeSaveToFile and NativeSaveToStreammethods

Pascal

procedure NativeLoadFromFile(const aFileName: string);

Links

TDACDSDataTable Class, TDACDSDataTable Class, See Also


See Also

NativeLoadFromStream, NativeSaveToFile and NativeSaveToStreammethods


TDACDSDataTable.NativeLoadFromStream Method

TDACDSDataTable Class	TDACDSDataTable Class	See Also

Loads the content of the data table from a stream, using the native DataSnap TClientDataSet data format.

See Also

NativeLoadFromFile, NativeSaveToFile and NativeSaveToStreammethods

Pascal

procedure NativeLoadFromStream(aStream: TStream);

Links

TDACDSDataTable Class, TDACDSDataTable Class, See Also


See Also

NativeLoadFromFile, NativeSaveToFile and NativeSaveToStreammethods


TDACDSDataTable.NativeSaveToFile Method

TDACDSDataTable Class	TDACDSDataTable Class	See Also

Saves the content of the data table to a file, using the native DataSnap TClientDataSet data format.

See Also

NativeLoadFromFile, NativeLoadFromStream and NativeSaveToStreammethods

Pascal

procedure NativeSaveToFile(const aFileName: string; DataFormat: TDANativeDataFormat = ndfBinary);

Links

TDACDSDataTable Class, TDACDSDataTable Class, See Also


See Also

NativeLoadFromFile, NativeLoadFromStream and NativeSaveToStreammethods


TDACDSDataTable.NativeSaveToStream Method

TDACDSDataTable Class	TDACDSDataTable Class	See Also

Saves the content of the data table to a stream, using the native DataSnap TClientDataSet data format.

See Also

NativeLoadFromFile, NativeLoadFromStream and NativeSaveToFile methods

Pascal

procedure NativeSaveToStream(aStream: TStream; DataFormat: TDANativeDataFormat = ndfBinary);

Links

TDACDSDataTable Class, TDACDSDataTable Class, See Also


See Also

NativeLoadFromFile, NativeLoadFromStream and NativeSaveToFile methods


TDAColumnMapping Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDAColumnMapping class represents an individual column mapping for a specific statement.

Column mappings are used to to map fields defined for a data table to specific field names in the back-end database, allowing one data table definition to be the frond-end for different database tables.

Please refer to the Column Mapping help topic for a detailed discussion of column mappings and their use in building cross-database applications.

See Also

TDABaseField.Name property

TDAStatement class

Column Mapping help topic

Pascal

TDAColumnMapping = class(TInterfacedCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAColumnMapping Class Properties

TDAColumnMapping Class	Legend

Properties

 DatasetField

Specifies the name of the field in the data table that this mapping pertains to.

Please refer to the Column Mapping help topic for a detailed discussion on column mappings.

 SQLOrigin

Specifies the name of the database column that the data for this field originates from.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as

 TableField

Specifies the name of the recordset column that contains the data for this field.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as


Legend

Property


Legend

TDAColumnMapping Class

Legend

Property


TDAColumnMapping Class Members

TDAColumnMapping Class	Legend

Members

Properties

 DatasetField

Specifies the name of the field in the data table that this mapping pertains to.

Please refer to the Column Mapping help topic for a detailed discussion on column mappings.

 SQLOrigin

Specifies the name of the database column that the data for this field originates from.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as

 TableField

Specifies the name of the recordset column that contains the data for this field.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as


Legend

Property


See Also

TDABaseField.Name property

TDAStatement class

Column Mapping help topic


TDAColumnMapping.DatasetField Property

TDAColumnMapping Class	TDAColumnMapping Class	See Also

Specifies the name of the field in the data table that this mapping pertains to.

Please refer to the Column Mapping help topic for a detailed discussion on column mappings.

See Also

TDABaseField.Name property

Column Mapping help topic

Pascal

property DatasetField: string;

Links

TDAColumnMapping Class, TDAColumnMapping Class, See Also


See Also

TDABaseField.Name property

Column Mapping help topic


TDAColumnMapping.SQLOrigin Property

TDAColumnMapping Class	TDAColumnMapping Class	See Also

Specifies the name of the database column that the data for this field originates from.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as

SELECT Name AS UserName FROM ...

In the case above, SQLOrigin would be "UserName" while the TableField would be "Name".

The SQLOrigin property will be used to locate the right field in the recordset retrieved from the server, so it must match the output column name in the SELECT statement.

See Also

DatasetField and TableField properties

TDAStatement.TargetTable property

Column Mapping help topic

Pascal

property SQLOrigin: string;

Links

TDAColumnMapping Class, TDAColumnMapping Class, See Also


See Also

DatasetField and TableField properties

TDAStatement.TargetTable property

Column Mapping help topic


TDAColumnMapping.TableField Property

TDAColumnMapping Class	TDAColumnMapping Class	See Also

Specifies the name of the recordset column that contains the data for this field.

In most cases, this will be identical to the field's Name, unless the field was manually renamed or the original query for the data table uses the SQL "AS" keyword to rename fields, such as

SELECT Name AS UserName FROM ...

In the above case, TableField would be "Name" while the SQLOrigin would be "UserName".

The TableField property will be used as field-name in auto-generated INSERT, UPDATE and DELETE statements, as well as in SELECT statements generated by AutoSQL or DynamicWhere, so it must match the physical column in the data table.

See Also

DatasetField and SQLOrigin properties

TDAStatement.TargetTable property

Column Mapping help topic

Pascal

property TableField: string;

Links

TDAColumnMapping Class, TDAColumnMapping Class, See Also


See Also

DatasetField and SQLOrigin properties

TDAStatement.TargetTable property

Column Mapping help topic


TDAConnectionManager Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDAConnectionManager servers two related purposes.

First, it maintains the list of connections defined for a particular Data Abstract server application and makes them available to the TDASchema and Schema Modeler for design-time purposes.

Secondly, it maintains pools of active connections at runtime, forming the foundation of all server-side database and connection pooling.

While you can edit the connections defined in a connection manager from code or in Object Inspector using the Connections collection property, you will usually edit them by double-clicking a TDASchema component that references it, to launch the Schema Modeler.

Essential Properties

DriverManager must reference the application's TDADriverManager instance

See Also

TDABaseField.DataDictionary property

TDASchema component

Schema Modeler and Connections Pane help topics

Pascal

TDAConnectionManager = class(TDAStreamableComponent, IDAConnectionManager, IDAConnectionPool);

Class Hierarchy

File

uDAClasses

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDAConnectionManager Class Properties

TDAConnectionManager Class	Legend

Properties

 Connections

Maintains the list of connections (a.k.a. connection strings) defined in the dictionary.

 DriverManager

Must reference the application's TDADriverManager instance, which maintains a list of all known database drivers, whether statically linked or dynamically loaded.

 MaxPoolSize

Specifies the maximum number of connections allows in the pool for each connection string.

The value of the PoolBehaviour property will control how the pools will behave if the maximum number of connections is reached.

 PoolBehaviour

Specifies how the pool behaves when the maximum number of connections has been reached.

 PoolingEnabled

Specifies whether connection pooling is enabled, or not. Default is true.

If enabled, the connection manager will maintain a pool of reusable connections, to avoid the overhead of creating and destroying database connections for each request. If disabled, each call to NewConnection will create a new connection to the back-end database, which will be closed when it is released.

 PoolSize

Returns the current size of the connection pool.

 PoolTimeoutSeconds

Specifies after how many seconds of inactivity old connections will be removed from the pool and closed. Default is 60 seconds.

 PoolTransactionBehaviour

Specifies how the pool handles connections that are returned to the pool with an active transaction.

 WaitIntervalSeconds

Specifies the number of seconds that NewConnection will wait between attempts to acquire a new connection, if the pool ix maximized out and PoolBehaviour is set to pbWait.


Legend

Property

read only


TDAConnectionManager Class Events

TDAConnectionManager Class	Legend

Events

 OnConnectionAcquired

Fires whenever a connection was acquired. This connection could have been freshly created (in which case the OnConnectionCreated event will also fire), or be obtained from a pool.

 OnConnectionCreated

Fires whenever a new connection was created. The event will not fire if a pooled connection was reused.

 OnConnectionFailure

Fires if an attempt to acquire a new connection has failed, for whatever reason.

 OnConnectionTimedOut

Fires when a pooled connection has timed out and will be removed from the pool.


Legend

Event


TDAConnectionManager Class Methods

TDAConnectionManager Class	Legend

Methods

 ClearPool

Removes all connections from the pool.

Note that calling ClearPool will not automatically close connections that are currently active; any active connections will remain active until they are released.

 NewConnection

Returns a new connection, either from the pool or a freshly created one.


Legend

Method


Legend

TDAConnectionManager Class

Legend

Property

read only

Event

Method


TDAConnectionManager Class Members

TDAConnectionManager Class	Legend

Members

Properties

 Connections

Maintains the list of connections (a.k.a. connection strings) defined in the dictionary.

 DriverManager

Must reference the application's TDADriverManager instance, which maintains a list of all known database drivers, whether statically linked or dynamically loaded.

 MaxPoolSize

Specifies the maximum number of connections allows in the pool for each connection string.

The value of the PoolBehaviour property will control how the pools will behave if the maximum number of connections is reached.

 PoolBehaviour

Specifies how the pool behaves when the maximum number of connections has been reached.

 PoolingEnabled

Specifies whether connection pooling is enabled, or not. Default is true.

If enabled, the connection manager will maintain a pool of reusable connections, to avoid the overhead of creating and destroying database connections for each request. If disabled, each call to NewConnection will create a new connection to the back-end database, which will be closed when it is released.

 PoolSize

Returns the current size of the connection pool.

 PoolTimeoutSeconds

Specifies after how many seconds of inactivity old connections will be removed from the pool and closed. Default is 60 seconds.

 PoolTransactionBehaviour

Specifies how the pool handles connections that are returned to the pool with an active transaction.

 WaitIntervalSeconds

Specifies the number of seconds that NewConnection will wait between attempts to acquire a new connection, if the pool ix maximized out and PoolBehaviour is set to pbWait.

Events

 OnConnectionAcquired

Fires whenever a connection was acquired. This connection could have been freshly created (in which case the OnConnectionCreated event will also fire), or be obtained from a pool.

 OnConnectionCreated

Fires whenever a new connection was created. The event will not fire if a pooled connection was reused.

 OnConnectionFailure

Fires if an attempt to acquire a new connection has failed, for whatever reason.

 OnConnectionTimedOut

Fires when a pooled connection has timed out and will be removed from the pool.

Methods

 ClearPool

Removes all connections from the pool.

Note that calling ClearPool will not automatically close connections that are currently active; any active connections will remain active until they are released.

 NewConnection

Returns a new connection, either from the pool or a freshly created one.


Legend

Property

read only

Event

Method


See Also

TDABaseField.DataDictionary property

TDASchema component

Schema Modeler and Connections Pane help topics


TDAConnectionManager.Connections Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Maintains the list of connections (a.k.a. connection strings) defined in the dictionary.

See Also

Schema Modeler and Connections Pane help topics

Pascal

property Connections: TDAConnectionCollection;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

Schema Modeler and Connections Pane help topics


TDAConnectionManager.DriverManager Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Must reference the application's TDADriverManager instance, which maintains a list of all known database drivers, whether statically linked or dynamically loaded.

See Also

TDADriverManager component

Database Drivers and Driver Components help topics

Pascal

property DriverManager: TDADriverManager;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

TDADriverManager component

Database Drivers and Driver Components help topics


TDAConnectionManager.MaxPoolSize Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies the maximum number of connections allows in the pool for each connection string.

The value of the PoolBehaviour property will control how the pools will behave if the maximum number of connections is reached.

See Also

PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

TDAPoolBehaviour enum

Connection Pooling help topic

Pascal

property MaxPoolSize: cardinal;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

TDAPoolBehaviour enum

Connection Pooling help topic


TDAConnectionManager.OnConnectionAcquired Event

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Fires whenever a connection was acquired. This connection could have been freshly created (in which case the OnConnectionCreated event will also fire), or be obtained from a pool.

See Also

OnConnectionCreated and OnConnectionFailure event

Pascal

property OnConnectionAcquired: TDAConnectionNotifyEvent;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

OnConnectionCreated and OnConnectionFailure event


TDAConnectionManager.OnConnectionCreated Event

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Fires whenever a new connection was created. The event will not fire if a pooled connection was reused.

See Also

OnConnectionAcquired and OnConnectionFailure event

Pascal

property OnConnectionCreated: TDAConnectionNotifyEvent;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

OnConnectionAcquired and OnConnectionFailure event


TDAConnectionManager.OnConnectionFailure Event

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Fires if an attempt to acquire a new connection has failed, for whatever reason.

See Also

OnConnectionAcquired and OnConnectionCreated event

NewConnection method

Pascal

property OnConnectionFailure: TDAConnectionFailureEvent;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

OnConnectionAcquired and OnConnectionCreated event

NewConnection method


TDAConnectionManager.OnConnectionTimedOut Event

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Fires when a pooled connection has timed out and will be removed from the pool.

See Also

Connection Pooling help topic

Pascal

property OnConnectionTimedOut: TDAConnectionTimeoutEvent;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

Connection Pooling help topic


TDAConnectionManager.PoolBehaviour Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies how the pool behaves when the maximum number of connections has been reached.

Value	Meaning
pbRaiseError	The call to NewConnection will fail with an exception.
pbWait	The call to NewConnection will wait until another connection is freed, and it will then return a connection.
pbIgnoreAndReturn	The call to NewConnection will return nil.
See Also

MaxPoolSize, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

WaitIntervalSeconds property

NewConnection method

TDAPoolBehaviour enum

Connection Pooling help topic

Pascal

property PoolBehaviour: TDAPoolBehaviour;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

WaitIntervalSeconds property

NewConnection method

TDAPoolBehaviour enum

Connection Pooling help topic


TDAConnectionManager.PoolingEnabled Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies whether connection pooling is enabled, or not. Default is true.

If enabled, the connection manager will maintain a pool of reusable connections, to avoid the overhead of creating and destroying database connections for each request. If disabled, each call to NewConnection will create a new connection to the back-end database, which will be closed when it is released.

See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

Connection Pooling help topic

Pascal

property PoolingEnabled: boolean;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

Connection Pooling help topic


TDAConnectionManager.PoolSize Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Returns the current size of the connection pool.

See Also

MaxPoolSize property

Connection Pooling help topic

Pascal

property PoolSize: Integer;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize property

Connection Pooling help topic


TDAConnectionManager.PoolTimeoutSeconds Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies after how many seconds of inactivity old connections will be removed from the pool and closed. Default is 60 seconds.

See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

Connection Pooling help topic

Pascal

property PoolTimeoutSeconds: cardinal;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

NewConnection method

Connection Pooling help topic


TDAConnectionManager.PoolTransactionBehaviour Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies how the pool handles connections that are returned to the pool with an active transaction.

Value	Meaning
ptNone	No action will be taken.
ptRollback	The transaction will be rolled back, losing all changes (recommended).
ptCommit	The transaction will be committed, applying all changes to the underlying database.
See Also

MaxPoolSize, PoolingEnabled and PoolTimeoutSeconds properties

NewConnection method

TDAPoolTransactionBehaviour enum

Connection Pooling help topic

Pascal

property PoolTransactionBehaviour: TDAPoolTransactionBehaviour;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize, PoolingEnabled and PoolTimeoutSeconds properties

NewConnection method

TDAPoolTransactionBehaviour enum

Connection Pooling help topic


TDAConnectionManager.WaitIntervalSeconds Property

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Specifies the number of seconds that NewConnection will wait between attempts to acquire a new connection, if the pool ix maximized out and PoolBehaviour is set to pbWait.

See Also

PoolBehaviour property

NewConnection method

Connection Pooling help topic

Pascal

property WaitIntervalSeconds: cardinal;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

PoolBehaviour property

NewConnection method

Connection Pooling help topic


TDAConnectionManager.ClearPool Method

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Removes all connections from the pool.

Note that calling ClearPool will not automatically close connections that are currently active; any active connections will remain active until they are released.

See Also

Connection Pooling help topic

Pascal

procedure ClearPool;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

Connection Pooling help topic


TDAConnectionManager.NewConnection Method

TDAConnectionManager Class	TDAConnectionManager Class	See Also

Returns a new connection, either from the pool or a freshly created one.

See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

Connection Pooling help topic

Pascal

function NewConnection(const aConnectionName: string; OpenConnection: boolean = TRUE; const UserID: string = ''; const Password: string = ''): IDAConnection;

Links

TDAConnectionManager Class, TDAConnectionManager Class, See Also


See Also

MaxPoolSize, PoolBehaviour, PoolingEnabled, PoolTimeoutSeconds and PoolTransactionBehaviour properties

Connection Pooling help topic


TDACustomField Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDACustomField expands the abstract TDABaseField to add properties and methods needed for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables. 	TDAParam used for parameter definitions in commands and data tables.

Essential Properties

Name specifies the name of the field or parameter.

DataType specifies the type of data contained within the field.

Also, Value and the individual As* properties give access to the value of the field for the current record, on live data.

See Also

TDABaseField, TDAParam and TDADataTable classes

Pascal

TDACustomField = class(TDABaseField);

Class Hierarchy

File

uDAInterfaces

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDACustomField Class Properties

TDACustomField Class	Legend

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.


Legend

Property

read only


TDACustomField Class Methods

TDACustomField Class	Legend

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream


Legend

Method


TDACustomField Class Events

TDACustomField Class	Legend

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Event


Legend

TDACustomField Class

Legend

Property

read only

Method

Event


TDACustomField Class Members

TDACustomField Class	Legend

Members

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Property

read only

Method

Event


See Also

TDABaseField, TDAParam and TDADataTable classes


TDACustomField.Alignment Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the display alignment used for this field in visual data controls.

See Also

DisplayFormat, DisplayLabel and DisplayWidth properties

Pascal

property Alignment: TAlignment;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

DisplayFormat, DisplayLabel and DisplayWidth properties


TDACustomField.BusinessClassID Property

TDACustomField Class	TDACustomField Class

property BusinessClassID: string;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.Calculated Property

TDACustomField Class	TDACustomField Class	See Also

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

See Also

LogChanges and ReadOnly properties

Pascal

property Calculated: boolean;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

LogChanges and ReadOnly properties


TDACustomField.CustomAttributes Property

TDACustomField Class	TDACustomField Class	See Also

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

See Also

Schema Modeler help topic

Pascal

property CustomAttributes: TStrings;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Schema Modeler help topic


TDACustomField.DefaultValue Property

TDACustomField Class	TDACustomField Class

Specifies a default value to be written to the field when adding new records, client-side.

Pascal

property DefaultValue: string;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.DisplayFormat Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

See Also

Alignment, DisplayLabel, DisplayWidth and EditFormat properties

Pascal

property DisplayFormat: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Alignment, DisplayLabel, DisplayWidth and EditFormat properties


TDACustomField.DisplayLabel Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

See Also

Name property

Alignment, DisplayFormat and DisplayWidth properties

Pascal

property DisplayLabel: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Name property

Alignment, DisplayFormat and DisplayWidth properties


TDACustomField.DisplayWidth Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the display width, in pixels, used for this field in visual data controls.

See Also

Alignment, DisplayFormat and DisplayLabel properties

Pascal

property DisplayWidth: integer;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Alignment, DisplayFormat and DisplayLabel properties


TDACustomField.EditFormat Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

See Also

DisplayFormat and EditMask properties

Pascal

property EditFormat: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

DisplayFormat and EditMask properties


TDACustomField.EditMask Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

See Also

EditFormat properties

Pascal

property EditMask: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

EditFormat properties


TDACustomField.FieldCollection Property

TDACustomField Class	TDACustomField Class

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

Pascal

property FieldCollection: TDACustomFieldCollection;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.InPrimaryKey Property

TDACustomField Class	TDACustomField Class

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

Pascal

property InPrimaryKey: boolean;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.KeyFields Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

See Also

Lookup, LookupCache, LookupKeyFields, LookupResultField and LookupSource properties

Pascal

property KeyFields: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Lookup, LookupCache, LookupKeyFields, LookupResultField and LookupSource properties


TDACustomField.LogChanges Property

TDACustomField Class	TDACustomField Class

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

Pascal

property LogChanges: boolean;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.Lookup Property

TDACustomField Class	TDACustomField Class	See Also

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID (the LookupKeyField).

See Also

LookupCache, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Calculated and LogChanges properties

Pascal

property Lookup: boolean;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

LookupCache, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Calculated and LogChanges properties


TDACustomField.LookupCache Property

TDACustomField Class	TDACustomField Class	See Also

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

See Also

Lookup, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Pascal

property LookupCache: boolean;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Lookup, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties


TDACustomField.LookupKeyFields Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

See Also

Lookup, LookupCache, KeyFields, LookupResultField and LookupSource properties

Pascal

property LookupKeyFields: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupResultField and LookupSource properties


TDACustomField.LookupResultField Property

TDACustomField Class	TDACustomField Class	See Also

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupSource properties

Pascal

property LookupResultField: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupSource properties


TDACustomField.LookupSource Property

TDACustomField Class	TDACustomField Class	See Also

Specifies the TDataSource that will used as the source to look up field values.

See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupResultField properties

Pascal

property LookupSource: TDataSource;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupResultField properties


TDACustomField.OldValue Property

TDACustomField Class	TDACustomField Class	See Also

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

See Also

LogChanges property

Pascal

property OldValue: Variant;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

LogChanges property


TDACustomField.OnChange Event

TDACustomField Class	TDACustomField Class	See Also

Fires whenever the value of a particular field has been changed.

See Also

OnValidate event

Pascal

property OnChange: TDAFieldNotifyEvent;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

OnValidate event


TDACustomField.OnValidate Event

TDACustomField Class	TDACustomField Class	See Also

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.

See Also

OnChange event

Pascal

property OnValidate: TDAFieldNotifyEvent;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

OnChange event


TDACustomField.ReadOnly Property

TDACustomField Class	TDACustomField Class	See Also

Specifies whether the values contained in this field can be changed (false) or not.

See Also

Calculated and LogChanges properties

Pascal

property ReadOnly: boolean;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Calculated and LogChanges properties


TDACustomField.RegExpression Property

TDACustomField Class	TDACustomField Class	See Also

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

See Also

Regular Expressions on wikipedia

Pascal

property RegExpression: string;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

Regular Expressions on wikipedia


TDACustomField.Required Property

TDACustomField Class	TDACustomField Class

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null value to the back-end database will of course trigger the appropriate error from the database server).

Pascal

property Required: boolean;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.ServerAutoRefresh Property

TDACustomField Class	TDACustomField Class	See Also

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local client-side data table.

This behavior is comparable to AutoInc values, which will also automatically be sent back to the client after inserts. See the AutoIncs and Generators help topic for more details. For AutoIncs, server refresh on insert is implicit, and this property does not need to be set to true.

See Also

AutoIncs and Generators help topic

TDADeltaChange.RefreshedByServer property

Pascal

property ServerAutoRefresh: boolean;

Links

TDACustomField Class, TDACustomField Class, See Also


See Also

AutoIncs and Generators help topic

TDADeltaChange.RefreshedByServer property


TDACustomField.Visible Property

TDACustomField Class	TDACustomField Class

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.

Pascal

property Visible: boolean;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.LoadFromStream Method (IROStream)

TDACustomField Class	TDACustomField Class

procedure LoadFromStream(const aStream: IROStream); overload;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.LoadFromStream Method (TStream)

TDACustomField Class	TDACustomField Class

procedure LoadFromStream(const aStream: TStream); overload;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.SaveToStream Method (IROStream)

TDACustomField Class	TDACustomField Class

procedure SaveToStream(const aStream: IROStream); overload;

Links

TDACustomField Class, TDACustomField Class


TDACustomField.SaveToStream Method (TStream)

TDACustomField Class	TDACustomField Class

procedure SaveToStream(const aStream: TStream); overload;

Links

TDACustomField Class, TDACustomField Class


TDADataDictionary Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDADataDictionary component is used to store a number of predefined field configurations (so called data dictionary entries, or data dictionary fields).

These entries exhibit most of the properties of normal fields; however, they are not used to represent actual data fields, but are templates for the configuration of actual fields in the data tables of your schema.

For example, a schema might define several tables that contain a "phone number" string field; common configuration for this field type (edit masks, display formats, field captions) might be defined in a common data dictionary entry, which is then referenced from the individual "phone number" fields using their DataDictionary property. The fields will then inherit their configuration from the commonly shared dictionary entry, rather than having to duplicate the settings. Changes to the dictionary entry will automatically reflect in all the actual fields.

While you can edit the content of a data dictionary from code or in Object Inspector using the Fields collection property, you will usually edit the dictionary by double-clicking a TDASchema component that references it, to launch the Schema Modeler.

See Also

TDABaseField.DataDictionary property

TDASchema component

Schema Modeler and Data Dictionary Editor help topics

Pascal

TDADataDictionary = class(TDAStreamableComponent, IDADataDictionary);

Class Hierarchy

File

uDAClasses

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDADataDictionary Class Properties

TDADataDictionary Class	Legend

Properties

 Fields

Maintains the list of TDADataDictionaryFields defined in the dictionary


Legend

Property


Legend

TDADataDictionary Class

Legend

Property


TDADataDictionary Class Members

TDADataDictionary Class	Legend

Members

Properties

 Fields

Maintains the list of TDADataDictionaryFields defined in the dictionary


Legend

Property


See Also

TDABaseField.DataDictionary property

TDASchema component

Schema Modeler and Data Dictionary Editor help topics


TDADataDictionary.Fields Property

TDADataDictionary Class	TDADataDictionary Class	See Also

Maintains the list of TDADataDictionaryFields defined in the dictionary

See Also

TDADataDictionaryField class

Schema Modeler and Data Dictionary Editor help topics

Pascal

property Fields: TDADataDictionaryFieldCollection;

Links

TDADataDictionary Class, TDADataDictionary Class, See Also


See Also

TDADataDictionaryField class

Schema Modeler and Data Dictionary Editor help topics


TDADataDictionaryField Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDADataDictionaryField descends from TDACustomField to represent entries stored in a TDADataDictionary.

It adds no additional members and is only used for distinction from standard fields.

See Also

TDACustomField and TDADataDictionary classes

Pascal

TDADataDictionaryField = class(TDACustomField);

Class Hierarchy

File

uDAInterfaces

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDADataDictionaryField Class Properties

TDADataDictionaryField Class	Legend

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.


Legend

Property

read only


TDADataDictionaryField Class Methods

TDADataDictionaryField Class	Legend

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream


Legend

Method


TDADataDictionaryField Class Events

TDADataDictionaryField Class	Legend

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Event


Legend

TDADataDictionaryField Class

Legend

Property

read only

Method

Event


TDADataDictionaryField Class Members

TDADataDictionaryField Class	Legend

Members

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Property

read only

Method

Event


See Also

TDACustomField and TDADataDictionary classes


TDADataset Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDADataset class descends from TDASQLCommand to represents an individual dataset (or data table) defined in a schema.

You will usually not create instances of this class directly, but define data tables in Schema Modeler or access them through the Datasets property of the TDASchema component.

See Also

TDASchema.Datasets property

TDASQLCommand class

Schema Modeler and Data Tables Pane help topics

Pascal

TDADataset = class(TDASQLCommand);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDADataset Class Properties

TDADataset Class	Legend

Properties

 Description

Provides a human-readable description of the command.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the command in Schema Modeler.

 Name

Specifies the name that uniquely identifies this command. This name can be the name of the underlying stored procedure, or any human-readable name that describes the purpose of the command.

 Params

Maintains the list of parameters for this command or data table.

Please refer to the Command and Data Table Parameters help topic for more information on this topic.

 SQLCommandCollection

References the collection that this command belongs to. Usually, this will be the Commands property of the TDASchema that this command is defined in.

 Statements

Maintains the statements defined for this command or dataset.

Please refer to the Cross Database Support help topic for more details on statements.

TDADataset Class

 BusinessClassID

 BusinessRulesClient

Specifies any client-side business rules scripts for the data table.

Please refer to the Business Rules Scripts help topic for more details.

 BusinessRulesServer

Specifies any server-side business rules scripts for the data table.

Server-side business rules scripts are currently not supported yet, but this property is available for future extensions in Data Abstract 5.0.

Please refer to the Business Rules Scripts help topic for more details.

 Fields

Provides access to all the fields contained in the dataset.


Legend

Property

read only


TDADataset Class Methods

TDADataset Class	Legend

Methods

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

TDADataset Class

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.


Legend

Method


Legend

TDADataset Class

Legend

Property

read only

Method


TDADataset Class Members

TDADataset Class	Legend

Members

Properties

 Description

Provides a human-readable description of the command.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the command in Schema Modeler.

 Name

Specifies the name that uniquely identifies this command. This name can be the name of the underlying stored procedure, or any human-readable name that describes the purpose of the command.

 Params

Maintains the list of parameters for this command or data table.

Please refer to the Command and Data Table Parameters help topic for more information on this topic.

 SQLCommandCollection

References the collection that this command belongs to. Usually, this will be the Commands property of the TDASchema that this command is defined in.

 Statements

Maintains the statements defined for this command or dataset.

Please refer to the Cross Database Support help topic for more details on statements.

TDADataset Class

 BusinessClassID

 BusinessRulesClient

Specifies any client-side business rules scripts for the data table.

Please refer to the Business Rules Scripts help topic for more details.

 BusinessRulesServer

Specifies any server-side business rules scripts for the data table.

Server-side business rules scripts are currently not supported yet, but this property is available for future extensions in Data Abstract 5.0.

Please refer to the Business Rules Scripts help topic for more details.

 Fields

Provides access to all the fields contained in the dataset.

Methods

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

TDADataset Class

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.


Legend

Property

read only

Method


See Also

TDASchema.Datasets property

TDASQLCommand class

Schema Modeler and Data Tables Pane help topics


TDADataset.BusinessClassID Property

TDADataset Class	TDADataset Class

Pascal

property BusinessClassID: string;

Links

TDADataset Class, TDADataset Class


TDADataset.BusinessRulesClient Property

TDADataset Class	TDADataset Class	See Also

Specifies any client-side business rules scripts for the data table.

Please refer to the Business Rules Scripts help topic for more details.

See Also

BusinessRulesServer property

Business Rules Scripts help topic

Pascal

property BusinessRulesClient: TDAClientBusinessRuleScript;

Links

TDADataset Class, TDADataset Class, See Also


See Also

BusinessRulesServer property

Business Rules Scripts help topic


TDADataset.BusinessRulesServer Property

TDADataset Class	TDADataset Class	See Also

Specifies any server-side business rules scripts for the data table.

Server-side business rules scripts are currently not supported yet, but this property is available for future extensions in Data Abstract 5.0.

Please refer to the Business Rules Scripts help topic for more details.

See Also

BusinessRulesClient property

Business Rules Scripts help topic

Pascal

property BusinessRulesServer: TDABusinessRuleScript;

Links

TDADataset Class, TDADataset Class, See Also


See Also

BusinessRulesClient property

Business Rules Scripts help topic


TDADataset.Fields Property

TDADataset Class	TDADataset Class	See Also

Provides access to all the fields contained in the dataset.

See Also

FieldCount and FieldValues properties

Pascal

property Fields: TDAFieldCollection;

Links

TDADataset Class, TDADataset Class, See Also


See Also

FieldCount and FieldValues properties


TDADataset.FieldByName Method

TDADataset Class	TDADataset Class	See Also

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

See Also

Fields property

Command and Data Table Parameters help topic

Pascal

function FieldByName(const aName: string): TDAField;

Links

TDADataset Class, TDADataset Class, See Also


See Also

Fields property

Command and Data Table Parameters help topic


TDADatasetProvider Class

Data Abstract Reference	Legend	Members	Properties	See Also

TDADatasetProvider implements a DataSnap TDataSetProvider based on the TDADataTable class, allowing you to use data from a TDADataTable wherever a TDataSetProvider is expected.

Please refer to the Delphi inline help for TDataSetProvider for more details.

Essential Properties

DataTable specifies the TDADataTable to be made accessible.

See Also

TDADataTable class

TDataSetProvider in the Borland Delphi online help

Pascal

TDADatasetProvider = class(TDataSetProvider);

Class Hierarchy

File

uDADatasetProvider

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDADatasetProvider Class Properties

TDADatasetProvider Class	Legend

Properties

 DataTable

Specifies the TDADataTable to be made accessible.


Legend

Property


Legend

TDADatasetProvider Class

Legend

Property


TDADatasetProvider Class Members

TDADatasetProvider Class	Legend

Members

Properties

 DataTable

Specifies the TDADataTable to be made accessible.


Legend

Property


See Also

TDADataTable class

TDataSetProvider in the Borland Delphi online help


TDADatasetProvider.DataTable Property

TDADatasetProvider Class	TDADatasetProvider Class	See Also

Specifies the TDADataTable to be made accessible.

See Also

TDADataTable class

Pascal

property DataTable: TDADataTable;

Links

TDADatasetProvider Class, TDADatasetProvider Class, See Also


See Also

TDADataTable class


TDADatasetRelationship Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDADatasetRelationship class represents individual Foreign-Key or Master/Detail relationships between data tables defined in a schema.

You will usually not create instances of this class directly, but define relationships in Schema Modeler or access them through the Relationships property of the TDASchema component.

See Also

TDASchema.Relationships property

Schema Modeler and Relationships View help topics

Pascal

TDADatasetRelationship = class(TCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDADatasetRelationship Class Properties

TDADatasetRelationship Class	Legend

Properties

 Description

Provides a human-readable description of the relationship.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the relationship in Schema Modeler.

 DetailDatasetName

Specifies the name of the detail dataset for this relationship. Usually this would be a dataset defined in the same schema.

 DetailFields

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the detail dataset (usually the foreign key), and they must match the fields specified for MasterFields in count and type.

 MasterDatasetName

Specifies the name of the master dataset for this relationship. Usually this would be a dataset defined in the same schema.

 MasterFields

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the master dataset (usually the primary key), and they must match the fields specified for DetailFields in count and type.

 Name

Specifies a human-readable name for the relationship. This can be the official name of the relationship in the back-end database, or any name that uniquely identifies the relationship within the schema.


Legend

Property


Legend

TDADatasetRelationship Class

Legend

Property


TDADatasetRelationship Class Members

TDADatasetRelationship Class	Legend

Members

Properties

 Description

Provides a human-readable description of the relationship.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the relationship in Schema Modeler.

 DetailDatasetName

Specifies the name of the detail dataset for this relationship. Usually this would be a dataset defined in the same schema.

 DetailFields

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the detail dataset (usually the foreign key), and they must match the fields specified for MasterFields in count and type.

 MasterDatasetName

Specifies the name of the master dataset for this relationship. Usually this would be a dataset defined in the same schema.

 MasterFields

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the master dataset (usually the primary key), and they must match the fields specified for DetailFields in count and type.

 Name

Specifies a human-readable name for the relationship. This can be the official name of the relationship in the back-end database, or any name that uniquely identifies the relationship within the schema.


Legend

Property


See Also

TDASchema.Relationships property

Schema Modeler and Relationships View help topics


TDADatasetRelationship.Description Property

TDADatasetRelationship Class	TDADatasetRelationship Class	See Also

Provides a human-readable description of the relationship.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the relationship in Schema Modeler.

See Also

Schema Modeler help topic

Pascal

property Description: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class, See Also


See Also

Schema Modeler help topic


TDADatasetRelationship.DetailDatasetName Property

TDADatasetRelationship Class	TDADatasetRelationship Class	See Also

Specifies the name of the detail dataset for this relationship. Usually this would be a dataset defined in the same schema.

See Also

MasterDatasetName, MasterFields and DetailFields properties

Pascal

property DetailDatasetName: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class, See Also


See Also

MasterDatasetName, MasterFields and DetailFields properties


TDADatasetRelationship.DetailFields Property

TDADatasetRelationship Class	TDADatasetRelationship Class	See Also

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the detail dataset (usually the foreign key), and they must match the fields specified for MasterFields in count and type.

See Also

MasterDatasetName, MasterFields and DetailDatasetName properties

Pascal

property DetailFields: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class, See Also


See Also

MasterDatasetName, MasterFields and DetailDatasetName properties


TDADatasetRelationship.MasterDatasetName Property

TDADatasetRelationship Class	TDADatasetRelationship Class	See Also

Specifies the name of the master dataset for this relationship. Usually this would be a dataset defined in the same schema.

See Also

MasterFields, DetailDatasetName and DetailFields properties

Pascal

property MasterDatasetName: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class, See Also


See Also

MasterFields, DetailDatasetName and DetailFields properties


TDADatasetRelationship.MasterFields Property

TDADatasetRelationship Class	TDADatasetRelationship Class	See Also

Specifies the field or list of fields (separated by semicolons) that make up the Master/Detail relationship. These must be fields defined in the master dataset (usually the primary key), and they must match the fields specified for DetailFields in count and type.

See Also

MasterDatasetName, DetailDatasetName and DetailFields properties

Pascal

property MasterFields: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class, See Also


See Also

MasterDatasetName, DetailDatasetName and DetailFields properties


TDADatasetRelationship.Name Property

TDADatasetRelationship Class	TDADatasetRelationship Class

Specifies a human-readable name for the relationship. This can be the official name of the relationship in the back-end database, or any name that uniquely identifies the relationship within the schema.

Pascal

property Name: string;

Links

TDADatasetRelationship Class, TDADatasetRelationship Class


TDADataSource Class

Data Abstract Reference	Legend	Members	Properties	See Also

TDADataSource is a descendant of the standard Delphi TDataSource component. Instead of linking standard TDataSets to visual database components, it performs this same task for TDADataTables.

Essential Properties

DataTable points to the data table represented by this data source.

See Also

TDADataTable component

TDataSource component in the Delphi online help

Pascal

TDADataSource = class(TDABaseDataSource);

Class Hierarchy

File

uDADataTable

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDADataSource Class Properties

TDADataSource Class	Legend

Properties

 DataTable

Points to the TDADataTable represented by this data source.


Legend

Property


Legend

TDADataSource Class

Legend

Property


TDADataSource Class Members

TDADataSource Class	Legend

Members

Properties

 DataTable

Points to the TDADataTable represented by this data source.


Legend

Property


See Also

TDADataTable component

TDataSource component in the Delphi online help


TDADataSource.DataTable Property

TDADataSource Class	TDADataSource Class	See Also

Points to the TDADataTable represented by this data source.

See Also

TDADataTable component

Pascal

property DataTable: TDADataTable;

Links

TDADataSource Class, TDADataSource Class, See Also


See Also

TDADataTable component


TDADataStreamer Class

Data Abstract Reference	See Also

Data Streamers perform the task of reading and writing data and delta packets from and to a format that can be transmitted over the network between client and server. As such they form a critical part of the Data Abstract architecture.

TDADataStreamer is the abstract base class on top of which the actual streamers such as the TDABinDataStreamer and TDAXmlDataStreamer are implemented.

While the TDADataStreamer exposes several public properties and methods, you will not usually work with data streamers directly, as the Data Abstract infrastructure (such as the TDataAbstractService, TDABusinessProcessor and TDARemoteDataAdapter classes) will handle the use of the streamers.

Essential Properties

None, Data Streamers are usable after being dropped and hooked up.

See Also

TDABinDataStreamer and TDAXmlDataStreamer components

TDataAbstractService, TDABusinessProcessor and TDARemoteDataAdapter classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties

Pascal

TDADataStreamer = class(TComponent);

Class Hierarchy

File

uDADataStreamer

Links

Data Abstract Reference, See Also


See Also

TDABinDataStreamer and TDAXmlDataStreamer components

TDataAbstractService, TDABusinessProcessor and TDARemoteDataAdapter classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties


TDADataTable Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDADataTable is the abstract base class for all client data table implementations in Data Abstract.

Client Data Tables are classes that hold live data on the client application at runtime, to make it available to application code and visual controls. Client Data Tables can be filled from a remote source (typically a Data Abstract server) using a TDARemoteDataAdapter that coordinates the connection to the server; they maintain a local history of changes (Delta) and can apply those changes back to the database, again using the remote data adapter.

Data Abstract currently provides two concrete implementations of client data tables in the form of the TDACDSDataTable and TDAADODataTable components.

Essential Properties

RemoteDataAdapter references the TDARemoteDataAdapter used to exchange data with the server

LogicalName specifies the name of the data table

Fields defines the fields contained in the data table

Relevant Properties

Delta maintains the local changes to the data table

See Also

TDACDSDataTable and TDAADODataTable components

TDARemoteDataAdapter component

Pascal

TDADataTable = class(TScriptableComponent, ISupportErrorInfo, IDADataTable, IDASQLCommand, IDADataset, IDAEditableDataset, IDADeltaOwner, IDADataReader, IDADatasetEx);

Class Hierarchy

File

uDADataTable

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDADataTable Class Properties

TDADataTable Class	Legend

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement


Legend

Property

read only


TDADataTable Class Methods

TDADataTable Class	Legend

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.


Legend

Method

virtual


TDADataTable Class Events

TDADataTable Class	Legend

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Event


Legend

TDADataTable Class

Legend

Property

read only

Method

virtual

Event


TDADataTable Class Members

TDADataTable Class	Legend

Members

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

TDADataTable Class

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 BusinessRulesID

 Closing

Returns whether the data table is currently closing (true) or not (false).

 Delta

Maintains the local changes to the data table that have not yet been applied back to the server.

 DetailFields

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

 DetailOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

 Editing

Returns whether the data table is currently in editing mode (true) or not (false).

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 Fetching

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 HasDelta

Returns whether the current dataset contains any unapplied deltas, or not.

 HasDeltaRecursive

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

 LocalConnection

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalDataStreamer

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LocalSchema

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

 LogChanges

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

 LogicalName

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

 MasterFields

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

 MasterMappingMode

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

 MasterOptions

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

 MasterParamsMappings

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

 MasterRequestMappings

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

 MasterSource

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

 MaxRecords

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

 Opening

Returns whether the data table is currently opening (true) or not (false).

 Params

Provides access to the list of parameters defined for the command.

 ReadOnly

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

 RecordCount

Returns the number of records currently contained in the data table.

 RemoteDataAdapter

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

 RemoteFetchEnabled

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

 RemoteUpdatesOptions

Provides options for applying updates to the server. Available options include:

 ScriptCode

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

 StoreActive

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

 StreamingOptions

Configures options for the streaming behavior of the data table. Available options include:

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

TDADataTable Class

 ApplyUpdates

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

 CancelUpdates

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 LoadFromFile

Loads the content of the data table, including the Delta, from a local briefcase file.

 LoadFromRemoteSource

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

 LoadFromStream

Loads the content of the data table, including the Delta, from a stream.

 LoadSchema

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

 LoadScript

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

 MergeDelta

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 SaveToFile

Saves the current content of the data table, including the Delta, to a local briefcase file.

 SaveToStream

Saves the current content of the data table, including the Delta, to a stream.

Events

TDADataTable Class

 OnAfterApplyUpdates

Fires right after the data table has finished applying updates to the server.

 OnAfterFieldChange

Fires right after a field was changed.

 OnAfterMergeDelta

Fires right after the data table has finished merging delta received from the server.

 OnBeforeApplyUpdates

Fires just before the data table starts applying updates to the server.

 OnBeforeFieldChange

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

 OnBeforeMergeDelta

Fires just before the data table starts merging delta received from the server.


Legend

Property

read only

Method

virtual

Event


See Also

TDACDSDataTable and TDAADODataTable components

TDARemoteDataAdapter component


TDADataTable.Active Property

TDADataTable Class	TDADataTable Class	See Also

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

See Also

Open and Close methods

Pascal

property Active: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Open and Close methods


TDADataTable.BusinessRulesID Property

TDADataTable Class	TDADataTable Class

property BusinessRulesID: string;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.Closing Property

TDADataTable Class	TDADataTable Class	See Also

Returns whether the data table is currently closing (true) or not (false).

See Also

Opening and Fetching properties

Pascal

property Closing: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Opening and Fetching properties


TDADataTable.Delta Property

TDADataTable Class	TDADataTable Class	See Also

Maintains the local changes to the data table that have not yet been applied back to the server.

See Also

HasDelta, HasDeltaRecursive and LogChanges properties

ApplyUpdates method

IDADelta interface

TDADeltaChange class

Pascal

property Delta: IDADelta;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

HasDelta, HasDeltaRecursive and LogChanges properties

ApplyUpdates method

IDADelta interface

TDADeltaChange class


TDADataTable.DetailFields Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the field or list of fields from the current data table that make up the foreign key of a Master/Detail relationship. These fields will be matched against the MasterFields from the MasterSource table.

See Also

MasterFields and MasterSource properties

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property DetailFields: string;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterFields and MasterSource properties

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.DetailOptions Property

TDADataTable Class	TDADataTable Class	See Also

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Detail table of the Master/Detail relationship.

Value	Meaning
dtCascadeOpenClose	Automatically open or close the detail table when the master table is opened or closed.
dtCascadeApplyUpdates	Automatically apply detail changes to the server when ApplyUpdate is called on the master.
dtAutoFetch	Automatically fetch new data for this detail table, when the master record has changed.
dtCascadeDelete	Automatically delete detail records when the master record is deleted.
dtCascadeUpdate	Automatically update detail records, if one of the MasterFields has changed in the master, to keep the relationship intact.
dtDisableLogOfCascadeDeletes	Do not log cascaded detail deletes. Enable this option if the back-end database is configured to automatically cascade deletes on its own and the detail deletes do not have to be applied back to the database, individually.
dtDisableLogOfCascadeUpdates	Do not log cascaded detail updates. Enable this option if the back-end database is configured to automatically cascade updates on its own and the detail updates (if referring only to DetailFields) do not have to be applied back to the database, individually.
dtIncludeInAllInOneFetch	Automatically download data for this detail table, when filling the master.
See Also

DetailOptions, MasterFields and DetailFields properties

ApplyUpdate method

TDADetailOptions enum

Pascal

property DetailOptions: TDADetailOptions;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

DetailOptions, MasterFields and DetailFields properties

ApplyUpdate method

TDADetailOptions enum


TDADataTable.Editing Property

TDADataTable Class	TDADataTable Class

Returns whether the data table is currently in editing mode (true) or not (false).

Pascal

property Editing: boolean;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.EOF Property

TDADataTable Class	TDADataTable Class	See Also

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

See Also

Next method

Pascal

property EOF: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Next method


TDADataTable.Fetching Property

TDADataTable Class	TDADataTable Class	See Also

Returns whether the data table is currently fetching data form a remote source (true) or not (false).

See Also

Opening and Closing properties

Pascal

property Fetching: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Opening and Closing properties


TDADataTable.FieldCount Property

TDADataTable Class	TDADataTable Class	See Also

Indicates the number of Fields contained in the dataset.

See Also

Fields and FieldValues properties

Pascal

property FieldCount: integer;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Fields and FieldValues properties


TDADataTable.Fields Property

TDADataTable Class	TDADataTable Class	See Also

Provides access to all the fields contained in the dataset.

See Also

FieldCount and FieldValues properties

Pascal

property Fields: TDAFieldCollection;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

FieldCount and FieldValues properties


TDADataTable.FieldValues Property

TDADataTable Class	TDADataTable Class	See Also

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

See Also

FieldCount and Fields properties

Pascal

property FieldValues [Index: integer]: Variant;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

FieldCount and Fields properties


TDADataTable.HasDelta Property

TDADataTable Class	TDADataTable Class	See Also

Returns whether the current dataset contains any unapplied deltas, or not.

See Also

HasDeltaRecursive and Delta properties

Pascal

property HasDelta: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

HasDeltaRecursive and Delta properties


TDADataTable.HasDeltaRecursive Property

TDADataTable Class	TDADataTable Class	See Also

Returns whether the current dataset or any of its detail tables contain any unapplied deltas, or not.

See Also

HasDelta and Delta properties

Pascal

property HasDeltaRecursive: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

HasDelta and Delta properties


TDADataTable.IsEmpty Property

TDADataTable Class	TDADataTable Class

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

Pascal

property IsEmpty: boolean;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.LocalConnection Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the name of the connection to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalDataStreamer and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

See Also

LocalDataStreamer, LocalSchema and RemoteFetchEnabled properties

Pascal

property LocalConnection: string;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

LocalDataStreamer, LocalSchema and RemoteFetchEnabled properties


TDADataTable.LocalDataStreamer Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the TDADataStreamer to be used when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalSchema properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

Notes

Note that when the TDADataTable is used server side on a TDataAbstractService, you may not share the same data streamer between the data table and the TDataAbstractService's ServiceDataStreamer property, as data streamers are not reentrant.

See Also

LocalConnection, LocalSchema and RemoteFetchEnabled properties

TDataAbstractService.ServiceDataStreamer property

Pascal

property LocalDataStreamer: TDADataStreamer;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

LocalConnection, LocalSchema and RemoteFetchEnabled properties

TDataAbstractService.ServiceDataStreamer property


TDADataTable.LocalSchema Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the TDASchema to use when filling the data table locally, on the server side or in a single-tier scenario.

The LocalConnection and LocalDataStreamer properties need to be set as well for local fetch to work, and RemoteFetchEnabled must be set to false.

See Also

LocalConnection, LocalDataStreamer and RemoteFetchEnabled properties

TDASchema component

Pascal

property LocalSchema: TDASchema;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

LocalConnection, LocalDataStreamer and RemoteFetchEnabled properties

TDASchema component


TDADataTable.LogChanges Property

TDADataTable Class	TDADataTable Class	See Also

Specifies whether the data table will keep track of changes made to its data using a Delta (true, default), or not (false).

If set to false, no log of changes will be kept, and any changes made to the table will not be applied back to the back-end database.

See Also

Delta property

Pascal

property LogChanges: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Delta property


TDADataTable.LogicalName Property

TDADataTable Class	TDADataTable Class

Specifies the name of the data table. This name will be used to identify the table when retrieving data from or applying changes back to the server, and will typically match the name of the table defined in the server-side schema.

Pascal

property LogicalName: string;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.MasterFields Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the field or list of fields from the MasterSource table that make up the primary key of a Master/Detail relationship. These fields will be matched against the DetailFields from the local data table.

See Also

DetailFields and MasterSource properties

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property MasterFields: string;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

DetailFields and MasterSource properties

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.MasterMappingMode Property

TDADataTable Class	TDADataTable Class	See Also

Specifies how values of the MasterFields will be passed to the server to fetch detail data. Available options are:

Value	Meaning
mmParams	Detail data will be fetched by setting the MasterFields as parameters on the data table (Default).
mmDataRequest	Detail data will be fetched by passing the MasterFields as parameters to a custom data request method provided by the service.
See Also

MasterFields property

TDAMasterMappingMode enum

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property MasterMappingMode: TDAMasterMappingMode;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterFields property

TDAMasterMappingMode enum

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.MasterOptions Property

TDADataTable Class	TDADataTable Class	See Also

Specifies how changes to the master affect the detail table in a Master/Detail relationship.

These options will be set on the Master table of the Master/Detail relationship.

Value	Meaning
moCascadeOpenClose	Automatically open or close the detail table when the master table is opened or closed.
moCascadeApplyUpdates	Automatically apply detail changes to the server when ApplyUpdate is called on the master.
moCascadeDelete	Automatically delete detail records when the master record is deleted.
moCascadeUpdate	Automatically update detail records, if one of the MasterFields has changed in the master, to keep the relationship intact.
moDisableLogOfCascadeDeletes	Do not log cascaded detail deletes. Enable this option if the back-end database is configured to automatically cascade deletes on its own and the detail deletes do not have to be applied back to the database, individually.
moDisableLogOfCascadeUpdates	Do not log cascaded detail updates. Enable this option if the back-end database is configured to automatically cascade updates on its own and the detail updates (if referring only to DetailFields) do not have to be applied back to the database, individually.
moAllInOneFetch	Automatically download data for the detail table, when filling the master.
See Also

MasterOptions, MasterFields and DetailFields properties

ApplyUpdate method

TDAMasterOptions enum

Pascal

property MasterOptions: TDAMasterOptions;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterOptions, MasterFields and DetailFields properties

ApplyUpdate method

TDAMasterOptions enum


TDADataTable.MasterParamsMappings Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the mapping of MasterFields to data table parameters if the MasterMappingMode is set to mmParams.

See Also

MasterFields, MasterMappingMode and Params properties

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property MasterParamsMappings: TStrings;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterFields, MasterMappingMode and Params properties

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.MasterRequestMappings Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the mapping of MasterFields to data request parameters if the MasterMappingMode is set to mmDataRequest.

See Also

MasterFields, MasterMappingMode properties

TDARemoteDataAdapter.GetDataCall.Params property

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property MasterRequestMappings: TStrings;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterFields, MasterMappingMode properties

TDARemoteDataAdapter.GetDataCall.Params property

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.MasterSource Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the data source (and thereby the data table) that acts as master for the current table, in a Master/Detail relationship.

See Also

MasterFields and DetailFields properties

Master/Detail Relationships and Master/Detail Wizard help topic

Pascal

property MasterSource: TDADataSource;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

MasterFields and DetailFields properties

Master/Detail Relationships and Master/Detail Wizard help topic


TDADataTable.MaxRecords Property

TDADataTable Class	TDADataTable Class

Specifies the maximum number of records to retrieve from the server when opening the data table. A value of -1 (default) will download all records.

Pascal

property MaxRecords: integer;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.OnAfterApplyUpdates Event

TDADataTable Class	TDADataTable Class	See Also

Fires right after the data table has finished applying updates to the server.

See Also

OnBeforeApplyUpdates event

ApplyUpdates method

Pascal

property OnAfterApplyUpdates: TDADataTableNotifyEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnBeforeApplyUpdates event

ApplyUpdates method


TDADataTable.OnAfterFieldChange Event

TDADataTable Class	TDADataTable Class	See Also

Fires right after a field was changed.

See Also

OnBeforeFieldChange event

Pascal

property OnAfterFieldChange: TDADataTableDataChangeEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnBeforeFieldChange event


TDADataTable.OnAfterMergeDelta Event

TDADataTable Class	TDADataTable Class	See Also

Fires right after the data table has finished merging delta received from the server.

See Also

OnBeforeMergeDelta event

MergeDelta and ApplyUpdates method

Pascal

property OnAfterMergeDelta: TDADataTableNotifyEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnBeforeMergeDelta event

MergeDelta and ApplyUpdates method


TDADataTable.OnBeforeApplyUpdates Event

TDADataTable Class	TDADataTable Class	See Also

Fires just before the data table starts applying updates to the server.

See Also

OnAfterApplyUpdates event

ApplyUpdates method

Pascal

property OnBeforeApplyUpdates: TDABeforeApplyUpdatesEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnAfterApplyUpdates event

ApplyUpdates method


TDADataTable.OnBeforeFieldChange Event

TDADataTable Class	TDADataTable Class	See Also

Fires just before a field is about to change, allowing the option to validate and possibly reject the new value.

See Also

OnAfterFieldChange event

Pascal

property OnBeforeFieldChange: TDADataTableDataChangeEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnAfterFieldChange event


TDADataTable.OnBeforeMergeDelta Event

TDADataTable Class	TDADataTable Class	See Also

Fires just before the data table starts merging delta received from the server.

See Also

OnAfterMergeDelta event

MergeDelta and ApplyUpdates method

Pascal

property OnBeforeMergeDelta: TDADataTableNotifyEvent;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

OnAfterMergeDelta event

MergeDelta and ApplyUpdates method


TDADataTable.Opening Property

TDADataTable Class	TDADataTable Class	See Also

Returns whether the data table is currently opening (true) or not (false).

See Also

Closing and Fetching properties

Pascal

property Opening: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Closing and Fetching properties


TDADataTable.Params Property

TDADataTable Class	TDADataTable Class	See Also

Provides access to the list of parameters defined for the command.

See Also

RefreshParams and ParamByName methods

Command and Data Table Parameters help topic

Pascal

property Params: TDAParamCollection;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

RefreshParams and ParamByName methods

Command and Data Table Parameters help topic


TDADataTable.ReadOnly Property

TDADataTable Class	TDADataTable Class

Specifies whether the data table is read-only (true) or not (false, default).

If enabled, no changes to the data contained in the table will be permitted.

Pascal

property ReadOnly: boolean;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.RecordCount Property

TDADataTable Class	TDADataTable Class

Returns the number of records currently contained in the data table.

Pascal

property RecordCount: integer;

Links

TDADataTable Class, TDADataTable Class


TDADataTable.RemoteDataAdapter Property

TDADataTable Class	TDADataTable Class	See Also

Specifies the TDARemoteDataAdapter used to exchange data with the server.

Remote data adapters handle the communication between the data table and the server, and are needed for retrieving data from and applying changes to the server.

See Also

TDARemoteDataAdapter component

Pascal

property RemoteDataAdapter: TDABaseRemoteDataAdapter;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

TDARemoteDataAdapter component


TDADataTable.RemoteFetchEnabled Property

TDADataTable Class	TDADataTable Class	See Also

Specifies whether the data table will be filled from a remote source using a TDARemoteDataAdapter (true, default), or using a local TDASchema (false).

If enabled, the RemoteDataAdapter property must be assigned to establish the link to the server; if disabled, the LocalConnection, LocalDataStreamer and LocalSchema properties need to be set.

See Also

RemoteDataAdapter, LocalConnection, LocalDataStreamer and LocalSchema properties

TDARemoteDataAdapter and TDASchema components

Pascal

property RemoteFetchEnabled: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

RemoteDataAdapter, LocalConnection, LocalDataStreamer and LocalSchema properties

TDARemoteDataAdapter and TDASchema components


TDADataTable.RemoteUpdatesOptions Property

TDADataTable Class	TDADataTable Class	See Also

Provides options for applying updates to the server. Available options include:

Value	Meaning
ruoOnPost	Changes to records will automatically be applied to the server as they are posted. Enable this option to achieve behavior similar to single- or two-tier database applications, where posting a record in the user interface will directly apply the change to the back-end database. This basically triggers an automatic call to ApplyUpdates for each record change.
See Also

ApplyUpdates method

TDARemoteUpdatesOption enum

Pascal

property RemoteUpdatesOptions: TDARemoteUpdatesOptions;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

ApplyUpdates method

TDARemoteUpdatesOption enum


TDADataTable.ScriptCode Property

TDADataTable Class	TDADataTable Class	See Also

Contains the Business Rules Script code for the data table.

This property can either be assigned manually, or filled from the server suing the LoadScript method. For business rules scripts to run, a ScriptingProvider must be assigned.

See Also

ScriptingProvider property

LoadScript methood

Business Rules Scripts help topic

Pascal

property ScriptCode: TStrings;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

ScriptingProvider property

LoadScript methood

Business Rules Scripts help topic


TDADataTable.StoreActive Property

TDADataTable Class	TDADataTable Class	See Also

Specifies whether the Active property will be stored in the Delphi DFM file (true), or not (false, default).

If set to true, setting Active to true at design-time (for example to see live data) will persist this property to the DFM, and the data table will automatically be opened at runtime.

If set to false, the data table will not open at runtime until explicitly being opened from code - allowing for example to perform additional configurations such as loading the server address from a config file before the table opens.

See Also

Active property

Pascal

property StoreActive: boolean;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Active property


TDADataTable.StreamingOptions Property

TDADataTable Class	TDADataTable Class	See Also

Configures options for the streaming behavior of the data table. Available options include:

Value	Meaning
soIgnoreStreamSchema	Any schema information sent from the server as part of the data packet will be ignored and the data table will maintain its predefined schema. If not present, schema information present in the data stream can override the configured field settings.
soDisableEventsWhileStreaming	The data table's notification events for data or row changes will not fire during streaming processes, while downloading new data or applying changes (default).
See Also

TDAStreamingOptions enum

Pascal

property StreamingOptions: TDAStreamingOptions;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

TDAStreamingOptions enum


TDADataTable.Where Property

TDADataTable Class	TDADataTable Class	See Also

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

See Also

SQL property

Execute method

TDAWhere class

Pascal

property Where: TDAWhere;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

SQL property

Execute method

TDAWhere class


TDADataTable.ApplyUpdates Method

TDADataTable Class	TDADataTable Class	See Also

Applies all pending changes stored in the data table's Delta to the server using the RemoteDataAdapter.UpdateDataCall.

See Also

Delta property

CancelUpdates method

RemoteDataAdapter.UpdateDataCall property

Pascal

function ApplyUpdates(RefetchAll: boolean = FALSE): boolean; dynamic;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Delta property

CancelUpdates method

RemoteDataAdapter.UpdateDataCall property


TDADataTable.CancelUpdates Method

TDADataTable Class	TDADataTable Class	See Also

Discards all pending changes stored in the data table's Delta, reverting the data to the state after the last download or call to ApplyUpdates.

See Also

Delta property

ApplyUpdates method

Pascal

procedure CancelUpdates(IncludeDetails: boolean = TRUE);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Delta property

ApplyUpdates method


TDADataTable.Close Method

TDADataTable Class	TDADataTable Class	See Also

Closes the dataset and discards any local data that had been retrieved from the database.

See Also

Open method

Active property

Pascal

procedure Close; safecall;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Open method

Active property


TDADataTable.FieldByName Method

TDADataTable Class	TDADataTable Class	See Also

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

See Also

Fields property

Command and Data Table Parameters help topic

Pascal

function FieldByName(const aName: string): TDAField; safecall;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Fields property

Command and Data Table Parameters help topic


TDADataTable.LoadFromFile Method

TDADataTable Class	TDADataTable Class	See Also

Loads the content of the data table, including the Delta, from a local briefcase file.

See Also

SaveToFile and LoadFromStream methods

Delta property

Pascal

procedure LoadFromFile(const aFileName: string);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

SaveToFile and LoadFromStream methods

Delta property


TDADataTable.LoadFromRemoteSource Method

TDADataTable Class	TDADataTable Class	See Also

Fills the data table with data from the server using the RemoteDataAdapter.GetDataCall.

See Also

Open method

RemoteDataAdapter.GetDataCall property

TDASchema component

Pascal

procedure LoadFromRemoteSource(BookmarkPosition: boolean = FALSE); virtual;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Open method

RemoteDataAdapter.GetDataCall property

TDASchema component


TDADataTable.LoadFromStream Method

TDADataTable Class	TDADataTable Class	See Also

Loads the content of the data table, including the Delta, from a stream.

See Also

SaveToStream and LoadFromFile methods

Delta property

Pascal

procedure LoadFromStream(aStream: TStream);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

SaveToStream and LoadFromFile methods

Delta property


TDADataTable.LoadSchema Method

TDADataTable Class	TDADataTable Class	See Also

Downloads the schema for the data table from the server using the RemoteDataAdapter.GetSchemaCall and fills the Fields and Params collections based on the newly obtained schema information.

See Also

Fields and Params properties

RemoteDataAdapter.GetSchemaCall property

TDASchema component

Pascal

procedure LoadSchema(PreserveLookupFields: boolean = FALSE; PreserveClientCalcFields: boolean = FALSE);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Fields and Params properties

RemoteDataAdapter.GetSchemaCall property

TDASchema component


TDADataTable.LoadScript Method

TDADataTable Class	TDADataTable Class	See Also

Fills the ScriptCode property by downloading the appropriate script from the server using the RemoteDataAdapter.GetScriptsCall.

For business rules scripts to run, a ScriptingProvider must be assigned.

See Also

ScriptCode and ScriptingProvider properties

RemoteDataAdapter.GetScriptsCall property

Business Rules Scripts help topic

Pascal

procedure LoadScript(aDatasetName: string = '');

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

ScriptCode and ScriptingProvider properties

RemoteDataAdapter.GetScriptsCall property

Business Rules Scripts help topic


TDADataTable.MergeDelta Method

TDADataTable Class	TDADataTable Class	See Also

Merges the changes stored in the Delta into the base data of the data table, and clears the delta. This persists the changes in the local data, but removes them from the Delta so they will not be (re-)applied to the server.

Use Case

You will not usually call this method directly; it is used internally by ApplyUpdates.

Call this method if you want to explicitly prevent pending changes from being applied to the server, but keep them in the local data table.

For example, it could be imagined that after applying changes to the server, an application might delete records from the data table that are no longer needed locally - say to keep the memory footprint of the application small. After doing so, it would call MergeDelta, to ensure these deletes will not be propagated to the server. (Alternatively, the application could also set LogChanges to false while performing the deletes).

See Also

Delta and LogChanges properties

ApplyUpdates and CancelUpdates methods

Pascal

procedure MergeDelta; virtual;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Delta and LogChanges properties

ApplyUpdates and CancelUpdates methods


TDADataTable.Open Method

TDADataTable Class	TDADataTable Class	See Also

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

See Also

Open and Close method

Active and EOF properties

Pascal

procedure Open; safecall;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Open and Close method

Active and EOF properties


TDADataTable.ParamByName Method

TDADataTable Class	TDADataTable Class	See Also

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic

Pascal

function ParamByName(const aName: string): TDAParam; safecall;

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic


TDADataTable.SaveToFile Method

TDADataTable Class	TDADataTable Class	See Also

Saves the current content of the data table, including the Delta, to a local briefcase file.

See Also

LoadFromFile and SaveToStream methods

Delta property

Pascal

procedure SaveToFile(const aFileName: string);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

LoadFromFile and SaveToStream methods

Delta property


TDADataTable.SaveToStream Method

TDADataTable Class	TDADataTable Class	See Also

Saves the current content of the data table, including the Delta, to a stream.

See Also

LoadFromStream and SaveToFile methods

Delta property

Pascal

procedure SaveToStream(aStream: TStream);

Links

TDADataTable Class, TDADataTable Class, See Also


See Also

LoadFromStream and SaveToFile methods

Delta property


TDADBISAMDriver Class

Data Abstract Reference	See Also

TDADBISAMDriver is a placeholder component used to statically link the DBISAM3 and DBISAM4 drivers (contained in the uDADBISAMDriver unit) into your executable.

See Also

Database Drivers and Driver Components help topics

Pascal

TDADBISAMDriver = class(TDADriverReference);

Class Hierarchy

File

uDADBISAMDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics


TDADBSessionManager Class

Events	Data Abstract Reference	Legend	Members	Properties	See Also

TDADBSessionManager implements a session manager that stores session data in a database accessed using Data Abstract. This database can in theory be shared by multiple servers, allowing session state to be accessible across a server farm.

The component works similarly to the TRODBSessionManager session manager shipped with the RemObjects SDK.

Essential Properties

Schema specifies the schema used to access the session data

Connection specifies the name of the connection to the database

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand specify the data tables and command used to access and store session information in the database

Relevant Properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed specify the fields used to store the respective information in the database

SessionDuration specifies the time, in minutes, that sessions will persist before timing out (default is 15 minutes)

MaxSessions specifies the maximum number of sessions that will be allowed

See Also

Session Management help topics in the RemObjects SDK online help

Pascal

TDADBSessionManager = class(TROCustomSessionManager);

Class Hierarchy

File

uDADBSessionManager

Links

Events, Data Abstract Reference, Legend, Members, Properties, See Also


TDADBSessionManager Class Properties

TDADBSessionManager Class	Legend

Properties

 ClearSessionsCommand

Specifies the command that will be used to DELETE all sessions from the database, when ClearSessions is called or if the ClearSessionsOnCreate or ClearSessionsOnDestroy properties are set to true.

 ClearSessionsOnCreate

Specifies whether the session manager should clear the database of old sessions when the component is created (i.e. usually at application startup).

 ClearSessionsOnDestroy

Specifies whether the session manager should clear the database of old sessions when the component is destroyed (i.e. usually at application shutdown).

 Connection

Specifies the name of the connection to the database that contains the session data.

 DeleteSessionCommand

Specifies the command that will be used to DELETE sessions from the database, when they expire or are explicitly deleted.

 FieldNameCreated

Specifies the database field used to store the time and date the session was originally created.

 FieldNameData

Specifies the database field used to store the session data. This must be a BLOB field.

 FieldNameLastAccessed

Specifies the database field used to store the time and date the session was last accessed.

 FieldNameSessionID

Specifies the database field used to store the session ID. This must be a GUID field, or a string field of 38 characters.

 GetAllSessionIDsDataset

Specifies the dataset (data table) that will be used to get the complete list of session IDs from the database.

 GetSessionCountDataSet

Specifies the dataset that will be used to get the number of sessions contained in the database.

 GetSessionDataSet

Specifies the dataset (data table) that will be used to SELECT (i.e. retrieve) sessions from the database, when needed.

 InsertSessionCommand

Specifies the command that will be used to INSERT new sessions into the database, when they are first created.

 Schema

Specifies the TDASchema used to access the session data.

This is the schema that must define all the GetSessionDataset, InsertSessionCommand, UpdateSessionCommand, DeleteSessionCommand, GetAllSessionIDsDataset and GetSessionCountDataSet tables and commands

 UpdateSessionCommand

Specifies the command that will be used to UPDATE sessions in the database, when they have been touched by the user.


Legend

Property


TDADBSessionManager Class Events

TDADBSessionManager Class	Legend

Events

 OnConvertGUID

Fires whenever a Session ID is used to access the database, allowing to convert the actual GUIDs used by the RemObjects SDK's session management to a different format for storage in a database.


Legend

Event


Legend

TDADBSessionManager Class

Legend

Property

Event


TDADBSessionManager Class Members

TDADBSessionManager Class	Legend

Members

Properties

 ClearSessionsCommand

Specifies the command that will be used to DELETE all sessions from the database, when ClearSessions is called or if the ClearSessionsOnCreate or ClearSessionsOnDestroy properties are set to true.

 ClearSessionsOnCreate

Specifies whether the session manager should clear the database of old sessions when the component is created (i.e. usually at application startup).

 ClearSessionsOnDestroy

Specifies whether the session manager should clear the database of old sessions when the component is destroyed (i.e. usually at application shutdown).

 Connection

Specifies the name of the connection to the database that contains the session data.

 DeleteSessionCommand

Specifies the command that will be used to DELETE sessions from the database, when they expire or are explicitly deleted.

 FieldNameCreated

Specifies the database field used to store the time and date the session was originally created.

 FieldNameData

Specifies the database field used to store the session data. This must be a BLOB field.

 FieldNameLastAccessed

Specifies the database field used to store the time and date the session was last accessed.

 FieldNameSessionID

Specifies the database field used to store the session ID. This must be a GUID field, or a string field of 38 characters.

 GetAllSessionIDsDataset

Specifies the dataset (data table) that will be used to get the complete list of session IDs from the database.

 GetSessionCountDataSet

Specifies the dataset that will be used to get the number of sessions contained in the database.

 GetSessionDataSet

Specifies the dataset (data table) that will be used to SELECT (i.e. retrieve) sessions from the database, when needed.

 InsertSessionCommand

Specifies the command that will be used to INSERT new sessions into the database, when they are first created.

 Schema

Specifies the TDASchema used to access the session data.

This is the schema that must define all the GetSessionDataset, InsertSessionCommand, UpdateSessionCommand, DeleteSessionCommand, GetAllSessionIDsDataset and GetSessionCountDataSet tables and commands

 UpdateSessionCommand

Specifies the command that will be used to UPDATE sessions in the database, when they have been touched by the user.

Events

 OnConvertGUID

Fires whenever a Session ID is used to access the database, allowing to convert the actual GUIDs used by the RemObjects SDK's session management to a different format for storage in a database.


Legend

Property

Event


See Also

Session Management help topics in the RemObjects SDK online help


TDADBSessionManager.ClearSessionsCommand Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the command that will be used to DELETE all sessions from the database, when ClearSessions is called or if the ClearSessionsOnCreate or ClearSessionsOnDestroy properties are set to true.

See Also

ClearSessionsOnCreate or ClearSessionsOnDestroy properties

Pascal

property ClearSessionsCommand: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

ClearSessionsOnCreate or ClearSessionsOnDestroy properties


TDADBSessionManager.ClearSessionsOnCreate Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies whether the session manager should clear the database of old sessions when the component is created (i.e. usually at application startup).

Use Case

Set this property to true if you want your server to start with a clean slate at each startup; keep it to false if you want sessions from previous executions to persist when the server shuts down and is restarted, or if multiple servers will share the same session database.

See Also

ClearSessionsOnDestroy and ClearSessionsCommand properties

Pascal

property ClearSessionsOnCreate: boolean;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

ClearSessionsOnDestroy and ClearSessionsCommand properties


TDADBSessionManager.ClearSessionsOnDestroy Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies whether the session manager should clear the database of old sessions when the component is destroyed (i.e. usually at application shutdown).

Use Case

Set this property to true if you want your server to leave a clean slate on shutdown; keep it to false if you want sessions from previous executions to persist when the server shuts down and is restarted, or if multiple servers will share the same session database.

See Also

ClearSessionsOnCreate and ClearSessionsCommand properties

Pascal

property ClearSessionsOnDestroy: boolean;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

ClearSessionsOnCreate and ClearSessionsCommand properties


TDADBSessionManager.Connection Property

TDADBSessionManager Class	TDADBSessionManager Class

Specifies the name of the connection to the database that contains the session data.

Pascal

property Connection: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class


TDADBSessionManager.DeleteSessionCommand Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the command that will be used to DELETE sessions from the database, when they expire or are explicitly deleted.

See Also

GetSessionDataset, InsertSessionCommand and UpdateSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

Pascal

property DeleteSessionCommand: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

GetSessionDataset, InsertSessionCommand and UpdateSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties


TDADBSessionManager.FieldNameCreated Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the database field used to store the time and date the session was originally created.

See Also

FieldNameSessionID, FieldNameData and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

Pascal

property FieldNameCreated: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

FieldNameSessionID, FieldNameData and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties


TDADBSessionManager.FieldNameData Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the database field used to store the session data. This must be a BLOB field.

See Also

FieldNameSessionID, FieldNameCreated and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

Pascal

property FieldNameData: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

FieldNameSessionID, FieldNameCreated and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties


TDADBSessionManager.FieldNameLastAccessed Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the database field used to store the time and date the session was last accessed.

See Also

FieldNameSessionID, FieldNameData and FieldNameCreated properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

Pascal

property FieldNameLastAccessed: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

FieldNameSessionID, FieldNameData and FieldNameCreated properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties


TDADBSessionManager.FieldNameSessionID Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the database field used to store the session ID. This must be a GUID field, or a string field of 38 characters.

See Also

FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

Pascal

property FieldNameSessionID: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties


TDADBSessionManager.GetAllSessionIDsDataset Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the dataset (data table) that will be used to get the complete list of session IDs from the database.

See Also

GetSessionCountDataSet property

Pascal

property GetAllSessionIDsDataset: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

GetSessionCountDataSet property


TDADBSessionManager.GetSessionCountDataSet Property

TDADBSessionManager Class	TDADBSessionManager Class

Specifies the dataset that will be used to get the number of sessions contained in the database.

Pascal

property GetSessionCountDataSet: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class


TDADBSessionManager.GetSessionDataSet Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the dataset (data table) that will be used to SELECT (i.e. retrieve) sessions from the database, when needed.

See Also

InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

Pascal

property GetSessionDataSet: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

InsertSessionCommand, UpdateSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties


TDADBSessionManager.InsertSessionCommand Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the command that will be used to INSERT new sessions into the database, when they are first created.

See Also

GetSessionDataset, UpdateSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

Pascal

property InsertSessionCommand: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

GetSessionDataset, UpdateSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties


TDADBSessionManager.OnConvertGUID Event

TDADBSessionManager Class	TDADBSessionManager Class

Fires whenever a Session ID is used to access the database, allowing to convert the actual GUIDs used by the RemObjects SDK's session management to a different format for storage in a database.

Pascal

property OnConvertGUID: TDAConvertGUIDEvent;

Links

TDADBSessionManager Class, TDADBSessionManager Class


TDADBSessionManager.Schema Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the TDASchema used to access the session data.

This is the schema that must define all the GetSessionDataset, InsertSessionCommand, UpdateSessionCommand, DeleteSessionCommand, GetAllSessionIDsDataset and GetSessionCountDataSet tables and commands

See Also

TDASchema component

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand, DeleteSessionCommand, GetAllSessionIDsDataset and GetSessionCountDataSet properties

Pascal

property Schema: TDASchema;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

TDASchema component

GetSessionDataset, InsertSessionCommand, UpdateSessionCommand, DeleteSessionCommand, GetAllSessionIDsDataset and GetSessionCountDataSet properties


TDADBSessionManager.UpdateSessionCommand Property

TDADBSessionManager Class	TDADBSessionManager Class	See Also

Specifies the command that will be used to UPDATE sessions in the database, when they have been touched by the user.

See Also

GetSessionDataset, InsertSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties

Pascal

property UpdateSessionCommand: string;

Links

TDADBSessionManager Class, TDADBSessionManager Class, See Also


See Also

GetSessionDataset, InsertSessionCommand and DeleteSessionCommand properties

FieldNameSessionID, FieldNameData, FieldNameCreated and FieldNameLastAccessed properties


TDADBXDriver Class

Data Abstract Reference	See Also

TDADBXDriver is a placeholder component used to statically link the Borland DBX driver (contained in the uDADBXDriver unit) into your executable.

See Also

Database Drivers and Driver Components help topics

Pascal

TDADBXDriver = class(TDADriverReference);

Class Hierarchy

File

uDADBXDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics


TDADelta Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDADelta interface represents a set of changes to be transmitted between client and server. This can be client-side changes that are pending to be applied to the server database, or server-side changes that are being propagated back to the client.

This class is usually access through the IDADelta interface

Relevant Properties

Changes provides access to the individual delta changes stored within the delta

Count indicates the number of changes

See Also

IDADelta interface

Pascal

TDADelta = class(TDAEngineBaseObject, IDADelta, IDADataReader);

Class Hierarchy

File

uDADelta

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDADelta Class Properties

TDADelta Class	Legend

Properties

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LogicalName

Specified the name of the logical entity that this delta pertains to. Usually, this will be the name of the data table that changes should be applied to.

TDADelta Class

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.


Legend

Property

read only


TDADelta Class Methods

TDADelta Class	Legend

Methods

 Add

Adds a new delta change to to the list of changes maintained within the delta.

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.

TDADelta Class

 Add

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.


Legend

Method


Legend

TDADelta Class

Legend

Property

read only

Method


TDADelta Class Members

TDADelta Class	Legend

Members

Properties

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LogicalName

Specified the name of the logical entity that this delta pertains to. Usually, this will be the name of the data table that changes should be applied to.

TDADelta Class

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

Methods

 Add

Adds a new delta change to to the list of changes maintained within the delta.

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.

TDADelta Class

 Add

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.


Legend

Property

read only

Method


See Also

IDADelta interface


TDADelta.Changes Property

TDADelta Class	TDADelta Class	See Also

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

See Also

Count property

TDADeltaChange class

Pascal

property Changes [Index: integer]: TDADeltaChange;

Links

TDADelta Class, TDADelta Class, See Also


See Also

Count property

TDADeltaChange class


TDADelta.Count Property

TDADelta Class	TDADelta Class	See Also

Indicates the number of Changes contained within the delta.

See Also

Changes indexer property

Pascal

property Count: integer;

Links

TDADelta Class, TDADelta Class, See Also


See Also

Changes indexer property


TDADelta.KeyFieldCount Property

TDADelta Class	TDADelta Class	See Also

Indicates the number of fields that comprise the key for this delta.

See Also

KeyFieldNames indexer property

Pascal

property KeyFieldCount: integer;

Links

TDADelta Class, TDADelta Class, See Also


See Also

KeyFieldNames indexer property


TDADelta.KeyFieldNames Property

TDADelta Class	TDADelta Class	See Also

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

See Also

KeyFieldCount property

Pascal

property KeyFieldNames [Index: integer]: string;

Links

TDADelta Class, TDADelta Class, See Also


See Also

KeyFieldCount property


TDADelta.LoggedFieldCount Property

TDADelta Class	TDADelta Class	See Also

Indicates the number of fields that comprise the data for this delta.

See Also

LoggedFieldNames and LoggedFieldTypes indexer properties

Pascal

property LoggedFieldCount: integer;

Links

TDADelta Class, TDADelta Class, See Also


See Also

LoggedFieldNames and LoggedFieldTypes indexer properties


TDADelta.LoggedFieldNames Property

TDADelta Class	TDADelta Class	See Also

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

See Also

LoggedFieldTypes and LoggedFieldCount property

Pascal

property LoggedFieldNames [Index: integer]: string;

Links

TDADelta Class, TDADelta Class, See Also


See Also

LoggedFieldTypes and LoggedFieldCount property


TDADelta.LoggedFieldTypes Property

TDADelta Class	TDADelta Class	See Also

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

See Also

LoggedFieldNames and LoggedFieldCount property

Pascal

property LoggedFieldTypes [Index : integer]: TDADataType;

Links

TDADelta Class, TDADelta Class, See Also


See Also

LoggedFieldNames and LoggedFieldCount property


TDADelta.Add Method (TDADeltaChange)

TDADelta Class	TDADelta Class

procedure Add(aChange: TDADeltaChange); overload;

Links

TDADelta Class, TDADelta Class


TDADelta.Add Method (integer, TDAChangeType, TDAChangeStatus, string)

TDADelta Class	TDADelta Class

function Add(aRecordID: integer; aChangeType: TDAChangeType; aStatus: TDAChangeStatus = csPending; const aMessage: string = ''): TDADeltaChange; overload;

Links

TDADelta Class, TDADelta Class


TDADelta.Clear Method

TDADelta Class	TDADelta Class	See Also

Clears the delta and discards all the individual changes that it contains.

See Also

Changes indexer property

RemoveChange method

Pascal

procedure Clear(DoClearFieldNames: boolean = FALSE; DoClearKeyFieldNames: boolean = FALSE);

Links

TDADelta Class, TDADelta Class, See Also


See Also

Changes indexer property

RemoveChange method


TDADelta.IsNewRecord Method

TDADelta Class	TDADelta Class	See Also

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

See Also

TDADeltaChange.ChangeType property

Pascal

function IsNewRecord(aRecordID: integer = -1): boolean;

Links

TDADelta Class, TDADelta Class, See Also


See Also

TDADeltaChange.ChangeType property


TDADelta.RemoveChange Method

TDADelta Class	TDADelta Class	See Also

Removes a delta change to the list of changes maintained within the delta.

See Also

Changes indexer property

Add method

Pascal

procedure RemoveChange(aChange: TDADeltaChange);

Links

TDADelta Class, TDADelta Class, See Also


See Also

Changes indexer property

Add method


TDADeltaChange Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDADeltaChange class represents an individual changed record with in TDADelta or IDADelta collection of changes.

Relevant Properties

ChangeType specifies the type of change, ctInsert, ctUpdate or crDelete.

OldValues contains the old, or original values of the record, before the change.

NewValues contains the new values the record has been changed to.

Message contains any message returned from the server about the change (typically an error message).

Status contains the current status of the change.

See Also

TDADelta class

IDADelta interface

Pascal

TDADeltaChange = class;

Class Hierarchy

File

uDADelta

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDADeltaChange Class Properties

TDADeltaChange Class	Legend

Properties

 ChangeType

Specifies the type of change represented by this record:

 Delta

References the delta that this delta change is part of.

 Message

Contains any message returned from the server about the change. Typically this will be an error message, if the change failed to be applied.

 NewValueByName

Provides access to the old field values, indexed by field name.

 NewValues

Contains the new values the record has been changed to. These values will be written to the database.

For obvious reasons, this indexer property will not be available on DELETE changes, as there are no new values to be written to the database for those.

 OldValueByName

Provides access to the old field values, indexed by field name.

 OldValues

Contains the old, or original values of the record, before the change. These values will be used on the server to locate the original record.

For obvious reasons, this indexer property will not be available on INSERT changes, as there is no old and existing record in the database for those, yet.

 RecID

Contains the internal RecordID of the record this change pertains to. This RecordID is used internally by Data Abstract to locate the appropriate records on the client side.

 RefreshedByServer

Specifies whether this delta-change contains values that were refreshed from the back-end database and should be merged back into the local data on the client.

 Status

Contains the current status of the change:


Legend

Property

read only


Legend

TDADeltaChange Class

Legend

Property

read only


TDADeltaChange Class Members

TDADeltaChange Class	Legend

Members

Properties

 ChangeType

Specifies the type of change represented by this record:

 Delta

References the delta that this delta change is part of.

 Message

Contains any message returned from the server about the change. Typically this will be an error message, if the change failed to be applied.

 NewValueByName

Provides access to the old field values, indexed by field name.

 NewValues

Contains the new values the record has been changed to. These values will be written to the database.

For obvious reasons, this indexer property will not be available on DELETE changes, as there are no new values to be written to the database for those.

 OldValueByName

Provides access to the old field values, indexed by field name.

 OldValues

Contains the old, or original values of the record, before the change. These values will be used on the server to locate the original record.

For obvious reasons, this indexer property will not be available on INSERT changes, as there is no old and existing record in the database for those, yet.

 RecID

Contains the internal RecordID of the record this change pertains to. This RecordID is used internally by Data Abstract to locate the appropriate records on the client side.

 RefreshedByServer

Specifies whether this delta-change contains values that were refreshed from the back-end database and should be merged back into the local data on the client.

 Status

Contains the current status of the change:


Legend

Property

read only


See Also

TDADelta class

IDADelta interface


TDADeltaChange.ChangeType Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Specifies the type of change represented by this record:

Value	Meaning
ctInsert	The change represents a new record to be inserted into the database. OldValues will not be defined.
ctUpdate	The change represents a changed record that should be updated in the database.
cdDelete	The change represents a record that should be deleted from the database. NewValues will not be defined.
See Also

TDAChangeType enum

OldValues and NewValues properties

Pascal

property ChangeType: TDAChangeType;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

TDAChangeType enum

OldValues and NewValues properties


TDADeltaChange.Delta Property

TDADeltaChange Class	TDADeltaChange Class	See Also

References the delta that this delta change is part of.

See Also

TDADelta class

IDADelta interface

Pascal

property Delta: IDADelta;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

TDADelta class

IDADelta interface


TDADeltaChange.Message Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Contains any message returned from the server about the change. Typically this will be an error message, if the change failed to be applied.

See Also

Status property

Pascal

property Message: string;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

Status property


TDADeltaChange.NewValueByName Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Provides access to the old field values, indexed by field name.

See Also

NewValues and OldValueByName properties

Pascal

property NewValueByName [const aName: string]: Variant;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

NewValues and OldValueByName properties


TDADeltaChange.NewValues Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Contains the new values the record has been changed to. These values will be written to the database.

For obvious reasons, this indexer property will not be available on DELETE changes, as there are no new values to be written to the database for those.

See Also

ChangeType property

Pascal

property NewValues: TVariantArray;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

ChangeType property


TDADeltaChange.OldValueByName Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Provides access to the old field values, indexed by field name.

See Also

OldValues and NewValueByName properties

Pascal

property OldValueByName [const aName: string]: Variant;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

OldValues and NewValueByName properties


TDADeltaChange.OldValues Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Contains the old, or original values of the record, before the change. These values will be used on the server to locate the original record.

For obvious reasons, this indexer property will not be available on INSERT changes, as there is no old and existing record in the database for those, yet.

See Also

ChangeType property

TDABusinessProcessor.UpdateMode property

Pascal

property OldValues: TVariantArray;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

ChangeType property

TDABusinessProcessor.UpdateMode property


TDADeltaChange.RecID Property

TDADeltaChange Class	TDADeltaChange Class

Contains the internal RecordID of the record this change pertains to. This RecordID is used internally by Data Abstract to locate the appropriate records on the client side.

Pascal

property RecID: integer;

Links

TDADeltaChange Class, TDADeltaChange Class


TDADeltaChange.RefreshedByServer Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Specifies whether this delta-change contains values that were refreshed from the back-end database and should be merged back into the local data on the client.

See Also

TDACustomField.ServerAutoRefresh property

AutoIncs and Generators help topic

Pascal

property RefreshedByServer: boolean;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

TDACustomField.ServerAutoRefresh property

AutoIncs and Generators help topic


TDADeltaChange.Status Property

TDADeltaChange Class	TDADeltaChange Class	See Also

Contains the current status of the change:

Value	Meaning
csPending	The change still needs to be applied to the back-end database.
csResolved	The change has been successfully applied to the database.
csFailed	Applying the change to the database has failed. Typically, the TDADeltaChange.Message property will contain information about the failure.
See Also

TDAChangeStatus enum

Pascal

property Status: TDAChangeStatus;

Links

TDADeltaChange Class, TDADeltaChange Class, See Also


See Also

TDAChangeStatus enum


TDADiagrams Class

Data Abstract Reference	See Also

The TDADiagrams component is used to store diagrams for a specific TDASchema.

The component has no effect at runtime, its only purpose is to serve as a storage for the diagram visualization data available in Schema Modeler.

See Also

TDASchema.Diagrams property

Schema Modeler and Diagramming and Modeling Support help topics

Pascal

TDADiagrams = class(TOwnedCollection);

Class Hierarchy

File

uDADiagrams

Links

Data Abstract Reference, See Also


See Also

TDASchema.Diagrams property

Schema Modeler and Diagramming and Modeling Support help topics


TDADriverManager Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDADriverManager component manages the database drivers available in a Data Abstract server application, whether they are statically linked in or dynamically loaded from .DAD files.

Every server application must contain one (and not more than one) TDADriverManager instances, and it must be referenced from the TDAConnectionManager's DriverManager property.

Please refer to the Database Drivers help topic for a more detailed discussion on how drivers work in Data Abstract.

Essential Properties

None; TDADriverManager is usable right after being dropped or created.

See Also

TDAConnectionManager.DriverManager property

Pascal

TDADriverManager = class(TComponent, IDADriverManager);

Class Hierarchy

File

uDADriverManager

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDADriverManager Class Properties

TDADriverManager Class	Legend

Properties

 AutoLoad

Specifies whether the driver manager will automatically try to load all .DAD driver files located in the DriverDirectory on startup. Default is false.

 DriverCount

Returns the number of drivers currently available, including both statically linked and dynamically loaded drivers.

 DriverDirectory

Specifies the directory that AutoLoad will look in for drivers to automatically load at startup.

 DriverInfo

Returns information about the specified driver, including the Filename and DLL Handle (for dynamically loaded drivers) and the IDADriver reference.

 Drivers

Returns the the IDADriver reference for the specified driver.


Legend

Property

read only


TDADriverManager Class Events

TDADriverManager Class	Legend

Events

 OnDriverLoaded

Fires after a new driver has been dynamically loaded.

 OnDriverUnloaded

Fires after a dynamic driver has been unloaded.


Legend

Event


TDADriverManager Class Methods

TDADriverManager Class	Legend

Methods

 LoadDriver

Dynamically loads the driver from the specified .DAD file.

 LoadDrivers

Dynamically loads all the driver from the specified list of .DAD files.

 UnloadAllDrivers

Unloads all dynamically loaded drivers.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method

 UnloadDriver

Unloads the specified driver, if it was dynamically loaded.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method


Legend

Method


Legend

TDADriverManager Class

Legend

Property

read only

Event

Method


TDADriverManager Class Members

TDADriverManager Class	Legend

Members

Properties

 AutoLoad

Specifies whether the driver manager will automatically try to load all .DAD driver files located in the DriverDirectory on startup. Default is false.

 DriverCount

Returns the number of drivers currently available, including both statically linked and dynamically loaded drivers.

 DriverDirectory

Specifies the directory that AutoLoad will look in for drivers to automatically load at startup.

 DriverInfo

Returns information about the specified driver, including the Filename and DLL Handle (for dynamically loaded drivers) and the IDADriver reference.

 Drivers

Returns the the IDADriver reference for the specified driver.

Events

 OnDriverLoaded

Fires after a new driver has been dynamically loaded.

 OnDriverUnloaded

Fires after a dynamic driver has been unloaded.

Methods

 LoadDriver

Dynamically loads the driver from the specified .DAD file.

 LoadDrivers

Dynamically loads all the driver from the specified list of .DAD files.

 UnloadAllDrivers

Unloads all dynamically loaded drivers.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method

 UnloadDriver

Unloads the specified driver, if it was dynamically loaded.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method


Legend

Property

read only

Event

Method


See Also

TDAConnectionManager.DriverManager property


TDADriverManager.AutoLoad Property

TDADriverManager Class	TDADriverManager Class	See Also

Specifies whether the driver manager will automatically try to load all .DAD driver files located in the DriverDirectory on startup. Default is false.

See Also

DriverDirectory property

LoadDriver and LoadDrivers methods

OnDriverLoaded event

Pascal

property AutoLoad: boolean;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

DriverDirectory property

LoadDriver and LoadDrivers methods

OnDriverLoaded event


TDADriverManager.DriverCount Property

TDADriverManager Class	TDADriverManager Class	See Also

Returns the number of drivers currently available, including both statically linked and dynamically loaded drivers.

See Also

DriverInfo and Drivers properties

Pascal

property DriverCount: integer;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

DriverInfo and Drivers properties


TDADriverManager.DriverDirectory Property

TDADriverManager Class	TDADriverManager Class	See Also

Specifies the directory that AutoLoad will look in for drivers to automatically load at startup.

See Also

AutoLoad property

LoadDriver and LoadDrivers methods

Pascal

property DriverDirectory: string;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

AutoLoad property

LoadDriver and LoadDrivers methods


TDADriverManager.DriverInfo Property

TDADriverManager Class	TDADriverManager Class	See Also

Returns information about the specified driver, including the Filename and DLL Handle (for dynamically loaded drivers) and the IDADriver reference.

See Also

DriverCount and Drivers properties

Pascal

property DriverInfo [Index: integer]: TDADriverInfo;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

DriverCount and Drivers properties


TDADriverManager.Drivers Property

TDADriverManager Class	TDADriverManager Class	See Also

Returns the the IDADriver reference for the specified driver.

See Also

DriverCount and DriverInfo properties

Pascal

property Drivers [Index: integer]: IDADriver;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

DriverCount and DriverInfo properties


TDADriverManager.OnDriverLoaded Event

TDADriverManager Class	TDADriverManager Class	See Also

Fires after a new driver has been dynamically loaded.

See Also

OnDriverUnloaded event

AutoLoad property

LoadDriver and LoadDrivers methods

Pascal

property OnDriverLoaded: TDADriverLoadNotification;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

OnDriverUnloaded event

AutoLoad property

LoadDriver and LoadDrivers methods


TDADriverManager.OnDriverUnloaded Event

TDADriverManager Class	TDADriverManager Class	See Also

Fires after a dynamic driver has been unloaded.

See Also

OnDriverLoaded event

UnloadDriver and UnloadAllDrivers methods

Pascal

property OnDriverUnloaded: TDADriverLoadNotification;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

OnDriverLoaded event

UnloadDriver and UnloadAllDrivers methods


TDADriverManager.LoadDriver Method

TDADriverManager Class	TDADriverManager Class	See Also

Dynamically loads the driver from the specified .DAD file.

See Also

UnloadDriver, UnloadAllDrivers and LoadDrivers methods

OnDriverLoaded event

Pascal

procedure LoadDriver(const aFileName: string);

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

UnloadDriver, UnloadAllDrivers and LoadDrivers methods

OnDriverLoaded event


TDADriverManager.LoadDrivers Method

TDADriverManager Class	TDADriverManager Class	See Also

Dynamically loads all the driver from the specified list of .DAD files.

See Also

UnloadDriver, UnloadAllDrivers and LoadDriver methods

OnDriverLoaded event

Pascal

procedure LoadDrivers(const aDriverList: IROStrings; aIgnoreDuplicates: boolean = false; aIgnoreErrors: boolean = false); overload;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

UnloadDriver, UnloadAllDrivers and LoadDriver methods

OnDriverLoaded event


TDADriverManager.UnloadAllDrivers Method

TDADriverManager Class	TDADriverManager Class	See Also

Unloads all dynamically loaded drivers.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method

See Also

UnloadDriver, LoadDriver and LoadDrivers methods

OnDriverUnloaded event

TDAConnectionManager.ClearPool method

Pascal

procedure UnloadAllDrivers; overload;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

UnloadDriver, LoadDriver and LoadDrivers methods

OnDriverUnloaded event

TDAConnectionManager.ClearPool method


TDADriverManager.UnloadDriver Method

TDADriverManager Class	TDADriverManager Class	See Also

Unloads the specified driver, if it was dynamically loaded.

Before calling this method, make sure that there are no active or pooled connections using the driver(s) about to be unloaded. You can ensure all pooled connections are closed by calling the TDAConnectionManager.ClearPool method

See Also

UnloadAllDrivers, LoadDriver and LoadDrivers methods

OnDriverUnloaded event

TDAConnectionManager.ClearPool method

Pascal

procedure UnloadDriver(anIndex: integer); overload;

Links

TDADriverManager Class, TDADriverManager Class, See Also


See Also

UnloadAllDrivers, LoadDriver and LoadDrivers methods

OnDriverUnloaded event

TDAConnectionManager.ClearPool method


TDAFIBDriver Class

Data Abstract Reference	See Also

TDAFIBDriver is a placeholder component used to statically link the DevRace FIBPlus driver for Firebird (contained in the uDAFIBDriver unit) into your executable.

This driver depends on the third-party FIBPlus components available from DevRace.

See Also

Database Drivers and Driver Components help topics

DevRace website

Pascal

TDAFIBDriver = class(TDADriverReference);

Class Hierarchy

File

uDAFIBDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

DevRace website


TDAField Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDACustomField expands the abstract TDABaseField to add properties and methods needed for field definitions in data tables, both in the schema and data dictionaries as well as in live TDADataTables. 	TDAParam used for parameter definitions in commands and data tables.

Essential Properties

Name specifies the name of the field or parameter.

DataType specifies the type of data contained within the field.

Also, Value and the individual As* properties give access to the value of the field for the current record, on live data.

See Also

TDABaseField, TDAParam and TDADataTable classes

Pascal

TDAField = class(TDACustomField);

Class Hierarchy

File

uDAInterfaces

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDAField Class Properties

TDAField Class	Legend

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.

TDAField Class

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.


Legend

Property

read only


TDAField Class Methods

TDAField Class	Legend

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream


Legend

Method


TDAField Class Events

TDAField Class	Legend

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.

TDAField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Event


Legend

TDAField Class

Legend

Property

read only

Method

Event


TDAField Class Members

TDAField Class	Legend

Members

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDACustomField Class

 Alignment

Specifies the display alignment used for this field in visual data controls.

 BusinessClassID

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 CustomAttributes

Allows the storage of custom, user-defined attributes. This string list will not be evaluated by the Data Abstract library, but it can be used to add custom information to your schema at design time which will later be evaluated by your own client or server-sided code.

For example, CustomAttributes could be used to store additional display properties that will be evaluated by the client when displaying data.

 DefaultValue

Specifies a default value to be written to the field when adding new records, client-side.

 DisplayFormat

Specifies the display format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 DisplayLabel

Specifies the display label or caption used for this field in visual data controls.

By default, this value will be identical to the field's Name.

 DisplayWidth

Specifies the display width, in pixels, used for this field in visual data controls.

 EditFormat

Specifies the editing format used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for formatting the field values.

 EditMask

Specifies the editing mask used for this field in visual data controls.

Please refer to the Delphi documentation for TField and related classes for details on the syntax for edit masks.

 FieldCollection

Returns the collection that this field belongs to. Typically, this will be the Fields property of the TDADataTable (if the field is part of a live data table) or Schema TDADataset (if the field is part of a schema definition).

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 LogChanges

Specifies whether changes to this field should be logged as part of the delta so they can layer be applied back to the server.

When set to false, the client application will keep no record of changes made to these fields, and any changes made by client application will be lost when the client restarts or refreshes data from the server.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

 OldValue

Contains the original value of a changed field.

If LogChanges is active for a field, the data table will maintain a log of all changes made to the records, until the changes are applied back to the back-end database. After a field's value has changed, this property will give you access to the original value that was obtained from the database.

For obvious reasons, OldValue will not be available for newly inserted records.

 ReadOnly

Specifies whether the values contained in this field can be changed (false) or not.

 RegExpression

Specifies a Regular Expression that will be used to validate values entered into this field. Any change that does not match the regular expression will be rejected.

 Required

Specifies whether the field requires a non-null value, or not. If set to true, data tables will not accept posting of new records or changes to existing records where this field does not contain a value.

Note that the Required property merely enforces client-side data entry; it does not necessarily have to match "required" or "not null" settings on the back-end database (although in most scenarios the two will match).

It is entirely possible to set a field as "required" although the back-end database in fact does allow nulls, or vice versa (although in the latter case, applying a null... more

 ServerAutoRefresh

Specifies if the value of this field will be automatically refreshed from the server as part of an INSERT or UPDATE.

Set this value to true if you expect field values to change on the server when records are inserted or updated (for example due to default values or triggers), and you want your client to automatically receive the new value after the change has been processed.

If this value is true, the server will generate a new delta record after processing the change, to allow the values to be sent back to the client and merged into the local... more

 Visible

Specifies whether this field should be visible by default in grids and other data-bound controls (true) or not (false).

Note that this property only controls the default visibility for "unconfigured" grids and data controls. Individual settings on user controls can override the visibility.

TDAField Class

 Calculated

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 InPrimaryKey

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

 KeyFields

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

 Lookup

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID... more

 LookupCache

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

 LookupKeyFields

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

 LookupResultField

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

 LookupSource

Specifies the TDataSource that will used as the source to look up field values.

Methods

 Clear

Clears the value of the field by setting it to Null.

TDACustomField Class

 LoadFromStream

 SaveToStream

Events

TDACustomField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.

TDAField Class

 OnChange

Fires whenever the value of a particular field has been changed.

 OnValidate

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.


Legend

Property

read only

Method

Event


See Also

TDABaseField, TDAParam and TDADataTable classes


TDAField.Calculated Property

TDAField Class	TDAField Class	See Also

Specifies whether this field is Calculated, or not. Calculated fields do not have direct a physical representation on the database, their value is instead generated on the fly, client side, based on other fields in the same record.

For example, a calculated Fullname field could obtain its value by concatenating FirstName and LastName.

Calculated fields usually are read-only and do not log changes (since there is no storage space where such changes could be persisted in the database).

See Also

LogChanges and ReadOnly properties

Pascal

property Calculated: boolean;

Links

TDAField Class, TDAField Class, See Also


See Also

LogChanges and ReadOnly properties


TDAField.DictionaryEntry Property

TDAField Class	TDAField Class	See Also

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry: 	DataType

BlobType

GeneratorName

Size

BusinessClassID

DisplayWidth

DisplayLabel

DisplayFormat

Visible

Alignment

DefaultValue

ReadOnly

EditMask

EditFormat

RegExpression

Required

See Also

TDADataDictionary component

Schema Modeler help topic

Pascal

property DictionaryEntry: string;

Links

TDAField Class, TDAField Class, See Also


See Also

TDADataDictionary component

Schema Modeler help topic


TDAField.InPrimaryKey Property

TDAField Class	TDAField Class

Specifies whether this field is part of the primary key for the dataset. The primary key (or short PK) consists of the field or fields that uniquely identify each record in a dataset and, eventually, the underlying database table.

Please refer to your database system's documentation and general database design guidelines for more information on primary keys.

Pascal

property InPrimaryKey: boolean;

Links

TDAField Class, TDAField Class


TDAField.KeyFields Property

TDAField Class	TDAField Class	See Also

Specifies the key field or key fields that contain the original value to be looked up on the LookupSource.

See Also

Lookup, LookupCache, LookupKeyFields, LookupResultField and LookupSource properties

Pascal

property KeyFields: string;

Links

TDAField Class, TDAField Class, See Also


See Also

Lookup, LookupCache, LookupKeyFields, LookupResultField and LookupSource properties


TDAField.Lookup Property

TDAField Class	TDAField Class	See Also

Specifies whether the field is a Lookup Field, whose value will be determined at runtime by looking up values from a different dataset.

Similar to calculated fields, lookup fields are not direct representations of a field in the back-end database, but are filled at runtime, usually by using a Foreign Key Relationship to look up values from a secondary table.

For example, an Orders table might store a CustomerID field, and additionally have a CustomerName lookup field defined, which will be filled by obtaining the appropriate name (the LookupResultField) from the Customers table (the LookupSource), using the CustomerID (the LookupKeyField).

See Also

LookupCache, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Calculated and LogChanges properties

Pascal

property Lookup: boolean;

Links

TDAField Class, TDAField Class, See Also


See Also

LookupCache, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Calculated and LogChanges properties


TDAField.LookupCache Property

TDAField Class	TDAField Class	See Also

Specifies whether values for lookup fields will be cached (true) or reevaluated whenever they are needed.

Set this property to true for optimal performance, if data in your lookup source changes rarely; set it to false to make sure your lookup values are always up to date if your data changes frequently.

See Also

Lookup, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties

Pascal

property LookupCache: boolean;

Links

TDAField Class, TDAField Class, See Also


See Also

Lookup, KeyFields, LookupKeyFields, LookupResultField and LookupSource properties


TDAField.LookupKeyFields Property

TDAField Class	TDAField Class	See Also

Specifies the key field or key fields that will be used on the LookupSource to locate the appropriate record.

See Also

Lookup, LookupCache, KeyFields, LookupResultField and LookupSource properties

Pascal

property LookupKeyFields: string;

Links

TDAField Class, TDAField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupResultField and LookupSource properties


TDAField.LookupResultField Property

TDAField Class	TDAField Class	See Also

Specifies of the name of the field (in the LookupSource) that contains the result value for the lookup. This field's value will be used as the value for the lookup field itself.

See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupSource properties

Pascal

property LookupResultField: string;

Links

TDAField Class, TDAField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupSource properties


TDAField.LookupSource Property

TDAField Class	TDAField Class	See Also

Specifies the TDataSource that will used as the source to look up field values.

See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupResultField properties

Pascal

property LookupSource: TDataSource;

Links

TDAField Class, TDAField Class, See Also


See Also

Lookup, LookupCache, KeyFields, LookupKeyFields and LookupResultField properties


TDAField.OnChange Event

TDAField Class	TDAField Class	See Also

Fires whenever the value of a particular field has been changed.

See Also

OnValidate event

Pascal

property OnChange: TDAFieldNotifyEvent;

Links

TDAField Class, TDAField Class, See Also


See Also

OnValidate event


TDAField.OnValidate Event

TDAField Class	TDAField Class	See Also

Fires whenever the value of a particular field is about to change, given the event handler opportunity to validate and possibly reject the change by raising an exception.

See Also

OnChange event

Pascal

property OnValidate: TDAFieldNotifyEvent;

Links

TDAField Class, TDAField Class, See Also


See Also

OnChange event


TDAGetDataRequest Class

Data Abstract Reference	Legend	Members	Properties	See Also

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve data from the server.

Essential Properties

MethodName specifies the name of the method to call to obtain the data

IncomingDataParameter specifies the parameter that will contain the data received from the server

OutgoingTableNamesParameter specifies parameter for the name or names of the tables to retrieve

See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

TDAGetDataRequest = class(TDARemoteDataAdapterRequest);

Class Hierarchy

File

uDARemoteDataAdapterRequests

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAGetDataRequest Class Properties

TDAGetDataRequest Class	Legend

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetDataRequest Class

 IncomingDataParameter

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual data sent form the server. Depending on the used Data Streamer , this can be a Binary or String type.

 OutgoingIncludeSchemaParameter

Specifies the Boolean parameter that will indicate whether to include schema information in the retrieved data, or not.

This parameter is used by the legacy v3.0 server interface only.

 OutgoingMaxRecordsParameter

Specifies the integer parameter that will indicate the maximum number of records to retrieve.

This parameter is used by the legacy v3.0 server interface only.

 OutgoingParamsParameter

Specifies the parameter that takes array of TDADatasetParam structs to send any required parameters for the retrieved data table.

This parameter is used by the legacy v3.0 server interface only, and needs to be configured only if parameters need to be passed.

 OutgoingTableNamesParameter

Specifies the parameter for the name or names of the tables to retrieve from the server.

This parameter must be configured for all data request. Depending on the server interface, this can be a string or an array of strings.

The v3.0 server interfaces uses a string and can only receive one table at a time, while the new v4.0 interface expects an array of strings.

 OutgoingTableRequestInfosParameter

Specifies the parameter that takes array of TableRequestInfo to provide additional options for the data retrieval of each table.

This parameter is used by the v4.0 server interface only.


Legend

Property


Legend

TDAGetDataRequest Class

Legend

Property


TDAGetDataRequest Class Members

TDAGetDataRequest Class	Legend

Members

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetDataRequest Class

 IncomingDataParameter

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual data sent form the server. Depending on the used Data Streamer , this can be a Binary or String type.

 OutgoingIncludeSchemaParameter

Specifies the Boolean parameter that will indicate whether to include schema information in the retrieved data, or not.

This parameter is used by the legacy v3.0 server interface only.

 OutgoingMaxRecordsParameter

Specifies the integer parameter that will indicate the maximum number of records to retrieve.

This parameter is used by the legacy v3.0 server interface only.

 OutgoingParamsParameter

Specifies the parameter that takes array of TDADatasetParam structs to send any required parameters for the retrieved data table.

This parameter is used by the legacy v3.0 server interface only, and needs to be configured only if parameters need to be passed.

 OutgoingTableNamesParameter

Specifies the parameter for the name or names of the tables to retrieve from the server.

This parameter must be configured for all data request. Depending on the server interface, this can be a string or an array of strings.

The v3.0 server interfaces uses a string and can only receive one table at a time, while the new v4.0 interface expects an array of strings.

 OutgoingTableRequestInfosParameter

Specifies the parameter that takes array of TableRequestInfo to provide additional options for the data retrieval of each table.

This parameter is used by the v4.0 server interface only.


Legend

Property


See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics


TDAGetDataRequest.IncomingDataParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual data sent form the server. Depending on the used Data Streamer , this can be a Binary or String type.

See Also

Dynamic Method Binding and Data Streamers help topics

TDADataStreamer class

Pascal

property IncomingDataParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and Data Streamers help topics

TDADataStreamer class


TDAGetDataRequest.OutgoingIncludeSchemaParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the Boolean parameter that will indicate whether to include schema information in the retrieved data, or not.

This parameter is used by the legacy v3.0 server interface only.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property OutgoingIncludeSchemaParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAGetDataRequest.OutgoingMaxRecordsParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the integer parameter that will indicate the maximum number of records to retrieve.

This parameter is used by the legacy v3.0 server interface only.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property OutgoingMaxRecordsParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAGetDataRequest.OutgoingParamsParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the parameter that takes array of TDADatasetParam structs to send any required parameters for the retrieved data table.

This parameter is used by the legacy v3.0 server interface only, and needs to be configured only if parameters need to be passed.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property OutgoingParamsParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAGetDataRequest.OutgoingTableNamesParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the parameter for the name or names of the tables to retrieve from the server.

This parameter must be configured for all data request. Depending on the server interface, this can be a string or an array of strings.

The v3.0 server interfaces uses a string and can only receive one table at a time, while the new v4.0 interface expects an array of strings.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property OutgoingTableNamesParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAGetDataRequest.OutgoingTableRequestInfosParameter Property

TDAGetDataRequest Class	TDAGetDataRequest Class	See Also

Specifies the parameter that takes array of TableRequestInfo to provide additional options for the data retrieval of each table.

This parameter is used by the v4.0 server interface only.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

TableRequestInfo class and RODL struct

Pascal

property OutgoingTableRequestInfosParameter: string;

Links

TDAGetDataRequest Class, TDAGetDataRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

TableRequestInfo class and RODL struct


TDAGetSchemaRequest Class

Data Abstract Reference	Legend	Members	Properties	See Also

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve schema information from the server.

Essential Properties

MethodName specifies the name of the method to call to obtain the data

IncomingSchemaParameter specifies the parameter that will contain the schema information received from the server

See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

TDAGetSchemaRequest = class(TDARemoteDataAdapterRequest);

Class Hierarchy

File

uDARemoteDataAdapterRequests

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAGetSchemaRequest Class Properties

TDAGetSchemaRequest Class	Legend

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetSchemaRequest Class

 IncomingSchemaParameter

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all schema request calls as it will be used to obtain the actual schema information sent form the server.

Depending on the used Data Streamer and server interface, this can be a Binary or String type; the legacy v3.0 server interface uses the data streamer to encode schema information, while the v4.0 interface will return the original XML schema.

 OutgoingFilterParameter

Specifies a string parameter that can be used to transmit an optional filter string to the server, to limit the scope of the retrieved schema.

This filter value is not used by the default service implementations, but can be evaluated by custom code (for example in the OnGetSchemaAsXMLEvent event) to restrict or modify the returned schema.


Legend

Property


Legend

TDAGetSchemaRequest Class

Legend

Property


TDAGetSchemaRequest Class Members

TDAGetSchemaRequest Class	Legend

Members

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetSchemaRequest Class

 IncomingSchemaParameter

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all schema request calls as it will be used to obtain the actual schema information sent form the server.

Depending on the used Data Streamer and server interface, this can be a Binary or String type; the legacy v3.0 server interface uses the data streamer to encode schema information, while the v4.0 interface will return the original XML schema.

 OutgoingFilterParameter

Specifies a string parameter that can be used to transmit an optional filter string to the server, to limit the scope of the retrieved schema.

This filter value is not used by the default service implementations, but can be evaluated by custom code (for example in the OnGetSchemaAsXMLEvent event) to restrict or modify the returned schema.


Legend

Property


See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics


TDAGetSchemaRequest.IncomingSchemaParameter Property

TDAGetSchemaRequest Class	TDAGetSchemaRequest Class	See Also

Specifies the parameter that will contain the data received from the server.

This parameter must be configured for all schema request calls as it will be used to obtain the actual schema information sent form the server.

Depending on the used Data Streamer and server interface, this can be a Binary or String type; the legacy v3.0 server interface uses the data streamer to encode schema information, while the v4.0 interface will return the original XML schema.

See Also

Dynamic Method Binding, The New v4.0 Service Interface and Data Streamers help topics

TDADataStreamer class

Pascal

property IncomingSchemaParameter: string;

Links

TDAGetSchemaRequest Class, TDAGetSchemaRequest Class, See Also


See Also

Dynamic Method Binding, The New v4.0 Service Interface and Data Streamers help topics

TDADataStreamer class


TDAGetSchemaRequest.OutgoingFilterParameter Property

TDAGetSchemaRequest Class	TDAGetSchemaRequest Class	See Also

Specifies a string parameter that can be used to transmit an optional filter string to the server, to limit the scope of the retrieved schema.

This filter value is not used by the default service implementations, but can be evaluated by custom code (for example in the OnGetSchemaAsXMLEvent event) to restrict or modify the returned schema.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

property OutgoingFilterParameter: string;

Links

TDAGetSchemaRequest Class, TDAGetSchemaRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics


TDAGetScriptsRequest Class

Data Abstract Reference	Legend	Members	Properties	See Also

Configures the server request that will be executed by the TDARemoteDataAdapter to retrieve schema information from the server.

Essential Properties

MethodName specifies the name of the method to call to obtain the data

IncomingScriptParameter specifies the parameter that will contain the script(s) received from the server

OutgoingTableNamesParameter specifies the parameter for the name or names of the tables for which to retrieve the scripts

See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

TDAGetScriptsRequest = class(TDARemoteDataAdapterRequest);

Class Hierarchy

File

uDARemoteDataAdapterRequests

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAGetScriptsRequest Class Properties

TDAGetScriptsRequest Class	Legend

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetScriptsRequest Class

 IncomingScriptParameter

Specifies the string parameter that will contain the script or scripts received from the server.

This parameter must be configured for all script request calls as it will be used to obtain the actual script sent form the server.

 OutgoingTableNamesParameter

Specifies the parameter for the name or names of the tables for which to retrieve scripts.


Legend

Property


Legend

TDAGetScriptsRequest Class

Legend

Property


TDAGetScriptsRequest Class Members

TDAGetScriptsRequest Class	Legend

Members

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAGetScriptsRequest Class

 IncomingScriptParameter

Specifies the string parameter that will contain the script or scripts received from the server.

This parameter must be configured for all script request calls as it will be used to obtain the actual script sent form the server.

 OutgoingTableNamesParameter

Specifies the parameter for the name or names of the tables for which to retrieve scripts.


Legend

Property


See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics


TDAGetScriptsRequest.IncomingScriptParameter Property

TDAGetScriptsRequest Class	TDAGetScriptsRequest Class	See Also

Specifies the string parameter that will contain the script or scripts received from the server.

This parameter must be configured for all script request calls as it will be used to obtain the actual script sent form the server.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property IncomingScriptParameter: string;

Links

TDAGetScriptsRequest Class, TDAGetScriptsRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAGetScriptsRequest.OutgoingTableNamesParameter Property

TDAGetScriptsRequest Class	TDAGetScriptsRequest Class	See Also

Specifies the parameter for the name or names of the tables for which to retrieve scripts.

See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class

Pascal

property OutgoingTableNamesParameter: string;

Links

TDAGetScriptsRequest Class, TDAGetScriptsRequest Class, See Also


See Also

Dynamic Method Binding and The New v4.0 Service Interface help topics

TDADataStreamer class


TDAIBODriver Class

Data Abstract Reference	See Also

TDAIBODriver is a placeholder component used to statically link the Interbase IBO driver (contained in the uDAIBODriver unit) into your executable.

This driver depends on the third-party IBO components available from Jason Wharton.

See Also

Database Drivers and Driver Components help topics

Jason Wharton's IBObjects website

Pascal

TDAIBODriver = class(TDADriverReference);

Class Hierarchy

File

uDAIBODriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

Jason Wharton's IBObjects website


TDAIBXDriver Class

Data Abstract Reference	See Also

TDAIBXDriver is a placeholder component used to statically link the Interbase IBX driver (contained in the uDAIBXDriver unit) into your executable.

See Also

Database Drivers and Driver Components help topics

Pascal

TDAIBXDriver = class(TDADriverReference);

Class Hierarchy

File

uDAIBXDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics


TDAMyDACDriver Class

Data Abstract Reference	See Also

TDAMyDACDriver is a placeholder component used to statically link the CoreLab MyDAC driver for MySQL (contained in the uDAMyDACDriver unit) into your executable.

This driver depends on the third-party MyDAC components available from CoreLab.

See Also

Database Drivers and Driver Components help topics

CoreLab website

Pascal

TDAMyDACDriver = class(TDADriverReference);

Class Hierarchy

File

uDAMyDACDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

CoreLab website


TDAMySQLDacDriver Class

Data Abstract Reference	See Also

TDAMySQLDACDriver is a placeholder component used to statically link the microOLAP MySQLDAC driver for MySQL (contained in the uDAMySQLDACDriver unit) into your executable.

This driver depends on the third-party MySQLDAC components available from microOLAP.

See Also

Database Drivers and Driver Components help topics

microOLAP website

Pascal

TDAMySQLDacDriver = class(TDADriverReference);

Class Hierarchy

File

uDAMySQLDACDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

microOLAP website


TDAODACDriver Class

Data Abstract Reference	See Also

TDAODACDriver is a placeholder component used to statically link the CoreLab ODAC driver for Oracle (contained in the uDAODACDriver unit) into your executable.

This driver depends on the third-party ODAC components available from CoreLab.

See Also

Database Drivers and Driver Components help topics

CoreLab website

Pascal

TDAODACDriver = class(TDADriverReference);

Class Hierarchy

File

uDAODACDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

CoreLab website


TDAParam Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

Descending from TDABaseField, TDAParam is used to represent an individual parameter for a command or data table.

Please refer to the Command and Data Table Parameters help topic for more details.

Essential Properties

Name specifies the name of the field or parameter

DataType specifies the type of data contained within the field

ParamType specifies the direction of the parameter

Also, Value and the individual As* properties give access to the value of the field for the current record, on live data.

See Also

TDABaseField class

Command and Data Table Parameters help topic

Pascal

TDAParam = class(TDABaseField);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDAParam Class Properties

TDAParam Class	Legend

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDAParam Class

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 ParamType

Specifies the direction of the parameter.

Command parameters can either be incoming (passed into the command), outgoing/result (returned from the command) or Incoming and Outgoing (both passed in and returned).

Data table parameters can only be incoming.

 Value

Gets or sets the value of the field as variant.


Legend

Property

read only


TDAParam Class Methods

TDAParam Class	Legend

Methods

 Clear

Clears the value of the field by setting it to Null.


Legend

Method


Legend

TDAParam Class

Legend

Property

read only

Method


TDAParam Class Members

TDAParam Class	Legend

Members

Properties

 AsBoolean

Gets or sets the value of the field as Boolean value.

 AsCurrency

Gets or sets the value of the field as 64-bit fixed point Currency value.

 AsDateTime

Gets or sets the value of the field as TDateTime value.

 AsFloat

Gets or sets the value of the field as Float/Double value.

 AsInteger

Gets or sets the value of the field as 32-bit integer value.

 AsLargeInt

Gets or sets the value of the field as 64-bit integer value.

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 AsVariant

Gets or sets the value of the field as variant.

 AsWideString

Gets or sets the value of the field as 16-bit Unicode WideString value.

 BlobType

Specifies additional Blob options, if the DataType of the field is set to datBlob.

 DataType

Specifies the type of data contained within the field, from a collection of supported TDADataTypes.

Depending on the data type, the Size and BlobType properties are also used to further define the data type in more detail. For datString and datWideString, Size will define the maximum length of string permitted for the field; for blobs and memos, BlobType provides special options.

 Description

Provides a human-readable description of the field.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the field or parameter in Schema Modeler.

 DictionaryEntry

Specifies the data dictionary entry to use for this field. If assigned (and a TDADataDictionary is assigned to the schema), specific properties of the field will automatically be filled from the data dictionary, rather then being stored with the field itself.

This allows to easily share field attributes across an entire application, by defining common field settings in the data dictionary and linking all relevant fields to that dictionary entry.

The following field properties are affected by this. If you are using Schema Modeler to edit your field definition, you will notice that these fields automatically gray out as you assign the DictionaryEntry:... more

 GeneratorName

For fields of type datAutoInc, this property specifies the name of the generator in the back-end database that will be used to generate new primary key values.

This applies only to database types that do not natively support AutoInc fields (such as Oracle or Interbase). Please refer to the AutoIncs and Generators help topic for more details

 IsNull

Returns whether the field currently contains a value (false) or is Null (true).

 Name

Specifies the name of the field or parameter.

This name usually matches the name of the underlying field in the physical database, or it's mapped to a different field using the data tables column mapping.

 Size

Defines the maximum length of string permitted for the field, DataType is set to datString or datWideString.

 Value

Gets or sets the value of the field as variant.

TDAParam Class

 AsString

Gets or sets the value of the field as 8-bit ANSI string value.

 ParamType

Specifies the direction of the parameter.

Command parameters can either be incoming (passed into the command), outgoing/result (returned from the command) or Incoming and Outgoing (both passed in and returned).

Data table parameters can only be incoming.

 Value

Gets or sets the value of the field as variant.

Methods

 Clear

Clears the value of the field by setting it to Null.


Legend

Property

read only

Method


See Also

TDABaseField class

Command and Data Table Parameters help topic


TDAParam.AsString Property

TDAParam Class	TDAParam Class	See Also

Gets or sets the value of the field as 8-bit ANSI string value.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsVariant,AsWideString and Value properties

Pascal

property AsString: string;

Links

TDAParam Class, TDAParam Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsVariant,AsWideString and Value properties


TDAParam.ParamType Property

TDAParam Class	TDAParam Class	See Also

Specifies the direction of the parameter.

Command parameters can either be incoming (passed into the command), outgoing/result (returned from the command) or Incoming and Outgoing (both passed in and returned).

Data table parameters can only be incoming.

See Also

TDAParamType enum

Command and Data Table Parameters help topic

Pascal

property ParamType: TDAParamType;

Links

TDAParam Class, TDAParam Class, See Also


See Also

TDAParamType enum

Command and Data Table Parameters help topic


TDAParam.Value Property

TDAParam Class	TDAParam Class	See Also

Gets or sets the value of the field as variant.

See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and AsWideString properties

Pascal

property Value: Variant;

Links

TDAParam Class, TDAParam Class, See Also


See Also

AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsLargeInt, AsString, AsVariant and AsWideString properties


TDAPostgresDACDriver Class

Data Abstract Reference	See Also

TDAPostgresDACDriver is a placeholder component used to statically link the microOLAP PostgresDAC driver for PostgreSQL (contained in the uDAPostgresDACDriver unit) into your executable.

This driver depends on the third-party PostgresDAC components available from microOLAP.

See Also

Database Drivers and Driver Components help topics

microOLAP website

Pascal

TDAPostgresDACDriver = class(TDADriverReference);

Class Hierarchy

File

uDAPostgresDACDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

microOLAP website


TDAPoweredByDataAbstractButton Class

Data Abstract Reference

TDAPoweredByDataAbstracyButton is a visual component that shows an image button with the RemObjects Data Abstract logo and the text "powered by Data Abstract". You can use it in your application's About box to let users know that your application was build with DA.

Clicking the button will open the RemObjects Software homepage (http://www.remobjects.com) in the user's default web browser.

Relevant Properties

The ApplicationType property toggles the display between the "Client" and "Server" logo:

Pascal

TDAPoweredByDataAbstractButton = class(TROPoweredByRemObjectsButton);

Class Hierarchy

File

uDAPoweredByDataAbstractButton

Links

Data Abstract Reference


TDAPSScriptingProvider Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDAPSScriptingProvider forms the basis for Pascal Script integration in Data Abstract for Delphi.

You will usually hook an instance of this component up to the ScriptingProvider property of your TDADataTables and let them handle the rest.

Essential Properties

None, the TDAPSScriptingProvider is usable after being dropped or created.

See Also

TDADataTable.ScriptingProvider property

Business Rules Scripts help topic

Pascal

TDAPSScriptingProvider = class(TDAScriptingProvider, IDADataTableScriptingProvider, IDABusinessProcessorScriptingProvider);

Class Hierarchy

File

uDAPSScriptingProvider

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAPSScriptingProvider Class Properties

TDAPSScriptingProvider Class	Legend

Properties

TDAPSScriptingProvider Class

 ScriptEngine

Exposes the TPSScript Pascal Script scripting engine that will be used to execute business rules scripts.


Legend

Property

read only


Legend

TDAPSScriptingProvider Class

Legend

Property

read only


TDAPSScriptingProvider Class Members

TDAPSScriptingProvider Class	Legend

Members

Properties

TDAPSScriptingProvider Class

 ScriptEngine

Exposes the TPSScript Pascal Script scripting engine that will be used to execute business rules scripts.


Legend

Property

read only


See Also

TDADataTable.ScriptingProvider property

Business Rules Scripts help topic


TDAPSScriptingProvider.ScriptEngine Property

TDAPSScriptingProvider Class	TDAPSScriptingProvider Class	See Also

Exposes the TPSScript Pascal Script scripting engine that will be used to execute business rules scripts.

See Also

Pascal Script online help

TPSScript component

Pascal

property ScriptEngine: TPSScript;

Links

TDAPSScriptingProvider Class, TDAPSScriptingProvider Class, See Also


See Also

Pascal Script online help

TPSScript component


TDARemoteDataAdapter Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDARemoteDataAdapter component forms the center of communication from the client to the server. It provides all the logic for retrieving data into TDADataTables, applying changes back to the server and handling any other data-related communication with the server such as retrieving business rules scripts or schema information.

The adapter contains four specialized TDARemoteDataAdapterRequests to configure how communication with the server is handled. These requests can handle talking to the standard v3.0 or v4.0 service interfaces out of the box, or can be configured to any custom server interface you might be using, with Dynamic Method Binding.

Essential Properties

RemoteService specifies the data service that this adapter will communicate with

DataStreamer specifies the type of data streamer to be used for reading and writing data from and to the network.

Dynamic Method Binding

The following aforementioned TDARemoteDataAdapterRequest-based properties allow the manual binding of the adapter to any custom server interface: 	GetDataCall describes the server call that will be used to fetch data from the server

UpdateDataCall describes the server call that will be used to apply changes back to the server

GetSchemaCall describes the server call that will be used to obtain schema info from the server (mostly at design-time)

GetScriptsCall describes the server call that will be used to download business rules scripts

All of these calls can be reset to the default settings for the v4.0 or v3.0 service at any time, by calling the SetupDefaultRequest or SetupDefaultRequestV3 methods respectively, or by right-clicking the remote data adapter component at design-time and choosing the appropriate menu item.

By default (when freshly dropped or created, the calls will be configured for the v4.0 interface

See Also

TDADataTable and TDARemoteDataAdapterRequest classes

Business Rules Scripts, Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

TDARemoteDataAdapter = class(TDABaseRemoteDataAdapter);

Class Hierarchy

File

uDARemoteDataAdapter

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDARemoteDataAdapter Class Events

TDARemoteDataAdapter Class	Legend

Events

 AfterApplyUpdates

Fires directly after the adapter has finished applying updates for a specific data table.

 AfterGetDataCall

Fires directly after the GetDataCall has been completed.

 AfterGetSchemaCall

Fires directly after the GetSchemaCall has been completed.

 AfterGetScriptsCall

Fires directly after the GetScriptsCall has been completed.

 AfterUpdateDataCall

Fires directly after the UpdateDataCall has been completed.

 BeforeApplyUpdates

Fires directly before the adapter starts applying updates for a specific data table.

 BeforeGetDataCall

Fires directly before the GetDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeGetSchemaCall

Fires directly before the GetSchemaCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeGetScriptsCall

Fires directly before the GetScriptsCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeUpdateDataCall

Fires directly before the UpdateDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.


Legend

Event


TDARemoteDataAdapter Class Properties

TDARemoteDataAdapter Class	Legend

Properties

 CacheSchema

Specifies wether the remote data adapter will maintain a local cache of the schema retrieved from the server with subsequent calls to the Schema property.

If set to true, the adapter will download the schema the first time the Schema property is accessed, and subsequent accesses will return the same schema instance. If set to false (default), the schema will be re-downloaded from the server every time.

You can flush any cached schema by setting this property to false and then immediately back to true, or by calling the FlushSchema method.

 DataStreamer

Specifies the type of data streamer to be used for reading and writing data from and to the network.

The type of streamer assigned here must match the streamer used on the server's ServiceDataStreamer property.

 GetDataCall

Describes the server call that will be used to fetch data from the server.

Please refer to the documentation for TDAGetDataRequest for more details on the individual sub-properties.

 GetSchemaCall

Describes the server call that will be used to obtain schema info from the server. This call is mostly at design-time while setting up TDADataTables.

Please refer to the documentation for TDAGetSchemaRequest for more details on the individual sub-properties.

 GetScriptsCall

Describes the server call that will be used to download business rules scripts.

Please refer to the documentation for TDAGetScriptsRequest for more details on the individual sub-properties.

 RemoteService

Specifies the data service that this adapter will communicate with.

 Schema

Returns a TDASchema instance representing the schema published by the server.

The returned instance is owned and will be freed by the adapter itself.

The value of the CacheSchema property determines whether the schema will be re-downloaded on each access, or only once.

 UpdateDataCall

Describes the server call that will be used to apply changes back to the server.

Please refer to the documentation for TDAUpdateDataRequest for more details on the individual sub-properties.


Legend

Property

read only


TDARemoteDataAdapter Class Methods

TDARemoteDataAdapter Class	Legend

Methods

 ApplyUpdates

Applies all local changes made to the specified TDADataTables to the server.

In most scenarios you will not call this method yourself, but simply call ApplyUpdates on the respective data table itself. However, calling ApplyUpdates on the remote data adapter yourself provides additional flexibility, including the option to apply multiple data tables at the same time, avoiding unnecessary server round-trips.

 Fill

Retrieves data from the server for all of the specified TDADataTables.

In most scenarios you will not call this method yourself, but simply Open the respective data table, causing data to be retrieved automatically. However, calling Fill yourself provides additional flexibility, including the option to fill multiple data tables at the same time, avoiding unnecessary server round-trips.

 FillSchema

Retrieves schema information for all of the specified TDADataTables, and configured their Fields and Params setup to match the schema from the server.

 FillScripts

Retrieves business rules scripts for all of the specified TDADataTables from the server.

Please refer to the Business Rules Scripts help topic for more details.

 FlushSchema

Flushes any locally cached copy of the schema, ensuring that the schema will be freshly downloaded from the server the next time the Schema property is accessed.

 SetupDefaultRequest

Resets all four request objects to the default setup used for the new v4.0 service interface.

 SetupDefaultRequestV3

Resets all four request objects to the default setup used for legacy v3.0 service interface


Legend

Method

virtual


Legend

TDARemoteDataAdapter Class

Legend

Event

Property

read only

Method

virtual


TDARemoteDataAdapter Class Members

TDARemoteDataAdapter Class	Legend

Members

Events

 AfterApplyUpdates

Fires directly after the adapter has finished applying updates for a specific data table.

 AfterGetDataCall

Fires directly after the GetDataCall has been completed.

 AfterGetSchemaCall

Fires directly after the GetSchemaCall has been completed.

 AfterGetScriptsCall

Fires directly after the GetScriptsCall has been completed.

 AfterUpdateDataCall

Fires directly after the UpdateDataCall has been completed.

 BeforeApplyUpdates

Fires directly before the adapter starts applying updates for a specific data table.

 BeforeGetDataCall

Fires directly before the GetDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeGetSchemaCall

Fires directly before the GetSchemaCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeGetScriptsCall

Fires directly before the GetScriptsCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

 BeforeUpdateDataCall

Fires directly before the UpdateDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

Properties

 CacheSchema

Specifies wether the remote data adapter will maintain a local cache of the schema retrieved from the server with subsequent calls to the Schema property.

If set to true, the adapter will download the schema the first time the Schema property is accessed, and subsequent accesses will return the same schema instance. If set to false (default), the schema will be re-downloaded from the server every time.

You can flush any cached schema by setting this property to false and then immediately back to true, or by calling the FlushSchema method.

 DataStreamer

Specifies the type of data streamer to be used for reading and writing data from and to the network.

The type of streamer assigned here must match the streamer used on the server's ServiceDataStreamer property.

 GetDataCall

Describes the server call that will be used to fetch data from the server.

Please refer to the documentation for TDAGetDataRequest for more details on the individual sub-properties.

 GetSchemaCall

Describes the server call that will be used to obtain schema info from the server. This call is mostly at design-time while setting up TDADataTables.

Please refer to the documentation for TDAGetSchemaRequest for more details on the individual sub-properties.

 GetScriptsCall

Describes the server call that will be used to download business rules scripts.

Please refer to the documentation for TDAGetScriptsRequest for more details on the individual sub-properties.

 RemoteService

Specifies the data service that this adapter will communicate with.

 Schema

Returns a TDASchema instance representing the schema published by the server.

The returned instance is owned and will be freed by the adapter itself.

The value of the CacheSchema property determines whether the schema will be re-downloaded on each access, or only once.

 UpdateDataCall

Describes the server call that will be used to apply changes back to the server.

Please refer to the documentation for TDAUpdateDataRequest for more details on the individual sub-properties.

Methods

 ApplyUpdates

Applies all local changes made to the specified TDADataTables to the server.

In most scenarios you will not call this method yourself, but simply call ApplyUpdates on the respective data table itself. However, calling ApplyUpdates on the remote data adapter yourself provides additional flexibility, including the option to apply multiple data tables at the same time, avoiding unnecessary server round-trips.

 Fill

Retrieves data from the server for all of the specified TDADataTables.

In most scenarios you will not call this method yourself, but simply Open the respective data table, causing data to be retrieved automatically. However, calling Fill yourself provides additional flexibility, including the option to fill multiple data tables at the same time, avoiding unnecessary server round-trips.

 FillSchema

Retrieves schema information for all of the specified TDADataTables, and configured their Fields and Params setup to match the schema from the server.

 FillScripts

Retrieves business rules scripts for all of the specified TDADataTables from the server.

Please refer to the Business Rules Scripts help topic for more details.

 FlushSchema

Flushes any locally cached copy of the schema, ensuring that the schema will be freshly downloaded from the server the next time the Schema property is accessed.

 SetupDefaultRequest

Resets all four request objects to the default setup used for the new v4.0 service interface.

 SetupDefaultRequestV3

Resets all four request objects to the default setup used for legacy v3.0 service interface


Legend

Event

Property

read only

Method

virtual


See Also

TDADataTable and TDARemoteDataAdapterRequest classes

Business Rules Scripts, Dynamic Method Binding and The New v4.0 Service Interface help topics


TDARemoteDataAdapter.AfterApplyUpdates Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly after the adapter has finished applying updates for a specific data table.

See Also

BeforeApplyUpdates event

ApplyUpdates method

Pascal

property AfterApplyUpdates: TDAApplyUpdatesEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeApplyUpdates event

ApplyUpdates method


TDARemoteDataAdapter.AfterGetDataCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly after the GetDataCall has been completed.

See Also

BeforeGetDataCall event

GetDataCall property

Fill method

Pascal

property AfterGetDataCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeGetDataCall event

GetDataCall property

Fill method


TDARemoteDataAdapter.AfterGetSchemaCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly after the GetSchemaCall has been completed.

See Also

BeforeGetSchemaCall event

GetSchemaCall property

FillSchema method

Pascal

property AfterGetSchemaCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeGetSchemaCall event

GetSchemaCall property

FillSchema method


TDARemoteDataAdapter.AfterGetScriptsCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly after the GetScriptsCall has been completed.

See Also

BeforeGetScriptsCall event

GetScriptsCall property

FillScripts method

Pascal

property AfterGetScriptsCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeGetScriptsCall event

GetScriptsCall property

FillScripts method


TDARemoteDataAdapter.AfterUpdateDataCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly after the UpdateDataCall has been completed.

See Also

BeforeUpdateDataCall event

UpdateDataCall property

ApplyUpdates method

Pascal

property AfterUpdateDataCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeUpdateDataCall event

UpdateDataCall property

ApplyUpdates method


TDARemoteDataAdapter.BeforeApplyUpdates Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly before the adapter starts applying updates for a specific data table.

See Also

AfterApplyUpdates event

ApplyUpdates method

Pascal

property BeforeApplyUpdates: TDAApplyUpdatesEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

AfterApplyUpdates event

ApplyUpdates method


TDARemoteDataAdapter.BeforeGetDataCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly before the GetDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

See Also

BeforeGetDataCall event

GetDataCall property

Fill method

Dynamic Method Binding help topic

Pascal

property BeforeGetDataCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

BeforeGetDataCall event

GetDataCall property

Fill method

Dynamic Method Binding help topic


TDARemoteDataAdapter.BeforeGetSchemaCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly before the GetSchemaCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

See Also

AfterGetSchemaCall event

GetSchemaCall property

FillSchema method

Dynamic Method Binding help topic

Pascal

property BeforeGetSchemaCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

AfterGetSchemaCall event

GetSchemaCall property

FillSchema method

Dynamic Method Binding help topic


TDARemoteDataAdapter.BeforeGetScriptsCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly before the GetScriptsCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

See Also

AfterGetScriptsCall event

GetScriptsCall property

FillScripts method

Dynamic Method Binding help topic

Pascal

property BeforeGetScriptsCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

AfterGetScriptsCall event

GetScriptsCall property

FillScripts method

Dynamic Method Binding help topic


TDARemoteDataAdapter.BeforeUpdateDataCall Event

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Fires directly before the UpdateDataCall will be executed.

You can use this event to perform last minute changes to the requests's parameters (such as filling any custom parameters your service might expect, when using Dynamic Method Binding.

See Also

AfterUpdateDataCall event

UpdateDataCall property

ApplyUpdates method

Dynamic Method Binding help topic

Pascal

property BeforeUpdateDataCall: TDARequestEvent;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

AfterUpdateDataCall event

UpdateDataCall property

ApplyUpdates method

Dynamic Method Binding help topic


TDARemoteDataAdapter.CacheSchema Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Specifies wether the remote data adapter will maintain a local cache of the schema retrieved from the server with subsequent calls to the Schema property.

If set to true, the adapter will download the schema the first time the Schema property is accessed, and subsequent accesses will return the same schema instance. If set to false (default), the schema will be re-downloaded from the server every time.

You can flush any cached schema by setting this property to false and then immediately back to true, or by calling the FlushSchema method.

Use Case

Set this property to false when you expect frequent changes in the schema information, or when you want to update data tables to a changed server, at design time.

Set it to true you want your application to only obtain the schema once and don't expect the server-side schema to change while the application is running.

See Also

Schema property

FlushSchema method

Pascal

property CacheSchema: boolean;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

Schema property

FlushSchema method


TDARemoteDataAdapter.DataStreamer Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Specifies the type of data streamer to be used for reading and writing data from and to the network.

The type of streamer assigned here must match the streamer used on the server's ServiceDataStreamer property.

See Also

TDADataStreamer class

TDataAbstractService.ServiceDataStreamer property

Pascal

property DataStreamer: TDADataStreamer;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TDADataStreamer class

TDataAbstractService.ServiceDataStreamer property


TDARemoteDataAdapter.GetDataCall Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Describes the server call that will be used to fetch data from the server.

Please refer to the documentation for TDAGetDataRequest for more details on the individual sub-properties.

See Also

UpdateDataCall, GetSchemaCall and GetScriptsCall properties

Fill method

TDAGetDataRequest class

Pascal

property GetDataCall: TDAGetDataRequest;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

UpdateDataCall, GetSchemaCall and GetScriptsCall properties

Fill method

TDAGetDataRequest class


TDARemoteDataAdapter.GetSchemaCall Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Describes the server call that will be used to obtain schema info from the server. This call is mostly at design-time while setting up TDADataTables.

Please refer to the documentation for TDAGetSchemaRequest for more details on the individual sub-properties.

See Also

GetDataCall, UpdateDataCall and GetScriptsCall properties

FillSchema method

TDAGetSchemaRequest, TDASchema and TDADataTable classes

Pascal

property GetSchemaCall: TDAGetSchemaRequest;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

GetDataCall, UpdateDataCall and GetScriptsCall properties

FillSchema method

TDAGetSchemaRequest, TDASchema and TDADataTable classes


TDARemoteDataAdapter.GetScriptsCall Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Describes the server call that will be used to download business rules scripts.

Please refer to the documentation for TDAGetScriptsRequest for more details on the individual sub-properties.

See Also

GetDataCall, UpdateDataCall and GetSchemaCall properties

FillScripts method

TDAGetScriptsRequest class

Business Rules Scripts help topic

Pascal

property GetScriptsCall: TDAGetScriptsRequest;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

GetDataCall, UpdateDataCall and GetSchemaCall properties

FillScripts method

TDAGetScriptsRequest class

Business Rules Scripts help topic


TDARemoteDataAdapter.RemoteService Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Specifies the data service that this adapter will communicate with.

See Also

TRORemoteService in the RemObjects SDK online help

Pascal

property RemoteService: TRORemoteService;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TRORemoteService in the RemObjects SDK online help


TDARemoteDataAdapter.Schema Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Returns a TDASchema instance representing the schema published by the server.

The returned instance is owned and will be freed by the adapter itself.

The value of the CacheSchema property determines whether the schema will be re-downloaded on each access, or only once.

Notes

If CacheSchema is set to false, a new TDASchema will be created (and the old one disposed of) whenever Schema is accessed. Keep this in mind when holding on to individual members of the schema in your own code, as these references will be rendered invalid when a new schema is obtained from the server.

See Also

CacheSchema property

TDASchema component

Pascal

property Schema: TDASchema;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

CacheSchema property

TDASchema component


TDARemoteDataAdapter.UpdateDataCall Property

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Describes the server call that will be used to apply changes back to the server.

Please refer to the documentation for TDAUpdateDataRequest for more details on the individual sub-properties.

See Also

GetDataCall, GetSchemaCall and GetScriptsCall properties

ApplyUpdates method

TDAUpdateDataRequest class

Pascal

property UpdateDataCall: TDAUpdateDataRequest;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

GetDataCall, GetSchemaCall and GetScriptsCall properties

ApplyUpdates method

TDAUpdateDataRequest class


TDARemoteDataAdapter.ApplyUpdates Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Applies all local changes made to the specified TDADataTables to the server.

In most scenarios you will not call this method yourself, but simply call ApplyUpdates on the respective data table itself. However, calling ApplyUpdates on the remote data adapter yourself provides additional flexibility, including the option to apply multiple data tables at the same time, avoiding unnecessary server round-trips.

See Also

TDADataTable class

TDADataTables.ApplyUpdates method

UpdateDataCall property

BeforeUpdateDataCall and AfterUpdateDataCall events

BeforeApplyUpdates and AfterApplyUpdates events

Pascal

function ApplyUpdates(aTables: array of TDADataTable; aRefetchAll: boolean = false): boolean; override;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TDADataTable class

TDADataTables.ApplyUpdates method

UpdateDataCall property

BeforeUpdateDataCall and AfterUpdateDataCall events

BeforeApplyUpdates and AfterApplyUpdates events


TDARemoteDataAdapter.Fill Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Retrieves data from the server for all of the specified TDADataTables.

In most scenarios you will not call this method yourself, but simply Open the respective data table, causing data to be retrieved automatically. However, calling Fill yourself provides additional flexibility, including the option to fill multiple data tables at the same time, avoiding unnecessary server round-trips.

See Also

TDADataTable class

TDADataTables.Open method

GetDataCall property

BeforeGetDataCall and AfterGetDataCall events

Pascal

procedure Fill(aTables: array of TDADataTable; aSaveCursor: boolean = false; aIncludeSchema: boolean = false); override; overload;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TDADataTable class

TDADataTables.Open method

GetDataCall property

BeforeGetDataCall and AfterGetDataCall events


TDARemoteDataAdapter.FillSchema Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Retrieves schema information for all of the specified TDADataTables, and configured their Fields and Params setup to match the schema from the server.

Design-Time

You can perform the same task at design-time for individual data tables by right-clicking the data table component and selecting "Retrieve DataTable Schema" from the context menu

See Also

TDADataTable class

TDADataTables.Fields and Params properties

GetSchemaCall property

BeforeGetSchemaCall and AfterGetSchemaCall events

Pascal

procedure FillSchema(aTables: array of TDADataTable; aPreserveLookupFields: boolean = false; aPreserveClientCalcFields: boolean = false); override;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TDADataTable class

TDADataTables.Fields and Params properties

GetSchemaCall property

BeforeGetSchemaCall and AfterGetSchemaCall events


TDARemoteDataAdapter.FillScripts Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Retrieves business rules scripts for all of the specified TDADataTables from the server.

Please refer to the Business Rules Scripts help topic for more details.

See Also

TDADataTable class

TDADataTables.ScriptCode property

Business Rules Scripts help topic

GetScriptsCall property

BeforeGetScriptsCall and AfterGetScriptsCall events

Pascal

procedure FillScripts(aTables: array of TDADataTable); override;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

TDADataTable class

TDADataTables.ScriptCode property

Business Rules Scripts help topic

GetScriptsCall property

BeforeGetScriptsCall and AfterGetScriptsCall events


TDARemoteDataAdapter.FlushSchema Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Flushes any locally cached copy of the schema, ensuring that the schema will be freshly downloaded from the server the next time the Schema property is accessed.

See Also

Schema and CacheSchema properties

Pascal

procedure FlushSchema;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

Schema and CacheSchema properties


TDARemoteDataAdapter.SetupDefaultRequest Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Resets all four request objects to the default setup used for the new v4.0 service interface.

See Also

SetupDefaultRequestV3 method

The New v4.0 Service Interface help topic

GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall properties

Pascal

procedure SetupDefaultRequest;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

SetupDefaultRequestV3 method

The New v4.0 Service Interface help topic

GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall properties


TDARemoteDataAdapter.SetupDefaultRequestV3 Method

TDARemoteDataAdapter Class	TDARemoteDataAdapter Class	See Also

Resets all four request objects to the default setup used for legacy v3.0 service interface

See Also

SetupDefaultRequest method

The New v4.0 Service Interface help topic

GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall properties

Pascal

procedure SetupDefaultRequestV3;

Links

TDARemoteDataAdapter Class, TDARemoteDataAdapter Class, See Also


See Also

SetupDefaultRequest method

The New v4.0 Service Interface help topic

GetDataCall, UpdateDataCall, GetSchemaCall and GetScriptsCall properties


TDARemoteDataAdapterRequest Class

Data Abstract Reference	Legend	Members	Properties	See Also

Expands TRODynamicRequest for Data Abstract-specific calls done from within the TDARemoteDataAdapter.

You will not usually deal with instances of this class directly, but instead use the *Call properties on the TDARemoteDataAdapter.

See Also

TDARemoteDataAdapter component

TRODynamicRequest in the RemObjects SDK documentation

Pascal

TDARemoteDataAdapterRequest = class(TRODynamicRequest);

Class Hierarchy

File

uDARemoteDataAdapterRequests

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDARemoteDataAdapterRequest Class Properties

TDARemoteDataAdapterRequest Class	Legend

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.


Legend

Property


Legend

TDARemoteDataAdapterRequest Class

Legend

Property


TDARemoteDataAdapterRequest Class Members

TDARemoteDataAdapterRequest Class	Legend

Members

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.


Legend

Property


See Also

TDARemoteDataAdapter component

TRODynamicRequest in the RemObjects SDK documentation


TDARemoteDataAdapterRequest.MethodName Property

TDARemoteDataAdapterRequest Class	TDARemoteDataAdapterRequest Class	See Also

Specifies the name of the method to call.

See Also

Params property

TRODynamicRequest in the RemObjects SDK documentation

Pascal

property MethodName;

Links

TDARemoteDataAdapterRequest Class, TDARemoteDataAdapterRequest Class, See Also


See Also

Params property

TRODynamicRequest in the RemObjects SDK documentation


TDARemoteDataAdapterRequest.Params Property

TDARemoteDataAdapterRequest Class	TDARemoteDataAdapterRequest Class	See Also

Specifies the parameters to pass to and receive from the call.

See Also

MethodName property

TRODynamicRequest in the RemObjects SDK documentation

Pascal

property Params;

Links

TDARemoteDataAdapterRequest Class, TDARemoteDataAdapterRequest Class, See Also


See Also

MethodName property

TRODynamicRequest in the RemObjects SDK documentation


TDARemoteService Class

Data Abstract Reference	See Also

TDARemoteService is the base class for old v3.0-style Data Abstract Servers. It has been deprecated and is on only provided for backward compatibility with v3.0 projects.

It is recommended to base all new Data Abstract servers on the new and advanced v4.0 interface, for which the TDataAbstractService provides the default implementation.

See Also

TDataAbstractService class

The New v4.0 Service Interface help topic

Pascal

TDARemoteService = class(TRORemoteDataModule, IDARemoteService);

Class Hierarchy

File

DARemoteService_Impl

Links

Data Abstract Reference, See Also


See Also

TDataAbstractService class

The New v4.0 Service Interface help topic


TDASchema Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDASchema component represents the complete or partial schema of your database, including the data tables and commands defined for it, and relationships between data tables.

While you can edit the contents of a schema from code or in Object Inspector using the Commands, Datasets, Relationships and UpdateRules collection properties, you will usually edit your schema by double-clicking the component to launch the Schema Modeler.

Essential Properties

ConnectionManager must point to a TDAConnectionManager component that defines the database connection or connections used with the schema.

Relevant Properties

Diagrams should point to a TDADiagrams component to enable diagramming support in Schema Modeler

DataDictionary should point to a TDADataDictionary component to enable data dictionary support

See Also

Schema Modeler help topic

TDAConnectionManager, TDADiagrams and TDADataDictionary components

Pascal

TDASchema = class(TDAStreamableComponent, IDASchema, IDAHasDataDictionary);

Class Hierarchy

File

uDAClasses

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDASchema Class Properties

TDASchema Class	Legend

Properties

 Commands

Maintains a collection of all the TDASQLCommands defined in the schema.

 ConnectionManager

Specifies the TDAConnectionManager component that defines the connection or connections for this schema.

When editing the Schema in Schema Modeler, the connections will appear in the Connections Pane in the upper right corner.

 DataDictionary

Specifies the TDADataDictionary component used to store the data dictionary for this schema.

If this property is unassigned, the Data Dictionary features in Schema Modeler will be disabled.

 Datasets

Maintains a collection of all the TDADatasets (a.k.a. Data Tables) defined in the schema.

 Diagrams

Specifies the TDADiagrams component used to store diagrams for this schema.

If this property is unassigned, the diagramming features in Schema Modeler will be disabled.

 RelationShips

Maintains a collection of all the TDADatasetRelationships defined in the schema.

 UpdateRules

Maintains a collection of all the TDAUpdateRules defined in the schema.


Legend

Property


TDASchema Class Methods

TDASchema Class	Legend

Methods

 Clear

Clears the entire schema, removing all Commands, Datasets, Relationships and UpdateRules.


Legend

Method

virtual


Legend

TDASchema Class

Legend

Property

Method

virtual


TDASchema Class Members

TDASchema Class	Legend

Members

Properties

 Commands

Maintains a collection of all the TDASQLCommands defined in the schema.

 ConnectionManager

Specifies the TDAConnectionManager component that defines the connection or connections for this schema.

When editing the Schema in Schema Modeler, the connections will appear in the Connections Pane in the upper right corner.

 DataDictionary

Specifies the TDADataDictionary component used to store the data dictionary for this schema.

If this property is unassigned, the Data Dictionary features in Schema Modeler will be disabled.

 Datasets

Maintains a collection of all the TDADatasets (a.k.a. Data Tables) defined in the schema.

 Diagrams

Specifies the TDADiagrams component used to store diagrams for this schema.

If this property is unassigned, the diagramming features in Schema Modeler will be disabled.

 RelationShips

Maintains a collection of all the TDADatasetRelationships defined in the schema.

 UpdateRules

Maintains a collection of all the TDAUpdateRules defined in the schema.

Methods

 Clear

Clears the entire schema, removing all Commands, Datasets, Relationships and UpdateRules.


Legend

Property

Method

virtual


See Also

Schema Modeler help topic

TDAConnectionManager, TDADiagrams and TDADataDictionary components


TDASchema.Commands Property

TDASchema Class	TDASchema Class	See Also

Maintains a collection of all the TDASQLCommands defined in the schema.

See Also

TDASQLCommand class

Schema Modeler and Commands Pane help topic

Datasets, Relationships and UpdateRules collection properties

Pascal

property Commands: TDASQLCommandCollection;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDASQLCommand class

Schema Modeler and Commands Pane help topic

Datasets, Relationships and UpdateRules collection properties


TDASchema.ConnectionManager Property

TDASchema Class	TDASchema Class	See Also

Specifies the TDAConnectionManager component that defines the connection or connections for this schema.

When editing the Schema in Schema Modeler, the connections will appear in the Connections Pane in the upper right corner.

See Also

TDAConnectionManager component

Schema Modeler and Connections Pane help topics

Pascal

property ConnectionManager: TDAConnectionManager;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDAConnectionManager component

Schema Modeler and Connections Pane help topics


TDASchema.DataDictionary Property

TDASchema Class	TDASchema Class	See Also

Specifies the TDADataDictionary component used to store the data dictionary for this schema.

If this property is unassigned, the Data Dictionary features in Schema Modeler will be disabled.

See Also

TDADataDictionary component

Schema Modeler and Data Dictionary Editor help topics

Pascal

property DataDictionary: TDADataDictionary;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDADataDictionary component

Schema Modeler and Data Dictionary Editor help topics


TDASchema.Datasets Property

TDASchema Class	TDASchema Class	See Also

Maintains a collection of all the TDADatasets (a.k.a. Data Tables) defined in the schema.

See Also

TDADataset class

Schema Modeler and Data Tables Pane help topic

Commands, Relationships and UpdateRules collection properties

Pascal

property Datasets: TDADatasetCollection;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDADataset class

Schema Modeler and Data Tables Pane help topic

Commands, Relationships and UpdateRules collection properties


TDASchema.Diagrams Property

TDASchema Class	TDASchema Class	See Also

Specifies the TDADiagrams component used to store diagrams for this schema.

If this property is unassigned, the diagramming features in Schema Modeler will be disabled.

See Also

TDADiagrams component

TDASchema.Relationships property

Schema Modeler help topic

Pascal

property Diagrams: TDADiagrams;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDADiagrams component

TDASchema.Relationships property

Schema Modeler help topic


TDASchema.RelationShips Property

TDASchema Class	TDASchema Class	See Also

Maintains a collection of all the TDADatasetRelationships defined in the schema.

See Also

TDADatasetRelationship class

Schema Modeler and Relationships View help topic

Commands, Datasets and UpdateRules collection properties

Diagrams property

Pascal

property RelationShips: TDADatasetRelationshipCollection;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDADatasetRelationship class

Schema Modeler and Relationships View help topic

Commands, Datasets and UpdateRules collection properties

Diagrams property


TDASchema.UpdateRules Property

TDASchema Class	TDASchema Class	See Also

Maintains a collection of all the TDAUpdateRules defined in the schema.

See Also

TDAUpdateRule class

Schema Modeler and Commands Pane help topic

Commands, Datasets and Relationships collection properties

Pascal

property UpdateRules: TDAUpdateRuleCollection;

Links

TDASchema Class, TDASchema Class, See Also


See Also

TDAUpdateRule class

Schema Modeler and Commands Pane help topic

Commands, Datasets and Relationships collection properties


TDASchema.Clear Method

TDASchema Class	TDASchema Class	See Also

Clears the entire schema, removing all Commands, Datasets, Relationships and UpdateRules.

See Also

Commands, Datasets, Relationships and UpdateRules collection properties

Pascal

procedure Clear; override;

Links

TDASchema Class, TDASchema Class, See Also


See Also

Commands, Datasets, Relationships and UpdateRules collection properties


TDAScriptingProvider Class

Data Abstract Reference	See Also

The abstract TDAScriptingProvider class forms the scripting support in Data Abstract for Delphi.

At the time of this writing, only RemObjects Pascal Script 3.0 is officially supported as scripting engine, via the TDAPSScriptingProvider class. Other scripting engines could be integrated with Data Abstract in the future or from third parties, by implementing their own scripting provider that connects DA to the underlying scripting technology.

For information on integrating a custom scripting language with Data Abstract, please contact support.

See Also

TDADataTable.ScriptingProvider property

TDAPSScriptingProvider class

Business Rules Scripts help topic

Pascal

TDAScriptingProvider = class(TComponent);

Class Hierarchy

File

uDAScriptingProvider

Links

Data Abstract Reference, See Also


See Also

TDADataTable.ScriptingProvider property

TDAPSScriptingProvider class

Business Rules Scripts help topic


TDASDACDriver Class

Data Abstract Reference	See Also

TDASDACDriver is a placeholder component used to statically link the CoreLab SDAC driver for Microsoft SQL Server (contained in the uDASDACDriver unit) into your executable.

This driver depends on the third-party SDAC components available from CoreLab.

See Also

Database Drivers and Driver Components help topics

CoreLab website

Pascal

TDASDACDriver = class(TDADriverReference);

Class Hierarchy

File

uDASDACDriver

Links

Data Abstract Reference, See Also


See Also

Database Drivers and Driver Components help topics

CoreLab website


TDASQLCommand Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDASQLCommand class represents an individual command defined in a schema.

The class also forms the base for TDADataset, which represent datasets (or data tables).

Commands can be used to perform inserts/updates/deletes for data tables in the same schema, or can perform unrelated database actions such as running stored procedures or SQL scripts.

You will usually not create instances of this class directly, but define commands in Schema Modeler or access them through the Commands property of the TDASchema component.

See Also

TDASchema.Commands property

TDADataset class

Schema Modeler and Commands Pane help topics

Pascal

TDASQLCommand = class(TCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDASQLCommand Class Properties

TDASQLCommand Class	Legend

Properties

 Description

Provides a human-readable description of the command.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the command in Schema Modeler.

 Name

Specifies the name that uniquely identifies this command. This name can be the name of the underlying stored procedure, or any human-readable name that describes the purpose of the command.

 Params

Maintains the list of parameters for this command or data table.

Please refer to the Command and Data Table Parameters help topic for more information on this topic.

 SQLCommandCollection

References the collection that this command belongs to. Usually, this will be the Commands property of the TDASchema that this command is defined in.

 Statements

Maintains the statements defined for this command or dataset.

Please refer to the Cross Database Support help topic for more details on statements.


Legend

Property

read only


TDASQLCommand Class Methods

TDASQLCommand Class	Legend

Methods

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.


Legend

Method


Legend

TDASQLCommand Class

Legend

Property

read only

Method


TDASQLCommand Class Members

TDASQLCommand Class	Legend

Members

Properties

 Description

Provides a human-readable description of the command.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the command in Schema Modeler.

 Name

Specifies the name that uniquely identifies this command. This name can be the name of the underlying stored procedure, or any human-readable name that describes the purpose of the command.

 Params

Maintains the list of parameters for this command or data table.

Please refer to the Command and Data Table Parameters help topic for more information on this topic.

 SQLCommandCollection

References the collection that this command belongs to. Usually, this will be the Commands property of the TDASchema that this command is defined in.

 Statements

Maintains the statements defined for this command or dataset.

Please refer to the Cross Database Support help topic for more details on statements.

Methods

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.


Legend

Property

read only

Method


See Also

TDASchema.Commands property

TDADataset class

Schema Modeler and Commands Pane help topics


TDASQLCommand.Description Property

TDASQLCommand Class	TDASQLCommand Class	See Also

Provides a human-readable description of the command.

This property will not be used by the Data Abstract library, but can be filled with description text for documentation purposes when defining the command in Schema Modeler.

See Also

Schema Modeler help topic

Pascal

property Description: string;

Links

TDASQLCommand Class, TDASQLCommand Class, See Also


See Also

Schema Modeler help topic


TDASQLCommand.Name Property

TDASQLCommand Class	TDASQLCommand Class

Specifies the name that uniquely identifies this command. This name can be the name of the underlying stored procedure, or any human-readable name that describes the purpose of the command.

Pascal

property Name: string;

Links

TDASQLCommand Class, TDASQLCommand Class


TDASQLCommand.Params Property

TDASQLCommand Class	TDASQLCommand Class	See Also

Maintains the list of parameters for this command or data table.

Please refer to the Command and Data Table Parameters help topic for more information on this topic.

See Also

Command and Data Table Parameters help topic

Pascal

property Params: TDAParamCollection;

Links

TDASQLCommand Class, TDASQLCommand Class, See Also


See Also

Command and Data Table Parameters help topic


TDASQLCommand.SQLCommandCollection Property

TDASQLCommand Class	TDASQLCommand Class	See Also

References the collection that this command belongs to. Usually, this will be the Commands property of the TDASchema that this command is defined in.

See Also

TDASchema.Commands property

Pascal

property SQLCommandCollection: TDASQLCommandCollection;

Links

TDASQLCommand Class, TDASQLCommand Class, See Also


See Also

TDASchema.Commands property


TDASQLCommand.Statements Property

TDASQLCommand Class	TDASQLCommand Class	See Also

Maintains the statements defined for this command or dataset.

Please refer to the Cross Database Support help topic for more details on statements.

See Also

TDAStatement class

Cross Database Support help topic

Pascal

property Statements: TDAStatementCollection;

Links

TDASQLCommand Class, TDASQLCommand Class, See Also


See Also

TDAStatement class

Cross Database Support help topic


TDASQLCommand.ParamByName Method

TDASQLCommand Class	TDASQLCommand Class	See Also

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic

Pascal

function ParamByName(const aName: string): TDAParam;

Links

TDASQLCommand Class, TDASQLCommand Class, See Also


See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic


TDAStatement Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDAStatement class represents an individual statement defined for a command or data table in a schema.

Each command or data table can provide one or more separate statements, allowing for different SQL to be executed for different databases or database systems. Please refer to the Cross Database Support help topic for more details on this topic.

You will usually not create instances of this class directly, but define data tables in Schema Modeler or access them through the Statements property of the TDASQLCommand or TDADataset classes.

See Also

TDASQLCommand.Datasets property

TDASQLCommand and TDADataset classes

Schema Modeler, Data Tables Pane and Cross Database Support help topics

Pascal

TDAStatement = class(TCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAStatement Class Properties

TDAStatement Class	Legend

Properties

 ColumnMappings

Maintains the list of column mappings for this statement.

Column mappings are used to map the fields defined in the data table to the actual physical fields in the database and the statement's SELECT statement.

Please refer to the Column Mapping help topic for more details.

 Connection

Specifies the name of the connection that this statement belongs to.

By default, every statement is assigned to one specific connection, and will only be used when the command or data table is accessed on this same connection. Optionally, if the specified connection is marked as "default", the statement will also be used as default statement for any connections that do not have their own statement defined.

See the Cross Database Support help topic for more details on this.

 Name

Specifies an optional name of the statement, that can be used from code to manually execute a specific statement. This can be helpful if you need to define multiple statements for the same connection, and want to execute them selectively.

In most cases, the name will be ignored, and the Connection property will be used by Data Abstract to determine which statement to execute.

 NeedsParams

Returns true if the statement's SQL text contains parameter placeholders.

Please refer to the Command and Data Table Parameters help topic for more details on defining and using parameters.

 SQL

Specifies the actual SQL query for this statement.

 StatementCollection

References the collection that this statement belongs to. Usually, this will be the Statements property of the TDASQLCommand or TDADataset that this statement belongs to.

 StatementType

Specifies the type of statement represented by this statement.

 TargetTable

Specifies the name of the physical table in the database that this statement represents.

This value is required for data table statements only, and will be used as the table name for auto-generated insert/update/delete/refresh queries generated by the business processor.

Usually, this will be the name of the table in the FROM clause of your statements' SQL.


Legend

Property

read only


Legend

TDAStatement Class

Legend

Property

read only


TDAStatement Class Members

TDAStatement Class	Legend

Members

Properties

 ColumnMappings

Maintains the list of column mappings for this statement.

Column mappings are used to map the fields defined in the data table to the actual physical fields in the database and the statement's SELECT statement.

Please refer to the Column Mapping help topic for more details.

 Connection

Specifies the name of the connection that this statement belongs to.

By default, every statement is assigned to one specific connection, and will only be used when the command or data table is accessed on this same connection. Optionally, if the specified connection is marked as "default", the statement will also be used as default statement for any connections that do not have their own statement defined.

See the Cross Database Support help topic for more details on this.

 Name

Specifies an optional name of the statement, that can be used from code to manually execute a specific statement. This can be helpful if you need to define multiple statements for the same connection, and want to execute them selectively.

In most cases, the name will be ignored, and the Connection property will be used by Data Abstract to determine which statement to execute.

 NeedsParams

Returns true if the statement's SQL text contains parameter placeholders.

Please refer to the Command and Data Table Parameters help topic for more details on defining and using parameters.

 SQL

Specifies the actual SQL query for this statement.

 StatementCollection

References the collection that this statement belongs to. Usually, this will be the Statements property of the TDASQLCommand or TDADataset that this statement belongs to.

 StatementType

Specifies the type of statement represented by this statement.

 TargetTable

Specifies the name of the physical table in the database that this statement represents.

This value is required for data table statements only, and will be used as the table name for auto-generated insert/update/delete/refresh queries generated by the business processor.

Usually, this will be the name of the table in the FROM clause of your statements' SQL.


Legend

Property

read only


See Also

TDASQLCommand.Datasets property

TDASQLCommand and TDADataset classes

Schema Modeler, Data Tables Pane and Cross Database Support help topics


TDAStatement.ColumnMappings Property

TDAStatement Class	TDAStatement Class	See Also

Maintains the list of column mappings for this statement.

Column mappings are used to map the fields defined in the data table to the actual physical fields in the database and the statement's SELECT statement.

Please refer to the Column Mapping help topic for more details.

See Also

TDAColumnMapping class

Column Mapping help topic

Pascal

property ColumnMappings: TDAColumnMappingCollection;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

TDAColumnMapping class

Column Mapping help topic


TDAStatement.Connection Property

TDAStatement Class	TDAStatement Class	See Also

Specifies the name of the connection that this statement belongs to.

By default, every statement is assigned to one specific connection, and will only be used when the command or data table is accessed on this same connection. Optionally, if the specified connection is marked as "default", the statement will also be used as default statement for any connections that do not have their own statement defined.

See the Cross Database Support help topic for more details on this.

See Also

TDAConnection .Default property

Cross Database Support help topic

Pascal

property Connection: string;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

TDAConnection .Default property

Cross Database Support help topic


TDAStatement.Name Property

TDAStatement Class	TDAStatement Class	See Also

Specifies an optional name of the statement, that can be used from code to manually execute a specific statement. This can be helpful if you need to define multiple statements for the same connection, and want to execute them selectively.

In most cases, the name will be ignored, and the Connection property will be used by Data Abstract to determine which statement to execute.

See Also

Connection property

Pascal

property Name: string;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

Connection property


TDAStatement.NeedsParams Property

TDAStatement Class	TDAStatement Class	See Also

Returns true if the statement's SQL text contains parameter placeholders.

Please refer to the Command and Data Table Parameters help topic for more details on defining and using parameters.

See Also

SQL property

Command and Data Table Parameters help topic

Pascal

property NeedsParams: boolean;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

SQL property

Command and Data Table Parameters help topic


TDAStatement.SQL Property

TDAStatement Class	TDAStatement Class	See Also

Specifies the actual SQL query for this statement.

See Also

Schema Modeler and SQL Editor help topics

Pascal

property SQL: string;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

Schema Modeler and SQL Editor help topics


TDAStatement.StatementCollection Property

TDAStatement Class	TDAStatement Class	See Also

References the collection that this statement belongs to. Usually, this will be the Statements property of the TDASQLCommand or TDADataset that this statement belongs to.

See Also

TDASchema.Commands property

Pascal

property StatementCollection: TDAStatementCollection;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

TDASchema.Commands property


TDAStatement.StatementType Property

TDAStatement Class	TDAStatement Class	See Also

Specifies the type of statement represented by this statement.

Value	Meaning
stSQL	The statement's SQL property contains a script of SQL code to be executed on the server. This might include any valid SQL statements.
stStoredProcedure	The statement's SQL property contains the name of a stored procedure to be executed.

Note that a statement of type stSQL might still represent a stored procedure, if, for example, it contains an SQL "EXEC" command that executes the stored procedure. The value of this StatementType simply indicates how to interpret the value of the SQL property.

See Also

SQL property

TDASQLStatementType enum

Pascal

property StatementType: TDASQLStatementType;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

SQL property

TDASQLStatementType enum


TDAStatement.TargetTable Property

TDAStatement Class	TDAStatement Class	See Also

Specifies the name of the physical table in the database that this statement represents.

This value is required for data table statements only, and will be used as the table name for auto-generated insert/update/delete/refresh queries generated by the business processor.

Usually, this will be the name of the table in the FROM clause of your statements' SQL.

See Also

SQL property

TDABusinessProcessor class

TDAColumnMapping.SQLOrigin and TableField properties

Pascal

property TargetTable: string;

Links

TDAStatement Class, TDAStatement Class, See Also


See Also

SQL property

TDABusinessProcessor class

TDAColumnMapping.SQLOrigin and TableField properties


TDataAbstractService Class

Events	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

TDataAbstractService is the base class for the new v4.0-style Data Abstract servers.

You will generally use it as the base for implementing your data services with Data Abstract, either by using the service provided by the New Project templates or by defining your own services descending from DataAbstracctService in your server's RODL.

TDataAbstractService implements all the necessary logic for providing data access and publishing data to the clients, so your service will be ready after just dropping a few components (which will already be provided by the new project templates) and fine-tuning a couple of properties - no manual code will be required.

A large number of events are provided, allowing you to hook into all aspects of the data access to provide additional logic, validation, logging or other processing.

Essential Properties

ServiceSchema references the TDASchema that will be published by this service

ServiceDataStreamer references the data streamer that will be used to stream data to and from the network

ConnectionName specifies the name of the connection (if more then one are defined) that this service will use to connect to the back-end database

See Also

TDARemoteService class

The New v4.0 Service Interface and New Project Templates help topics

Pascal

TDataAbstractService = class(TRORemoteDataModule, IDataAbstractService);

Class Hierarchy

File

DataAbstractService_Impl

Links

Events, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDataAbstractService Class Properties

TDataAbstractService Class	Legend

Properties

 AcquireConnection

Specifies whether the service can automatically acquire a connection when needed (true, default) or not (false).

 AllowDataAccess

Specifies if the service allows clients to access schema information from the published schema (true, default) or not(false).

Use Case

Set this property to false if you want to prevent clients from accessing the data published by the ServiceSchema. This might be done on a per-client basis depending on user rights by setting the property on the OnActivate event.

 AllowExecuteCommands

Specifies if the service allows clients to execute commands published schema (true) or not (false, default).

 AllowExecuteSQL

Specifies if the service allows clients to execute custom SQL, as command or for retrieving data published schema (true) or not (false, default).

Since enabling this option opens a huge security risk, AllowExecuteSQL is set to false by default. If enabled, client applications can send custom SQL text to the server for execution, including code that could potentially harm or destroy the database.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

 AllowSchemaAccess

Specifies if the service allows clients to access data from the published schema (true, default) or not (false).

Use Case

While access to schema information from the server is often helpful while designing the client application, most clients do not need to refresh schema information from the server at runtime.

Although proper use of user authentication will restrict access, disabling this option for production servers prevents unnecessarily exposing the servers schema to the outside world.

 AllowWhereSQL

Specifies if the service allows clients to transmit custom WHERE clauses as part of fetching data (true) or not (false, default).

Since WHERE clauses are plain text base SQL, enabling this option opens a huge security risk, as malicious clients could use SQL injection to perform unexpected database operations as part of the submitted WHERE clause.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

Please also refer to the Where Clauses help topic for... more

 AutoCreateBusinessProcessors

Specifies if the service will automatically instantiate TDABusinessProcessors to process deltas, if needed.

If set to true (default) the service will use the TDABusinessProcessors dropped on the service to perform updates if present, but will automatically create new Business Processors if none is configured for a particular data table.

If set to false, the server will only process deltas for tables that explicitly have a business processor configured for them; if none is configured, the delta will be rejected with an exception.

 Connection

Returns a live connection to the back-end database based on the configured ConnectionName value. If a connection was previously requested, the same instance will be returned, if not a fresh connection to the database will be obtained from the connection manager.

Once a connection was acquired, it will be held on until the service gets deactivated, or ReleaseConnection is called.

 ConnectionName

Specifies the name of the connection that this service will use to connect to the back-end database.

If set, all data access done by the service will use the specified connection; if not set, the default connection as defined in connection manager will be used.

 ExportedDataTables

Maintains a list of server-side TDADataTables that will be published by the server, alongside the data tables defined in the schema.

 ProcessDeltasWithoutUpdateRules

Specifies whether the service will process deltas for which no update rules have been defined (true) or not false).

If set to true (the default), the service will process all delta packets it receives. If set to false, it will only process those deltas for which an update rule has been defined.

Please refer to the Update Rules help topic for more details on this update rules.

 ServiceDataStreamer

References the TDADataStreamer that will be used to stream data to and from the network.

The data streamer determines the format that will be used to send data on the wire, do the type selected on the service must match the type selected for the TDARemoteDataAdapter.DataStreamer property on the client.

 ServiceSchema

References the TDASchema component defining the schema that will be published by this service.

This can be a schema component located on the service data module or (more typically) on a separate global data module in the server application.

Data Abstract uses a 1:1 mapping of services and schemas, where every service publishes one schema. Depending on your application design and the scope of your server, you might use only one schema for the entire data access, or logically partition your data tables across different schemas (and services).

Locating the schema on a global data module rather then the service module... more


Legend

Property


TDataAbstractService Class Events

TDataAbstractService Class	Legend

Events

 AfterAcquireConnection

Fires right after a new connection is acquired through the Connection property.

 AfterExecuteCommand

Fires right after a command was executed.

 AfterGetDatasetData

Fires right after data for a dataset (data table) was retrieved.

 AfterGetDatasetSchema

Fires right after schema info for a dataset (data table) was retrieved.

 AfterProcessDeltas

Fires right after deltas for a data table have been processed.

 AfterReleaseConnection

Fires right after a connection is released.

 BeforeAcquireConnection

Fires just before a new connection is acquired through the Connection property.

 BeforeExecuteCommand

Fires just before a command will be executed.

 BeforeGetDatasetData

Fires just before data for a dataset (data table) is retrieved.

 BeforeGetDatasetSchema

Fires just before schema info for a dataset (data table) is retrieved.

 BeforeProcessDeltas

Fires just before deltas for a data table will be processed.

 BeforeReleaseConnection

Fires just before a the connection is released.

 OnAcquireConnectionFailure

Fired when acquiring a connection failed.

 OnBusinessProcessorAutoCreated

Fires whenever a new TDABusinessProcessor was auto-created to process deltas.

You can use this event to perform additional configuration on the business processor before it will be used.

 OnGetSchemaAsXMLEvent

Fires whenever a client retrieves the ServiceSchema.

You can use this event to manually adjust or filter the Schema XML before it will be returned to the client.

 OnProcessDeltasError

Fired if an error occurred while processing deltas.

Among other things, you can use this event to determine whether processing of the remaining delta changes should continue, or if all changes should be rejected.

 OnUpdateDataBeginTransaction

Fires when a transaction will be started for processing a new set of deltas.

You can handle this event to determine if the transaction should be started (default) or not.

 OnUpdateDataCommitTransaction

Fires when a transaction used for processing deltas will be committed.

You can handle this event to determine if the transaction should be committed (default) or not.

 OnUpdateDataRollBackTransaction

Fires when a transaction used for processing deltas will be rolled back due to errors.

You can handle this event to determine if the transaction should be rolled back (default) or not.

 ValidateCommandExecution

Fires before a command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.

 ValidateDatasetAccess

Fires before a data access happens to retrieve data tables.

You can use this event handler to do validation, for example to check of the current user is allowed to access the data table(s) in question, and raise an exception if the data access should be aborted.

 ValidateDirectSQLAccess

Fires before a SQL command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.


Legend

Event


TDataAbstractService Class Methods

TDataAbstractService Class	Legend

Methods

 ReleaseConnection

Releases any connection currently acquired in the Connection property..


Legend

Method


Legend

TDataAbstractService Class

Legend

Property

Event

Method


TDataAbstractService Class Members

TDataAbstractService Class	Legend

Members

Properties

 AcquireConnection

Specifies whether the service can automatically acquire a connection when needed (true, default) or not (false).

 AllowDataAccess

Specifies if the service allows clients to access schema information from the published schema (true, default) or not(false).

Use Case

Set this property to false if you want to prevent clients from accessing the data published by the ServiceSchema. This might be done on a per-client basis depending on user rights by setting the property on the OnActivate event.

 AllowExecuteCommands

Specifies if the service allows clients to execute commands published schema (true) or not (false, default).

 AllowExecuteSQL

Specifies if the service allows clients to execute custom SQL, as command or for retrieving data published schema (true) or not (false, default).

Since enabling this option opens a huge security risk, AllowExecuteSQL is set to false by default. If enabled, client applications can send custom SQL text to the server for execution, including code that could potentially harm or destroy the database.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

 AllowSchemaAccess

Specifies if the service allows clients to access data from the published schema (true, default) or not (false).

Use Case

While access to schema information from the server is often helpful while designing the client application, most clients do not need to refresh schema information from the server at runtime.

Although proper use of user authentication will restrict access, disabling this option for production servers prevents unnecessarily exposing the servers schema to the outside world.

 AllowWhereSQL

Specifies if the service allows clients to transmit custom WHERE clauses as part of fetching data (true) or not (false, default).

Since WHERE clauses are plain text base SQL, enabling this option opens a huge security risk, as malicious clients could use SQL injection to perform unexpected database operations as part of the submitted WHERE clause.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

Please also refer to the Where Clauses help topic for... more

 AutoCreateBusinessProcessors

Specifies if the service will automatically instantiate TDABusinessProcessors to process deltas, if needed.

If set to true (default) the service will use the TDABusinessProcessors dropped on the service to perform updates if present, but will automatically create new Business Processors if none is configured for a particular data table.

If set to false, the server will only process deltas for tables that explicitly have a business processor configured for them; if none is configured, the delta will be rejected with an exception.

 Connection

Returns a live connection to the back-end database based on the configured ConnectionName value. If a connection was previously requested, the same instance will be returned, if not a fresh connection to the database will be obtained from the connection manager.

Once a connection was acquired, it will be held on until the service gets deactivated, or ReleaseConnection is called.

 ConnectionName

Specifies the name of the connection that this service will use to connect to the back-end database.

If set, all data access done by the service will use the specified connection; if not set, the default connection as defined in connection manager will be used.

 ExportedDataTables

Maintains a list of server-side TDADataTables that will be published by the server, alongside the data tables defined in the schema.

 ProcessDeltasWithoutUpdateRules

Specifies whether the service will process deltas for which no update rules have been defined (true) or not false).

If set to true (the default), the service will process all delta packets it receives. If set to false, it will only process those deltas for which an update rule has been defined.

Please refer to the Update Rules help topic for more details on this update rules.

 ServiceDataStreamer

References the TDADataStreamer that will be used to stream data to and from the network.

The data streamer determines the format that will be used to send data on the wire, do the type selected on the service must match the type selected for the TDARemoteDataAdapter.DataStreamer property on the client.

 ServiceSchema

References the TDASchema component defining the schema that will be published by this service.

This can be a schema component located on the service data module or (more typically) on a separate global data module in the server application.

Data Abstract uses a 1:1 mapping of services and schemas, where every service publishes one schema. Depending on your application design and the scope of your server, you might use only one schema for the entire data access, or logically partition your data tables across different schemas (and services).

Locating the schema on a global data module rather then the service module... more

Events

 AfterAcquireConnection

Fires right after a new connection is acquired through the Connection property.

 AfterExecuteCommand

Fires right after a command was executed.

 AfterGetDatasetData

Fires right after data for a dataset (data table) was retrieved.

 AfterGetDatasetSchema

Fires right after schema info for a dataset (data table) was retrieved.

 AfterProcessDeltas

Fires right after deltas for a data table have been processed.

 AfterReleaseConnection

Fires right after a connection is released.

 BeforeAcquireConnection

Fires just before a new connection is acquired through the Connection property.

 BeforeExecuteCommand

Fires just before a command will be executed.

 BeforeGetDatasetData

Fires just before data for a dataset (data table) is retrieved.

 BeforeGetDatasetSchema

Fires just before schema info for a dataset (data table) is retrieved.

 BeforeProcessDeltas

Fires just before deltas for a data table will be processed.

 BeforeReleaseConnection

Fires just before a the connection is released.

 OnAcquireConnectionFailure

Fired when acquiring a connection failed.

 OnBusinessProcessorAutoCreated

Fires whenever a new TDABusinessProcessor was auto-created to process deltas.

You can use this event to perform additional configuration on the business processor before it will be used.

 OnGetSchemaAsXMLEvent

Fires whenever a client retrieves the ServiceSchema.

You can use this event to manually adjust or filter the Schema XML before it will be returned to the client.

 OnProcessDeltasError

Fired if an error occurred while processing deltas.

Among other things, you can use this event to determine whether processing of the remaining delta changes should continue, or if all changes should be rejected.

 OnUpdateDataBeginTransaction

Fires when a transaction will be started for processing a new set of deltas.

You can handle this event to determine if the transaction should be started (default) or not.

 OnUpdateDataCommitTransaction

Fires when a transaction used for processing deltas will be committed.

You can handle this event to determine if the transaction should be committed (default) or not.

 OnUpdateDataRollBackTransaction

Fires when a transaction used for processing deltas will be rolled back due to errors.

You can handle this event to determine if the transaction should be rolled back (default) or not.

 ValidateCommandExecution

Fires before a command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.

 ValidateDatasetAccess

Fires before a data access happens to retrieve data tables.

You can use this event handler to do validation, for example to check of the current user is allowed to access the data table(s) in question, and raise an exception if the data access should be aborted.

 ValidateDirectSQLAccess

Fires before a SQL command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.

Methods

 ReleaseConnection

Releases any connection currently acquired in the Connection property..


Legend

Property

Event

Method


See Also

TDARemoteService class

The New v4.0 Service Interface and New Project Templates help topics


TDataAbstractService.AcquireConnection Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies whether the service can automatically acquire a connection when needed (true, default) or not (false).

See Also

Connection and ConnectionName proeprties

BeforeAcquireConnection and AfterAcquireConnection events

Pascal

property AcquireConnection: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

Connection and ConnectionName proeprties

BeforeAcquireConnection and AfterAcquireConnection events


TDataAbstractService.AfterAcquireConnection Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after a new connection is acquired through the Connection property.

Use Case

Use this event to make perform initializations on the new connection, such as opening a transaction, or setting connection options.

See Also

BeforeAcquireConnection, AfterReleaseConnection and OnAcquireConnectionFailure events

Connection property

Pascal

property AfterAcquireConnection: TDAConnectionAcquiredEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeAcquireConnection, AfterReleaseConnection and OnAcquireConnectionFailure events

Connection property


TDataAbstractService.AfterExecuteCommand Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after a command was executed.

See Also

BeforeExecuteCommand event

AllowExecuteCommand property

Pascal

property AfterExecuteCommand: TDAAfterExecuteCommandEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeExecuteCommand event

AllowExecuteCommand property


TDataAbstractService.AfterGetDatasetData Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after data for a dataset (data table) was retrieved.

See Also

BeforeGetDatasetData event

Pascal

property AfterGetDatasetData: TDAGetDatasetDataEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeGetDatasetData event


TDataAbstractService.AfterGetDatasetSchema Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after schema info for a dataset (data table) was retrieved.

See Also

BeforeGetDatasetSchema and OnGetSchemaAsXMLEvent events

AllowSchemaAccess property

Pascal

property AfterGetDatasetSchema: TDAGetDatasetSchemaEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeGetDatasetSchema and OnGetSchemaAsXMLEvent events

AllowSchemaAccess property


TDataAbstractService.AfterProcessDeltas Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after deltas for a data table have been processed.

See Also

BeforeProcessDeltas event

Pascal

property AfterProcessDeltas: TDAProcessDeltasEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeProcessDeltas event


TDataAbstractService.AfterReleaseConnection Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires right after a connection is released.

See Also

BeforeReleaseConnection and AfterAcquireConnection events

ReleaseConnection method

Pascal

property AfterReleaseConnection: TDAConnectionReleasedEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeReleaseConnection and AfterAcquireConnection events

ReleaseConnection method


TDataAbstractService.AllowDataAccess Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service allows clients to access schema information from the published schema (true, default) or not(false).

Use Case

Set this property to false if you want to prevent clients from accessing the data published by the ServiceSchema. This might be done on a per-client basis depending on user rights by setting the property on the OnActivate event.

See Also

AllowExecuteCommand, AllowExecuteSQL, AllowSchemaAccess and AllowWhereSQL properties

ServiceSchema property

TRORemoteDataModule.OnActivate event

Pascal

property AllowDataAccess: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowExecuteCommand, AllowExecuteSQL, AllowSchemaAccess and AllowWhereSQL properties

ServiceSchema property

TRORemoteDataModule.OnActivate event


TDataAbstractService.AllowExecuteCommands Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service allows clients to execute commands published schema (true) or not (false, default).

Use Case

Set this property to true if you want to enable clients to manually executing the commands defined in the ServiceSchema.

See Also

AllowDataAccess, AllowExecuteSQL, AllowSchemaAccess and AllowWhereSQL properties

ServiceSchema property

Pascal

property AllowExecuteCommands: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowDataAccess, AllowExecuteSQL, AllowSchemaAccess and AllowWhereSQL properties

ServiceSchema property


TDataAbstractService.AllowExecuteSQL Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service allows clients to execute custom SQL, as command or for retrieving data published schema (true) or not (false, default).

Since enabling this option opens a huge security risk, AllowExecuteSQL is set to false by default. If enabled, client applications can send custom SQL text to the server for execution, including code that could potentially harm or destroy the database.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

See Also

AllowDataAccess, AllowExecuteCommand, AllowSchemaAccess and AllowWhereSQL properties

Pascal

property AllowExecuteSQL: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowDataAccess, AllowExecuteCommand, AllowSchemaAccess and AllowWhereSQL properties


TDataAbstractService.AllowSchemaAccess Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service allows clients to access data from the published schema (true, default) or not (false).

Use Case

While access to schema information from the server is often helpful while designing the client application, most clients do not need to refresh schema information from the server at runtime.

Although proper use of user authentication will restrict access, disabling this option for production servers prevents unnecessarily exposing the servers schema to the outside world.

See Also

AllowDataAccess, AllowExecuteCommand, AllowExecuteSQL and AllowWhereSQL properties

ServiceSchema property

Pascal

property AllowSchemaAccess: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowDataAccess, AllowExecuteCommand, AllowExecuteSQL and AllowWhereSQL properties

ServiceSchema property


TDataAbstractService.AllowWhereSQL Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service allows clients to transmit custom WHERE clauses as part of fetching data (true) or not (false, default).

Since WHERE clauses are plain text base SQL, enabling this option opens a huge security risk, as malicious clients could use SQL injection to perform unexpected database operations as part of the submitted WHERE clause.

Even when using proper user authentication and trusting the client applications, this is a high security risk, as client applications could be modified to send malicious code, or a new client could be written by attackers.

Please also refer to the Where Clauses help topic for more details.

See Also

AllowDataAccess, AllowExecuteCommand, AllowExecuteSQL and AllowSchemaAccess properties

Where Clauses help topic

Pascal

property AllowWhereSQL: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowDataAccess, AllowExecuteCommand, AllowExecuteSQL and AllowSchemaAccess properties

Where Clauses help topic


TDataAbstractService.AutoCreateBusinessProcessors Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies if the service will automatically instantiate TDABusinessProcessors to process deltas, if needed.

If set to true (default) the service will use the TDABusinessProcessors dropped on the service to perform updates if present, but will automatically create new Business Processors if none is configured for a particular data table.

If set to false, the server will only process deltas for tables that explicitly have a business processor configured for them; if none is configured, the delta will be rejected with an exception.

See Also

OnBusinessProcessorAutoCreated event

TDABusinessProcessor component

Pascal

property AutoCreateBusinessProcessors: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

OnBusinessProcessorAutoCreated event

TDABusinessProcessor component


TDataAbstractService.BeforeAcquireConnection Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before a new connection is acquired through the Connection property.

Use Case

Use this event to make last-minute configurations before the connection will be acquired, such as changing the ConnectionName.

See Also

AfterAcquireConnection, BeforeReleaseConnection and OnAcquireConnectionFailure events

Connection and ConnectionName properties

Pascal

property BeforeAcquireConnection: TDAAcquireConnectionEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterAcquireConnection, BeforeReleaseConnection and OnAcquireConnectionFailure events

Connection and ConnectionName properties


TDataAbstractService.BeforeExecuteCommand Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before a command will be executed.

See Also

AfterExecuteCommand event

AllowExecuteCommand property

Pascal

property BeforeExecuteCommand: TDABeforeExecuteCommandEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterExecuteCommand event

AllowExecuteCommand property


TDataAbstractService.BeforeGetDatasetData Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before data for a dataset (data table) is retrieved.

See Also

AfterGetDatasetData event

Pascal

property BeforeGetDatasetData: TDAGetDatasetDataEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterGetDatasetData event


TDataAbstractService.BeforeGetDatasetSchema Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before schema info for a dataset (data table) is retrieved.

See Also

AfterGetDatasetSchema and OnGetSchemaAsXMLEvent events

AllowSchemaAccess property

Pascal

property BeforeGetDatasetSchema: TDAGetDatasetSchemaEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterGetDatasetSchema and OnGetSchemaAsXMLEvent events

AllowSchemaAccess property


TDataAbstractService.BeforeProcessDeltas Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before deltas for a data table will be processed.

See Also

AfterProcessDeltas event

Pascal

property BeforeProcessDeltas: TDAProcessDeltasEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterProcessDeltas event


TDataAbstractService.BeforeReleaseConnection Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires just before a the connection is released.

Use Case

Use this event to perform any finalization tasks on the new connection, such as closing a transaction, or setting connection options.

See Also

AfterReleaseConnection and BeforeAcquireConnection events

Connection property

ReleaseConnection method

Pascal

property BeforeReleaseConnection: TDAConnectionAcquiredEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AfterReleaseConnection and BeforeAcquireConnection events

Connection property

ReleaseConnection method


TDataAbstractService.Connection Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Returns a live connection to the back-end database based on the configured ConnectionName value. If a connection was previously requested, the same instance will be returned, if not a fresh connection to the database will be obtained from the connection manager.

Once a connection was acquired, it will be held on until the service gets deactivated, or ReleaseConnection is called.

See Also

TDAConnectionManager

AcquireConnection property

ReleaseConnection method

BeforeAcquireConnection event

TRORemoteDataModule.OnDeactivate event

Pascal

property Connection: IDAConnection;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

TDAConnectionManager

AcquireConnection property

ReleaseConnection method

BeforeAcquireConnection event

TRORemoteDataModule.OnDeactivate event


TDataAbstractService.ConnectionName Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies the name of the connection that this service will use to connect to the back-end database.

If set, all data access done by the service will use the specified connection; if not set, the default connection as defined in connection manager will be used.

Use Case

A typical use case for this property would be to set the connection name in the OnActivate or BeforeAcquireConnection event to match a specific connection - which for example could have been stored in the Session. The default code provided by the MultiDb Server template uses this approach.

When setting ConnectionName and a connection is already acquired, make sure to call the ReleaseConnection method so that a new connection will be obtained when needed.

See Also

TDAConnectionManager

BeforeAcquireConnection event

TRORemoteDataModule.OnActivate event

ReleaseConnection method

New Project Templates help topic

Pascal

property ConnectionName: string;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

TDAConnectionManager

BeforeAcquireConnection event

TRORemoteDataModule.OnActivate event

ReleaseConnection method

New Project Templates help topic


TDataAbstractService.ExportedDataTables Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Maintains a list of server-side TDADataTables that will be published by the server, alongside the data tables defined in the schema.

Use Case

This allows the service to publish data that does not necessarily come from the back-end database targeted by the schema and connection, but can come from other sources. For example, the TDADataTables could be filled from a different database, loaded from a file on disk, or manually filled from code.

For the client application, these tables will look like any other data table published by the server.

See Also

TDADataTable class

ServiceSchema property

Pascal

property ExportedDataTables: TDADataTableReferenceCollection;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

TDADataTable class

ServiceSchema property


TDataAbstractService.OnAcquireConnectionFailure Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fired when acquiring a connection failed.

See Also

BeforeAcquireConnection and AfterAcquireConnection events

AcquireConnection, Connection and ConnectionName properties

Pascal

property OnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

BeforeAcquireConnection and AfterAcquireConnection events

AcquireConnection, Connection and ConnectionName properties


TDataAbstractService.OnBusinessProcessorAutoCreated Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires whenever a new TDABusinessProcessor was auto-created to process deltas.

You can use this event to perform additional configuration on the business processor before it will be used.

See Also

AutoCreateBusinessProcessors property

TDABusinessProcessor component

Pascal

property OnBusinessProcessorAutoCreated: TDABusinessProcessorAutoCreatedEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AutoCreateBusinessProcessors property

TDABusinessProcessor component


TDataAbstractService.OnGetSchemaAsXMLEvent Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires whenever a client retrieves the ServiceSchema.

You can use this event to manually adjust or filter the Schema XML before it will be returned to the client.

See Also

AllowSchemaAccess property

Pascal

property OnGetSchemaAsXMLEvent: TDAGetSchemaAsXMLEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

AllowSchemaAccess property


TDataAbstractService.OnProcessDeltasError Event

TDataAbstractService Class	TDataAbstractService Class

Fired if an error occurred while processing deltas.

Among other things, you can use this event to determine whether processing of the remaining delta changes should continue, or if all changes should be rejected.

Pascal

property OnProcessDeltasError: TDAProcessDeltasErrorEvent;

Links

TDataAbstractService Class, TDataAbstractService Class


TDataAbstractService.OnUpdateDataBeginTransaction Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires when a transaction will be started for processing a new set of deltas.

You can handle this event to determine if the transaction should be started (default) or not.

See Also

OnUpdateDataCommitTransaction and OnUpdateDataRollbackTransaction events

Pascal

property OnUpdateDataBeginTransaction: TDAUpdateDataTransactionEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

OnUpdateDataCommitTransaction and OnUpdateDataRollbackTransaction events


TDataAbstractService.OnUpdateDataCommitTransaction Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires when a transaction used for processing deltas will be committed.

You can handle this event to determine if the transaction should be committed (default) or not.

See Also

OnUpdateDataBeginTransaction and OnUpdateDataRollbackTransaction events

Pascal

property OnUpdateDataCommitTransaction: TDAUpdateDataTransactionEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

OnUpdateDataBeginTransaction and OnUpdateDataRollbackTransaction events


TDataAbstractService.OnUpdateDataRollBackTransaction Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires when a transaction used for processing deltas will be rolled back due to errors.

You can handle this event to determine if the transaction should be rolled back (default) or not.

See Also

OnUpdateDataBeginTransaction and OnUpdateDataCommitTransaction events

Pascal

property OnUpdateDataRollBackTransaction: TDAUpdateDataTransactionEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

OnUpdateDataBeginTransaction and OnUpdateDataCommitTransaction events


TDataAbstractService.ProcessDeltasWithoutUpdateRules Property

TDataAbstractService Class	TDataAbstractService Class	See Also

Specifies whether the service will process deltas for which no update rules have been defined (true) or not false).

If set to true (the default), the service will process all delta packets it receives. If set to false, it will only process those deltas for which an update rule has been defined.

Please refer to the Update Rules help topic for more details on this update rules.

See Also

Update Rules help topic

Schema Modeler and Update Rules View help topics

Pascal

property ProcessDeltasWithoutUpdateRules: boolean;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

Update Rules help topic

Schema Modeler and Update Rules View help topics


TDataAbstractService.ServiceDataStreamer Property

TDataAbstractService Class	TDataAbstractService Class	See Also

References the TDADataStreamer that will be used to stream data to and from the network.

The data streamer determines the format that will be used to send data on the wire, do the type selected on the service must match the type selected for the TDARemoteDataAdapter.DataStreamer property on the client.

Notes

Note that data streamers are not re-entrant, so every service instance must use its own data streamer instance. The best way to achieve this is to make sure the data streamer component is dropped into the service module itself, and not referenced from elsewhere.

Also note that the data streamer assigned to the ServiceDataStreamer should be reserved for use by the service only. If you do any custom processing requiring a data streamer in your own code (such as filling server-side TDADataTables), make sure to use a second streamer instance for this, to avoid conflicts.

See Also

TDADataStreamer class

TDARemoteDataAdapter.DataStreamer property

Pascal

property ServiceDataStreamer: TDADataStreamer;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

TDADataStreamer class

TDARemoteDataAdapter.DataStreamer property


TDataAbstractService.ServiceSchema Property

TDataAbstractService Class	TDataAbstractService Class	See Also

References the TDASchema component defining the schema that will be published by this service.

This can be a schema component located on the service data module or (more typically) on a separate global data module in the server application.

Data Abstract uses a 1:1 mapping of services and schemas, where every service publishes one schema. Depending on your application design and the scope of your server, you might use only one schema for the entire data access, or logically partition your data tables across different schemas (and services).

Locating the schema on a global data module rather then the service module itself might provide a slight performance benefit, as the schema structure only has to be loaded into memory once (on application startup), not every time a new service instance is created.

Notes

Note also that the TDAConnectionManager (referenced from the schema) must be located off the service module and in a global location for connection pooling to work properly across service instances.

See Also

TDASchema component

Schema Modeler help topic

Pascal

property ServiceSchema: TDASchema;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

TDASchema component

Schema Modeler help topic


TDataAbstractService.ValidateCommandExecution Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires before a command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.

See Also

ValidateDatasetAccess and ValidateDirectSQLAccess events

AllowExecuteCommands property

Pascal

property ValidateCommandExecution: TDASchemaElementAccessValidationEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

ValidateDatasetAccess and ValidateDirectSQLAccess events

AllowExecuteCommands property


TDataAbstractService.ValidateDatasetAccess Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires before a data access happens to retrieve data tables.

You can use this event handler to do validation, for example to check of the current user is allowed to access the data table(s) in question, and raise an exception if the data access should be aborted.

See Also

ValidateCommandExecution and ValidateDirectSQLAccess events

Pascal

property ValidateDatasetAccess: TDASchemaElementAccessValidationEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

ValidateCommandExecution and ValidateDirectSQLAccess events


TDataAbstractService.ValidateDirectSQLAccess Event

TDataAbstractService Class	TDataAbstractService Class	See Also

Fires before a SQL command is executed.

You can use this event handler to do validation, for example to check if the current user is allowed to execute the command in question, and raise an exception if the operation should be aborted.

See Also

ValidateCommandExecution and ValidateDatasetAccess events

AllowExecuteSQL and AllowExecuteCommands properties

Pascal

property ValidateDirectSQLAccess: TDASQLValidationEvent;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

ValidateCommandExecution and ValidateDatasetAccess events

AllowExecuteSQL and AllowExecuteCommands properties


TDataAbstractService.ReleaseConnection Method

TDataAbstractService Class	TDataAbstractService Class	See Also

Releases any connection currently acquired in the Connection property..

See Also

Connection property

Pascal

procedure ReleaseConnection;

Links

TDataAbstractService Class, TDataAbstractService Class, See Also


See Also

Connection property


TDAUpdateDataRequest Class

Data Abstract Reference	Legend	Members	Properties	See Also

Configures the server request that will be executed by the TDARemoteDataAdapter to apply updates to the server.

Essential Properties

MethodName specifies the name of the method to call to obtain the data

OutgoingDeltaParameter specifies the parameter that will be used to send delta to the server

IncomingDeltaParameter specifies the parameter that will contain any delta returned from the server

See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics

Pascal

TDAUpdateDataRequest = class(TDARemoteDataAdapterRequest);

Class Hierarchy

File

uDARemoteDataAdapterRequests

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAUpdateDataRequest Class Properties

TDAUpdateDataRequest Class	Legend

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAUpdateDataRequest Class

 IncomingDeltaParameter

Specifies the parameter that will contain any delta returned by the server.

The server might return a new delta packet if one or more of the changes sent to the server failed to apply, or if fields are configured as AutoInc or for ServerAutoRefresh.

This parameter must be configured for all data request calls. Depending on the used Data Streamer , this can be a Binary or String type.

 OutgoingDeltaParameter

Specifies the parameter that will contain the delta to be sent to the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual delta that should be applied on the server. Depending on the used Data Streamer , this can be a Binary or String type.


Legend

Property


Legend

TDAUpdateDataRequest Class

Legend

Property


TDAUpdateDataRequest Class Members

TDAUpdateDataRequest Class	Legend

Members

Properties

 MethodName

Specifies the name of the method to call.

 Params

Specifies the parameters to pass to and receive from the call.

TDAUpdateDataRequest Class

 IncomingDeltaParameter

Specifies the parameter that will contain any delta returned by the server.

The server might return a new delta packet if one or more of the changes sent to the server failed to apply, or if fields are configured as AutoInc or for ServerAutoRefresh.

This parameter must be configured for all data request calls. Depending on the used Data Streamer , this can be a Binary or String type.

 OutgoingDeltaParameter

Specifies the parameter that will contain the delta to be sent to the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual delta that should be applied on the server. Depending on the used Data Streamer , this can be a Binary or String type.


Legend

Property


See Also

TDARemoteDataAdapter component

Dynamic Method Binding and The New v4.0 Service Interface help topics


TDAUpdateDataRequest.IncomingDeltaParameter Property

TDAUpdateDataRequest Class	TDAUpdateDataRequest Class	See Also

Specifies the parameter that will contain any delta returned by the server.

The server might return a new delta packet if one or more of the changes sent to the server failed to apply, or if fields are configured as AutoInc or for ServerAutoRefresh.

This parameter must be configured for all data request calls. Depending on the used Data Streamer , this can be a Binary or String type.

See Also

Dynamic Method Binding, AutoIncs and Generators and Data Streamers help topics

TDADataStreamer class

TDACustomField.ServerAutoRefresh property

Pascal

property IncomingDeltaParameter: string;

Links

TDAUpdateDataRequest Class, TDAUpdateDataRequest Class, See Also


See Also

Dynamic Method Binding, AutoIncs and Generators and Data Streamers help topics

TDADataStreamer class

TDACustomField.ServerAutoRefresh property


TDAUpdateDataRequest.OutgoingDeltaParameter Property

TDAUpdateDataRequest Class	TDAUpdateDataRequest Class	See Also

Specifies the parameter that will contain the delta to be sent to the server.

This parameter must be configured for all data request calls as it will be used to obtain the actual delta that should be applied on the server. Depending on the used Data Streamer , this can be a Binary or String type.

See Also

Dynamic Method Binding and Data Streamers help topics

TDADataStreamer class

Pascal

property OutgoingDeltaParameter: string;

Links

TDAUpdateDataRequest Class, TDAUpdateDataRequest Class, See Also


See Also

Dynamic Method Binding and Data Streamers help topics

TDADataStreamer class


TDAUpdateRule Class

Data Abstract Reference	Legend	Members	Properties	See Also

The TDAUpdateRule class represents an individual update rule defined in a schema.

Update rules are used to define the order in which updates to particular data tables are performed, for example to ensure that detail data is inserted after, but deleted before changes to the master record. Please refer to the Update Rules help topic for more details on this topic.

You will usually not create instances of this class directly, but define update rules in Schema Modeler or access them through the UpdateRules property of the TDASchema component.

See Also

TDASchema.UpdateRules property

Schema Modeler and Update Rules View help topics

Update Rules help topic

Pascal

TDAUpdateRule = class(TCollectionItem);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAUpdateRule Class Properties

TDAUpdateRule Class	Legend

Properties

 DatasetName

Specifies the name of the dataset (or data table) that this update rule applies to.

 DoDelete

Specifies whether Deletes should be performed as part of this rule, or not.

 DoInsert

Specifies whether Inserts should be performed as part of this rule, or not.

 DoUpdate

Specifies whether Updates should be performed as part of this rule, or not.

 FailureBehavior

Specifies how Data Abstract behaves when an error is encountered while processing updates.

 Name

Specifies a human-readable name for the update rule.


Legend

Property


Legend

TDAUpdateRule Class

Legend

Property


TDAUpdateRule Class Members

TDAUpdateRule Class	Legend

Members

Properties

 DatasetName

Specifies the name of the dataset (or data table) that this update rule applies to.

 DoDelete

Specifies whether Deletes should be performed as part of this rule, or not.

 DoInsert

Specifies whether Inserts should be performed as part of this rule, or not.

 DoUpdate

Specifies whether Updates should be performed as part of this rule, or not.

 FailureBehavior

Specifies how Data Abstract behaves when an error is encountered while processing updates.

 Name

Specifies a human-readable name for the update rule.


Legend

Property


See Also

TDASchema.UpdateRules property

Schema Modeler and Update Rules View help topics

Update Rules help topic


TDAUpdateRule.DatasetName Property

TDAUpdateRule Class	TDAUpdateRule Class

Specifies the name of the dataset (or data table) that this update rule applies to.

Pascal

property DatasetName: string;

Links

TDAUpdateRule Class, TDAUpdateRule Class


TDAUpdateRule.DoDelete Property

TDAUpdateRule Class	TDAUpdateRule Class	See Also

Specifies whether Deletes should be performed as part of this rule, or not.

See Also

DoInsert and DoUpdate properties

Pascal

property DoDelete: boolean;

Links

TDAUpdateRule Class, TDAUpdateRule Class, See Also


See Also

DoInsert and DoUpdate properties


TDAUpdateRule.DoInsert Property

TDAUpdateRule Class	TDAUpdateRule Class	See Also

Specifies whether Inserts should be performed as part of this rule, or not.

See Also

DoUpdate and DoDelete properties

Pascal

property DoInsert: boolean;

Links

TDAUpdateRule Class, TDAUpdateRule Class, See Also


See Also

DoUpdate and DoDelete properties


TDAUpdateRule.DoUpdate Property

TDAUpdateRule Class	TDAUpdateRule Class	See Also

Specifies whether Updates should be performed as part of this rule, or not.

See Also

DoInsert and DoDelete properties

Pascal

property DoUpdate: boolean;

Links

TDAUpdateRule Class, TDAUpdateRule Class, See Also


See Also

DoInsert and DoDelete properties


TDAUpdateRule.FailureBehavior Property

TDAUpdateRule Class	TDAUpdateRule Class	See Also

Specifies how Data Abstract behaves when an error is encountered while processing updates.

Value	Meaning
fbRaiseException	An exception will be raised, and the entire update process will be aborted.
fbLogAndContinue	The error will be logged to be sent back to the client, and processing for the remaining changes will continue.
fbIgnoreAndContinue	The error will be ignored to be sent back to the client, and processing for the remaining changes will continue. The client will not be notified of the failed update.
See Also

TDAUpdateFailureBehavior enum

Pascal

property FailureBehavior: TDAUpdateFailureBehavior;

Links

TDAUpdateRule Class, TDAUpdateRule Class, See Also


See Also

TDAUpdateFailureBehavior enum


TDAUpdateRule.Name Property

TDAUpdateRule Class	TDAUpdateRule Class

Specifies a human-readable name for the update rule.

Pascal

property Name: string;

Links

TDAUpdateRule Class, TDAUpdateRule Class


TDAWhere Class

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The TDAWhere class is used to dynamically build WHERE statements.

While TDAWhere currently assembles WHERE clauses as plain-text SQL string, future versions will expand upon this to persist the clause in machine-parsable format, allowing WHERE clauses to safely be passed from client to server without danger of SQL injection attacks. Where clauses will also play a major role in LINQ support in Data Abstract 5.0.

Using TDAWhere to build your WHERE clauses now (rather then manually building SQL text) will ensure the code will be future-proof to reap these benefits once TDAWhere is expanded.

See Also

TDADataTable.Where and IDASQLCommand.Where properties

Where Clauses help topic

Pascal

TDAWhere = class;

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


TDAWhere Class Properties

TDAWhere Class	Legend

Properties

 Changed

Returns true if the WHERE clause has been changed.

This property will not reset to false automatically, but code using the TDAWhere class may set it to false externally after reacting to changes, to keep track of whether the clause changes again.

For example, the IDASQLCommand implementations will set this to false when preparing the command with the back-end database, and then use the Changed flag to determine if the command needs to be re-prepared at a later time.

 Clause

Returns the text representation of the current WHERE clause.

 ClientFields

Specifies whether the field names used when adding condition to the WHERE clause are client side field names (ie field names as defined in the data table), or server side field names (ie field names from the back-end database).

When set to true, markers will be stored in the where clause to notify the server side that field names need to be mapped over to the names in the physical database using the column mapping.

 DefaultOperator

Specifies the default operator that should be used of two conditions are subsequently added to the clause without an explicit call to AddOperator.

 Empty

Returns true if the where clause is empty, i.e. does not contain any conditions.

 OnChange

Fires whenever the where clause has changed by adding new conditions to it.


Legend

Property

read only


TDAWhere Class Methods

TDAWhere Class	Legend

Methods

 AddCondition

Adds a new condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddConditions

Adds a number of new conditions to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddOperator

Adds a new operator to the WHERE clause, to connect the previous condition with the next one.

 AddText

Adds a plain text SQL to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddValueGroup

Adds an SQL "IN" condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 Clear

Clears the WHERE clause and removes all previously added conditions.

 CloseBracket

Adds a closing bracket (parenthesis) to the WHERE clause, to close a group of conditions previously started with OpenBracket.

 OpenBracket

Adds an opening bracket (parenthesis) to the WHERE clause, to group the following conditions.


Legend

Method


Legend

TDAWhere Class

Legend

Property

read only

Method


TDAWhere Class Members

TDAWhere Class	Legend

Members

Properties

 Changed

Returns true if the WHERE clause has been changed.

This property will not reset to false automatically, but code using the TDAWhere class may set it to false externally after reacting to changes, to keep track of whether the clause changes again.

For example, the IDASQLCommand implementations will set this to false when preparing the command with the back-end database, and then use the Changed flag to determine if the command needs to be re-prepared at a later time.

 Clause

Returns the text representation of the current WHERE clause.

 ClientFields

Specifies whether the field names used when adding condition to the WHERE clause are client side field names (ie field names as defined in the data table), or server side field names (ie field names from the back-end database).

When set to true, markers will be stored in the where clause to notify the server side that field names need to be mapped over to the names in the physical database using the column mapping.

 DefaultOperator

Specifies the default operator that should be used of two conditions are subsequently added to the clause without an explicit call to AddOperator.

 Empty

Returns true if the where clause is empty, i.e. does not contain any conditions.

 OnChange

Fires whenever the where clause has changed by adding new conditions to it.

Methods

 AddCondition

Adds a new condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddConditions

Adds a number of new conditions to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddOperator

Adds a new operator to the WHERE clause, to connect the previous condition with the next one.

 AddText

Adds a plain text SQL to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 AddValueGroup

Adds an SQL "IN" condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

 Clear

Clears the WHERE clause and removes all previously added conditions.

 CloseBracket

Adds a closing bracket (parenthesis) to the WHERE clause, to close a group of conditions previously started with OpenBracket.

 OpenBracket

Adds an opening bracket (parenthesis) to the WHERE clause, to group the following conditions.


Legend

Property

read only

Method


See Also

TDADataTable.Where and IDASQLCommand.Where properties

Where Clauses help topic


TDAWhere.Changed Property

TDAWhere Class	TDAWhere Class	See Also

Returns true if the WHERE clause has been changed.

This property will not reset to false automatically, but code using the TDAWhere class may set it to false externally after reacting to changes, to keep track of whether the clause changes again.

For example, the IDASQLCommand implementations will set this to false when preparing the command with the back-end database, and then use the Changed flag to determine if the command needs to be re-prepared at a later time.

See Also

OnChange property

IDASQLCommand interface

Pascal

property Changed: Boolean;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

OnChange property

IDASQLCommand interface


TDAWhere.Clause Property

TDAWhere Class	TDAWhere Class

Returns the text representation of the current WHERE clause.

Pascal

property Clause: string;

Links

TDAWhere Class, TDAWhere Class


TDAWhere.ClientFields Property

TDAWhere Class	TDAWhere Class	See Also

Specifies whether the field names used when adding condition to the WHERE clause are client side field names (ie field names as defined in the data table), or server side field names (ie field names from the back-end database).

When set to true, markers will be stored in the where clause to notify the server side that field names need to be mapped over to the names in the physical database using the column mapping.

See Also

Column Mapping help topic

Pascal

property ClientFields: boolean;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

Column Mapping help topic


TDAWhere.DefaultOperator Property

TDAWhere Class	TDAWhere Class	See Also

Specifies the default operator that should be used of two conditions are subsequently added to the clause without an explicit call to AddOperator.

See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator, AddText, AddValueGroup and AddOperator methods

Pascal

property DefaultOperator: TDADefaultOperator;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator, AddText, AddValueGroup and AddOperator methods


TDAWhere.Empty Property

TDAWhere Class	TDAWhere Class	See Also

Returns true if the where clause is empty, i.e. does not contain any conditions.

See Also

Clear method

Pascal

property Empty: boolean;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

Clear method


TDAWhere.OnChange Property

TDAWhere Class	TDAWhere Class	See Also

Fires whenever the where clause has changed by adding new conditions to it.

See Also

Changed property

Pascal

property OnChange: TNotifyEvent;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

Changed property


TDAWhere.AddCondition Method

TDAWhere Class	TDAWhere Class	See Also

Adds a new condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

See Also

DefaultOperator property

AddConditions, AddOperator, AddText and AddValueGroup methods

Pascal

function AddCondition(const FieldName: string; Condition: TDASQLCondition; const Value: Variant; SkipIfEmptyValue: boolean = TRUE): boolean; overload;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddConditions, AddOperator, AddText and AddValueGroup methods


TDAWhere.AddConditions Method

TDAWhere Class	TDAWhere Class	See Also

Adds a number of new conditions to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

See Also

DefaultOperator property

AddCondition, AddOperator, AddText and AddValueGroup methods

Pascal

function AddConditions(const FieldNames: array of string; const Conditions: array of TDASQLCondition; const Values: array of Variant; const Operator: TDASQLOperator): integer;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddCondition, AddOperator, AddText and AddValueGroup methods


TDAWhere.AddOperator Method

TDAWhere Class	TDAWhere Class	See Also

Adds a new operator to the WHERE clause, to connect the previous condition with the next one.

See Also

DefaultOperator property

AddCondition, AddConditions, AddText and AddValueGroup methods

Pascal

procedure AddOperator(aOperator: TDASQLOperator);

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddCondition, AddConditions, AddText and AddValueGroup methods


TDAWhere.AddText Method

TDAWhere Class	TDAWhere Class	See Also

Adds a plain text SQL to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator and AddValueGroup methods

Pascal

procedure AddText(const someText: string; MapClientFields: boolean = TRUE);

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator and AddValueGroup methods


TDAWhere.AddValueGroup Method

TDAWhere Class	TDAWhere Class	See Also

Adds an SQL "IN" condition to the WHERE clause.

If no Operator was added previously, the new condition will be connected to the existing clause (if any) using the DefaultOperator.

See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator and AddText methods

Pascal

procedure AddValueGroup(const FieldName: string; const Values: array of Variant);

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

DefaultOperator property

AddCondition, AddConditions, AddOperator and AddText methods


TDAWhere.Clear Method

TDAWhere Class	TDAWhere Class	See Also

Clears the WHERE clause and removes all previously added conditions.

See Also

Empty property

Pascal

procedure Clear;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

Empty property


TDAWhere.CloseBracket Method

TDAWhere Class	TDAWhere Class	See Also

Adds a closing bracket (parenthesis) to the WHERE clause, to close a group of conditions previously started with OpenBracket.

See Also

OpenBracket method

Pascal

procedure CloseBracket;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

OpenBracket method


TDAWhere.OpenBracket Method

TDAWhere Class	TDAWhere Class	See Also

Adds an opening bracket (parenthesis) to the WHERE clause, to group the following conditions.

See Also

CloseBracket method

Pascal

procedure OpenBracket;

Links

TDAWhere Class, TDAWhere Class, See Also


See Also

CloseBracket method


TDAXmlDataStreamer Class

Data Abstract Reference	Legend	Members	Properties	See Also

TDAXmlDataStreamer implements a data streamer that uses an easily parsable XML format for streaming data across the network.

While slower and less efficient than the TDABinDataStreamer, the XML Streamer is helpful in scenarios where non-Data Abstract clients need to access data from a Data Abstract server (or vice versa), as the nature of XML allows the data to easily be parsed on different platforms, or converted to different data layouts using XSLT.

Essential Properties

None, TDAXmlDataStreamer is usable after being dropped and hooked up.

See Also

TDADataStreamer and TDABinDataStreamer classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties

Pascal

TDAXmlDataStreamer = class(TDADataStreamer);

Class Hierarchy

File

uDAXMLAdapter

Links

Data Abstract Reference, Legend, Members, Properties, See Also


TDAXmlDataStreamer Class Properties

TDAXmlDataStreamer Class	Legend

Properties

TDAXmlDataStreamer Class

 DocumentName

Specifies the name of the XML root node to be used for the streamed data ('XMLData' by default).

 Options

Specifies general options for streaming. Available options are:

 ReadXSLT

Specifies an XSLT script will be used to process received data before it is being read. This allows for XML data in incompatible formats to be processed, by providing an XSLT that converts this data to the proper structure.

 RowOptions

Specifies options to influence the steaming of data rows. Available options are:

 SchemaOptions

Specifies options to influence the steaming of schema info. Available options are:

 SkipNull

Specifies whether null values should be skipped when streaming data as XML (true, the default), or not.

If set to true, no XML node will be written to represent fields with null values; if set to false, a node with an empty value will be written.

 WriteXSLT

Specifies an XSLT script will be used to process written data before it is being sent across the network. This allows for XML data to be sent out in non-Data Abstract formats, by providing an XSLT that performs the necessary conversion before sending the data.


Legend

Property


Legend

TDAXmlDataStreamer Class

Legend

Property


TDAXmlDataStreamer Class Members

TDAXmlDataStreamer Class	Legend

Members

Properties

TDAXmlDataStreamer Class

 DocumentName

Specifies the name of the XML root node to be used for the streamed data ('XMLData' by default).

 Options

Specifies general options for streaming. Available options are:

 ReadXSLT

Specifies an XSLT script will be used to process received data before it is being read. This allows for XML data in incompatible formats to be processed, by providing an XSLT that converts this data to the proper structure.

 RowOptions

Specifies options to influence the steaming of data rows. Available options are:

 SchemaOptions

Specifies options to influence the steaming of schema info. Available options are:

 SkipNull

Specifies whether null values should be skipped when streaming data as XML (true, the default), or not.

If set to true, no XML node will be written to represent fields with null values; if set to false, a node with an empty value will be written.

 WriteXSLT

Specifies an XSLT script will be used to process written data before it is being sent across the network. This allows for XML data to be sent out in non-Data Abstract formats, by providing an XSLT that performs the necessary conversion before sending the data.


Legend

Property


See Also

TDADataStreamer and TDABinDataStreamer classes

TDARemoteDataAdapter.DataStreamer and TDataAbstractService.ServiceDataStreamer properties


TDAXmlDataStreamer.DocumentName Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class

Specifies the name of the XML root node to be used for the streamed data ('XMLData' by default).

Pascal

property DocumentName: string;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class


TDAXmlDataStreamer.Options Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class	See Also

Specifies general options for streaming. Available options are:

Value	Meaning
xaoUseDatasetXSLTs	When present, XSLT Transformations will be applied data packets.
xaoUseDeltaXSLTs	When present, XSLT Transformations will be applied delta packets.
See Also

ReadXSLT and WriteXSLT properties

TDAXmlDataStreamerOption enum

Pascal

property Options: TDAXmlDataStreamerOptions;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class, See Also


See Also

ReadXSLT and WriteXSLT properties

TDAXmlDataStreamerOption enum


TDAXmlDataStreamer.ReadXSLT Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class	See Also

Specifies an XSLT script will be used to process received data before it is being read. This allows for XML data in incompatible formats to be processed, by providing an XSLT that converts this data to the proper structure.

See Also

WriteXSLT property

Pascal

property ReadXSLT: IXMLDocument;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class, See Also


See Also

WriteXSLT property


TDAXmlDataStreamer.RowOptions Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class	See Also

Specifies options to influence the steaming of data rows. Available options are:

Value	Meaning
roCompressBlobs	When present, Blob values will be compressed using ZLib before being streamed into the XML.
See Also

TDAXMLRowOption enum

Pascal

property RowOptions: TDAXMLRowOptions;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class, See Also


See Also

TDAXMLRowOption enum


TDAXmlDataStreamer.SchemaOptions Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class	See Also

Specifies options to influence the steaming of schema info. Available options are:

Value	Meaning
soIncludeEmptyAttributes	When present, schema properties with empty values will be streamed as attributes with an empty value; else they will be omitted from the XML altogether.
See Also

TDAXMLSchemaOption enum

Pascal

property SchemaOptions: TDAXMLSchemaOptions;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class, See Also


See Also

TDAXMLSchemaOption enum


TDAXmlDataStreamer.SkipNull Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class

Specifies whether null values should be skipped when streaming data as XML (true, the default), or not.

If set to true, no XML node will be written to represent fields with null values; if set to false, a node with an empty value will be written.

Notes

Note that with SkipNull set to false, null values might be indistinguishable from empty values for certain field types such as strings.

Pascal

property SkipNull: boolean;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class


TDAXmlDataStreamer.WriteXSLT Property

TDAXmlDataStreamer Class	TDAXmlDataStreamer Class	See Also

Specifies an XSLT script will be used to process written data before it is being sent across the network. This allows for XML data to be sent out in non-Data Abstract formats, by providing an XSLT that performs the necessary conversion before sending the data.

See Also

WriteXSLT property

Pascal

property WriteXSLT: IXMLDocument;

Links

TDAXmlDataStreamer Class, TDAXmlDataStreamer Class, See Also


See Also

WriteXSLT property


TMultiDbLoginService Class

Events	Data Abstract Reference	Legend	Members	Properties	See Also

Implements the base service for user authentication with the IMultiDbLogin service interface, which allows the user to specify a database connection name as part of the login.

A service of this type will be automatically created for you when you select the MultiDb Login template when starting a new project

Essential Events

OnLogin - implement this event in your service implementation to handle the actual login procedure

OnLogout - implement this event in your service implementation to handle the logout

See Also

TSimpleLoginService class

New Project Templates help topic

Pascal

TMultiDbLoginService = class(TBaseLoginService, IMultiDbLoginService);

Class Hierarchy

File

MultiDbLoginService_Impl

Links

Events, Data Abstract Reference, Legend, Members, Properties, See Also


TMultiDbLoginService Class Properties

TMultiDbLoginService Class	Legend

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project


Legend

Property


TMultiDbLoginService Class Events

TMultiDbLoginService Class	Legend

Events

TMultiDbLoginService Class

 OnLogin

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Validate the passed connection name and store it in the session

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the MultiDb Login template when starting a new project.


Legend

Event


Legend

TMultiDbLoginService Class

Legend

Property

Event


TMultiDbLoginService Class Members

TMultiDbLoginService Class	Legend

Members

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project

Events

TMultiDbLoginService Class

 OnLogin

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Validate the passed connection name and store it in the session

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the MultiDb Login template when starting a new project.


Legend

Property

Event


See Also

TSimpleLoginService class

New Project Templates help topic


TMultiDbLoginService.OnLogin Event

TMultiDbLoginService Class	TMultiDbLoginService Class	See Also

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Validate the passed connection name and store it in the session

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the MultiDb Login template when starting a new project.

See Also

OnLogout event

UserInfo class

New Project Templates help topic

Pascal

property OnLogin: TMultiDbLoginEvent;

Links

TMultiDbLoginService Class, TMultiDbLoginService Class, See Also


See Also

OnLogout event

UserInfo class

New Project Templates help topic


TSimpleLoginService Class

Events	Data Abstract Reference	Legend	Members	Properties	See Also

Implements the base service for user authentication with the ISimpleLogin service interface.

A service of this type will be automatically created for you when you select the Simple Login template when starting a new project.

Essential Events

OnLogin - implement this event in your service implementation to handle the actual login procedure

OnLogout - implement this event in your service implementation to handle the logout

See Also

TMultiDbLoginService class

New Project Templates help topic

Pascal

TSimpleLoginService = class(TBaseLoginService, ISimpleLoginService);

Class Hierarchy

File

SimpleLoginService_Impl

Links

Events, Data Abstract Reference, Legend, Members, Properties, See Also


TSimpleLoginService Class Properties

TSimpleLoginService Class	Legend

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project


Legend

Property


TSimpleLoginService Class Events

TSimpleLoginService Class	Legend

Events

TSimpleLoginService Class

 OnLogin

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the Simple Login template when starting a new project.


Legend

Event


Legend

TSimpleLoginService Class

Legend

Property

Event


TSimpleLoginService Class Members

TSimpleLoginService Class	Legend

Members

Properties

 OnLogout

Implement this event handler to provide logout procedure. Ideally this method should 	Destroy the user session

Perform any additional per-user cleanup that might be necessary

Skeleton code for of event handler automatically created for you when you select the Simple or MultiDb Login template when starting a new project

Events

TSimpleLoginService Class

 OnLogin

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the Simple Login template when starting a new project.


Legend

Property

Event


See Also

TMultiDbLoginService class

New Project Templates help topic


TSimpleLoginService.OnLogin Event

TSimpleLoginService Class	TSimpleLoginService Class	See Also

Implement this event handler to provide the actual login procedure. Ideally this method should 	Validate the passed login credentials

Create a new session if login is considered successful

Fill the outgoing UserInfo class with any information that should be sent back to the client

Skeleton code for of event handler automatically created for you when you select the Simple Login template when starting a new project.

See Also

OnLogout event

UserInfo class

New Project Templates help topic

Pascal

property OnLogin: TSimpleLoginEvent;

Links

TSimpleLoginService Class, TSimpleLoginService Class, See Also


See Also

OnLogout event

UserInfo class

New Project Templates help topic


UserInfo Class

Data Abstract Reference	Legend	Members	Properties	See Also

The UserInfo class is used to return information about the current user from the standard Login methods of the TSimpleLoginService and TMultiDbLoginService services.

You can use either this class or define a custom descendant in your RODL that might contain additional application-specific data for this.

See Also

TSimpleLoginService and TMultiDbLoginService services

Pascal

UserInfo = class(TROComplexType);

Class Hierarchy

File

DataAbstract4_Intf

Links

Data Abstract Reference, Legend, Members, Properties, See Also


UserInfo Class Properties

UserInfo Class	Legend

Properties

 Attributes

Similar to the Privileges and UserData properties, this property can be used to send application-specific data back to the client.

 Privileges

This array of strings can be used to return a set of application-specific privileges to the client. For example, these privileges could be used to enable or disable certain aspects of the client's user interface based on the rights of the user.

Data Abstract does not evaluate or process these privileges in any way, it is entirely up to your application code to interpret them in any way that suits your application.

 SessionID

Contains the SessionID of the newly created session. Typically, this is identical to the ClientID of the RemObjects SDK Message component used for the communication and the ID used by the standard RemObjects SDK session management.

 UserData

This property can be used to return custom application-specific data about the logged-in user back to the client.

 UserID

Contains the UserID of the user that logged in. Depending on your implementation, this could be the same as the user name (login name) provided to login, or a different UserID that was obtained ad the user's credentials were verified (for example the primary key of the user record in a Users database table).


Legend

Property


Legend

UserInfo Class

Legend

Property


UserInfo Class Members

UserInfo Class	Legend

Members

Properties

 Attributes

Similar to the Privileges and UserData properties, this property can be used to send application-specific data back to the client.

 Privileges

This array of strings can be used to return a set of application-specific privileges to the client. For example, these privileges could be used to enable or disable certain aspects of the client's user interface based on the rights of the user.

Data Abstract does not evaluate or process these privileges in any way, it is entirely up to your application code to interpret them in any way that suits your application.

 SessionID

Contains the SessionID of the newly created session. Typically, this is identical to the ClientID of the RemObjects SDK Message component used for the communication and the ID used by the standard RemObjects SDK session management.

 UserData

This property can be used to return custom application-specific data about the logged-in user back to the client.

 UserID

Contains the UserID of the user that logged in. Depending on your implementation, this could be the same as the user name (login name) provided to login, or a different UserID that was obtained ad the user's credentials were verified (for example the primary key of the user record in a Users database table).


Legend

Property


See Also

TSimpleLoginService and TMultiDbLoginService services


UserInfo.Attributes Property

UserInfo Class	UserInfo Class	See Also

Similar to the Privileges and UserData properties, this property can be used to send application-specific data back to the client.

See Also

Privileges and UserData properties

Pascal

property Attributes: VariantArray;

Links

UserInfo Class, UserInfo Class, See Also


See Also

Privileges and UserData properties


UserInfo.Privileges Property

UserInfo Class	UserInfo Class	See Also

This array of strings can be used to return a set of application-specific privileges to the client. For example, these privileges could be used to enable or disable certain aspects of the client's user interface based on the rights of the user.

Data Abstract does not evaluate or process these privileges in any way, it is entirely up to your application code to interpret them in any way that suits your application.

Notes

Note that you should never rely solely on the client to enforce security. For example, if a certain range of users is not allowed to access a specific data table with classified information, you can use the Privileges property to disable the appropriate tabs or menu items on the client - however, you should enforce the access restriction on the server side, to make sure a hacked or compromised client application can not gain unauthorized access.

Please refer to the Login and Authentication help topic in the RemObjects SDK help and the DA24 website article for more details.

See Also

Attributes and UserData properties

Login and Authentication help topic in the RemObjects SDK online help

DA24 - Authentication in Data Abstract 4.0 website article

Pascal

property Privileges: StringArray;

Links

UserInfo Class, UserInfo Class, See Also


See Also

Attributes and UserData properties

Login and Authentication help topic in the RemObjects SDK online help

DA24 - Authentication in Data Abstract 4.0 website article


UserInfo.SessionID Property

UserInfo Class	UserInfo Class	See Also

Contains the SessionID of the newly created session. Typically, this is identical to the ClientID of the RemObjects SDK Message component used for the communication and the ID used by the standard RemObjects SDK session management.

See Also

RemObjects SDK online help

Pascal

property SessionID: Utf8String;

Links

UserInfo Class, UserInfo Class, See Also


See Also

RemObjects SDK online help


UserInfo.UserData Property

UserInfo Class	UserInfo Class	See Also

This property can be used to return custom application-specific data about the logged-in user back to the client.

See Also

Attributes and Privileges properties

Pascal

property UserData: Binary;

Links

UserInfo Class, UserInfo Class, See Also


See Also

Attributes and Privileges properties


UserInfo.UserID Property

UserInfo Class	UserInfo Class	See Also

Contains the UserID of the user that logged in. Depending on your implementation, this could be the same as the user name (login name) provided to login, or a different UserID that was obtained ad the user's credentials were verified (for example the primary key of the user record in a Users database table).

See Also

TSimpleLoginService.Login and TMultiDbLoginService.Login methods

Pascal

property UserID: Utf8String;

Links

UserInfo Class, UserInfo Class, See Also


See Also

TSimpleLoginService.Login and TMultiDbLoginService.Login methods


IDAADOConnection Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

This interface extends a generic IDAConnection with options specific to the ADO driver and related databases.

Key Properties

ProviderName specifies the OLE DB provider used by the connection.

ProviderType indicates the known type database type of the provider, if available.

See Also

IDAConnection interface

ADO Driver help topic

Pascal

IDAADOConnection = interface(IDAConnection);

Class Hierarchy

File

uDAADOInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDAADOConnection Interface Properties

IDAADOConnection Interface	Legend

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

IDAADOConnection Interface

 ProviderName

Specifies the OLE DB provider used by the connection. This is usually derived from the AuxDriver property of the connection string.

 ProviderType

Indicates the database type of the provider (such as Microsoft SQL Server, Oracle, or Access), if known for the current provider.


Legend

Property

read only


IDAADOConnection Interface Methods

IDAADOConnection Interface	Legend

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Method


Legend

IDAADOConnection Interface

Legend

Property

read only

Method


IDAADOConnection Interface Members

IDAADOConnection Interface	Legend

Members

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

IDAADOConnection Interface

 ProviderName

Specifies the OLE DB provider used by the connection. This is usually derived from the AuxDriver property of the connection string.

 ProviderType

Indicates the database type of the provider (such as Microsoft SQL Server, Oracle, or Access), if known for the current provider.

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Property

read only

Method


See Also

IDAConnection interface

ADO Driver help topic


IDAADOConnection.ProviderName Property

IDAADOConnection Interface	IDAADOConnection Interface	See Also

Specifies the OLE DB provider used by the connection. This is usually derived from the AuxDriver property of the connection string.

See Also

IDAConnection.ConnectionString property

Database Drivers help topic

Pascal

property ProviderName: string;

Links

IDAADOConnection Interface, IDAADOConnection Interface, See Also


See Also

IDAConnection.ConnectionString property

Database Drivers help topic


IDAADOConnection.ProviderType Property

IDAADOConnection Interface	IDAADOConnection Interface	See Also

Indicates the database type of the provider (such as Microsoft SQL Server, Oracle, or Access), if known for the current provider.

See Also

ProviderName property

Pascal

property ProviderType: TDAOleDBProviderType;

Links

IDAADOConnection Interface, IDAADOConnection Interface, See Also


See Also

ProviderName property


IDAConnection Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The IDAConnection interface represents an individual connection to a database.

Connections are usually obtained from the TDAConnectionManager component and will be implemented by different classes depending on the database driver you are using.

Connection classes for some drivers implement additional interfaces that expose driver- or database-specific functionality, such as IDAADOConnection, IDAInterbaseConnection or IDAOracleConnection.

Key Properties

ConnectionString specifies the database connection string that was used to open this connection.

Connected specifies whether the connection object currently has an active link to the database.

See Also

TDAConnectionManager component

IDAADOConnection, IDAInterbaseConnection and IDAOracleConnection interfaces

Database Drivers help topic

Pascal

IDAConnection = interface(IDABaseConnection);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDAConnection Interface Properties

IDAConnection Interface	Legend

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.


Legend

Property

read only


IDAConnection Interface Methods

IDAConnection Interface	Legend

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Method


Legend

IDAConnection Interface

Legend

Property

read only

Method


IDAConnection Interface Members

IDAConnection Interface	Legend

Members

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Property

read only

Method


See Also

TDAConnectionManager component

IDAADOConnection, IDAInterbaseConnection and IDAOracleConnection interfaces

Database Drivers help topic


IDAConnection.Connected Property

IDAConnection Interface	IDAConnection Interface	See Also

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

See Also

Open and Close methods

Connection Pooling help topic

Pascal

property Connected: boolean;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

Open and Close methods

Connection Pooling help topic


IDAConnection.ConnectionString Property

IDAConnection Interface	IDAConnection Interface	See Also

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

See Also

UserID and Password properties

Database Drivers help topic

Pascal

property ConnectionString: string;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

UserID and Password properties

Database Drivers help topic


IDAConnection.InTransaction Property

IDAConnection Interface	IDAConnection Interface	See Also

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

See Also

BeginTransaction, CommitTransaction and RollbackTransaction methods

Transaction Handling help topic

Pascal

property InTransaction: boolean;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

BeginTransaction, CommitTransaction and RollbackTransaction methods

Transaction Handling help topic


IDAConnection.Name Property

IDAConnection Interface	IDAConnection Interface	See Also

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

See Also

TDAConnectionManager component

Schema Modeler help topic

Pascal

property Name: string;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

TDAConnectionManager component

Schema Modeler help topic


IDAConnection.Password Property

IDAConnection Interface	IDAConnection Interface	See Also

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

See Also

ConnectionString and UserID properties

Pascal

property Password: string;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

ConnectionString and UserID properties


IDAConnection.UserID Property

IDAConnection Interface	IDAConnection Interface	See Also

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

See Also

ConnectionString and Password properties

Pascal

property UserID: string;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

ConnectionString and Password properties


IDAConnection.BeginTransaction Method

IDAConnection Interface	IDAConnection Interface	See Also

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

See Also

CommitTransaction and RollbackTransaction methods

InTransaction property

Transaction Handling help topic

Pascal

function BeginTransaction: integer; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

CommitTransaction and RollbackTransaction methods

InTransaction property

Transaction Handling help topic


IDAConnection.Close Method

IDAConnection Interface	IDAConnection Interface	See Also

Closes the physical connection to the database back-end.

See Also

Open method

Connected property

Connection Pooling help topic

Pascal

procedure Close; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

Open method

Connected property

Connection Pooling help topic


IDAConnection.CommitTransaction Method

IDAConnection Interface	IDAConnection Interface	See Also

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

See Also

BeginTransaction and RollbackTransaction methods

InTransaction property

Transaction Handling help topic

Pascal

procedure CommitTransaction; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

BeginTransaction and RollbackTransaction methods

InTransaction property

Transaction Handling help topic


IDAConnection.NewCommand Method

IDAConnection Interface	IDAConnection Interface	See Also

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

See Also

NewDataset method

IDASQLCommand interface

Pascal

function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

NewDataset method

IDASQLCommand interface


IDAConnection.NewDataset Method

IDAConnection Interface	IDAConnection Interface	See Also

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

See Also

NewCommand method

IDADataset interface

Pascal

function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

NewCommand method

IDADataset interface


IDAConnection.Open Method

IDAConnection Interface	IDAConnection Interface	See Also

Establishes a physical connection to the database back-end, using the specified ConnectionString.

See Also

Close method

Connected and ConnectionString properties

Connection Pooling help topic

Pascal

procedure Open(const aUserID: string = ''; const aPassword: string = ''); safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

Close method

Connected and ConnectionString properties

Connection Pooling help topic


IDAConnection.RollbackTransaction Method

IDAConnection Interface	IDAConnection Interface	See Also

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.

See Also

BeginTransaction and CommitTransaction methods

InTransaction property

Transaction Handling help topic

Pascal

procedure RollbackTransaction; safecall;

Links

IDAConnection Interface, IDAConnection Interface, See Also


See Also

BeginTransaction and CommitTransaction methods

InTransaction property

Transaction Handling help topic


IDADataset Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The IDADataset interface is used to represent a special type of command that fetches a record set from the database.

The interface extends IDASQLCommand, which provides the basic settings for executing commands on the database, and extends it with functionality specific to commands returning record sets.

Datasets are usually obtained via IDAConnection.NewDataset or TDASchema.NewDataset and will be implemented by different classes depending on the database driver you are using.

IDADataset is also implemented by the (usually client-side) TDADataTable, allowing it too to be used as source for data retrieval.

Essential Properties

SQL specifies the SQL statement to be executed.

Relevant Properties

Where provides access to a structured WHERE clause that can be modified and expanded in code.

IDADataset also provides a set of methods familiar from Delphi's standard TDataset class, for browsing through the dataset (Next, EOF) and accessing data (Fields, FieldCount) etc.

See Also

IDAConnection.NewCommand and TDASchema.NewCommand methods

Database Drivers help topic

Pascal

IDADataset = interface(IDASQLCommand);

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDADataset Interface Properties

IDADataset Interface	Legend

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).


Legend

Property

read only


IDADataset Interface Methods

IDADataset Interface	Legend

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.


Legend

Method


Legend

IDADataset Interface

Legend

Property

read only

Method


IDADataset Interface Members

IDADataset Interface	Legend

Members

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

IDADataset Interface

 Active

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

 EOF

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

 FieldCount

Indicates the number of Fields contained in the dataset.

 Fields

Provides access to all the fields contained in the dataset.

 FieldValues

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

 IsEmpty

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

IDADataset Interface

 Close

Closes the dataset and discards any local data that had been retrieved from the database.

 FieldByName

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

 Next

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

 Open

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.


Legend

Property

read only

Method


See Also

IDAConnection.NewCommand and TDASchema.NewCommand methods

Database Drivers help topic


IDADataset.Active Property

IDADataset Interface	IDADataset Interface	See Also

Specifies whether the dataset is currently active (open) or not. Setting this property to true will automatically Open the dataset, while setting it to false will automatically Close it.

See Also

Open and Close methods

Pascal

property Active: boolean;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Open and Close methods


IDADataset.EOF Property

IDADataset Interface	IDADataset Interface	See Also

Indicates whether reading the dataset has reached the end of the recordset (EOF = End of File).

EOF will only turn true if neither an empty dataset was opened or Next was called while the cursor was already on the last record (it will not turn to true when reaching the last record).

See Also

Next method

Pascal

property EOF: boolean;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Next method


IDADataset.FieldCount Property

IDADataset Interface	IDADataset Interface	See Also

Indicates the number of Fields contained in the dataset.

See Also

Fields and FieldValues properties

Pascal

property FieldCount: integer;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Fields and FieldValues properties


IDADataset.Fields Property

IDADataset Interface	IDADataset Interface	See Also

Provides access to all the fields contained in the dataset.

See Also

FieldCount and FieldValues properties

Pascal

property Fields: TDAFieldCollection;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

FieldCount and FieldValues properties


IDADataset.FieldValues Property

IDADataset Interface	IDADataset Interface	See Also

Provides convenient access to all the fields values of the current record without having to go though the Fields collection property.

See Also

FieldCount and Fields properties

Pascal

property FieldValues [Index: integer]: Variant;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

FieldCount and Fields properties


IDADataset.IsEmpty Property

IDADataset Interface	IDADataset Interface

Indicates whether the dataset is empty, that is does not contain any records (true) or not (false).

Pascal

property IsEmpty: boolean;

Links

IDADataset Interface, IDADataset Interface


IDADataset.Close Method

IDADataset Interface	IDADataset Interface	See Also

Closes the dataset and discards any local data that had been retrieved from the database.

See Also

Open method

Active property

Pascal

procedure Close; safecall;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Open method

Active property


IDADataset.FieldByName Method

IDADataset Interface	IDADataset Interface	See Also

Locates a specific field contained in the dataset, based on its name. If no matching field is defined, an exception will be raised.

See Also

Fields property

Command and Data Table Parameters help topic

Pascal

function FieldByName(const aName: string): TDAField; safecall;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Fields property

Command and Data Table Parameters help topic


IDADataset.Next Method

IDADataset Interface	IDADataset Interface	See Also

Advances the cursor to the next available record in the dataset. If the current record is the last record available, calling Next will set EOF to indicate the end of the dataset has been reached.

See Also

EOF property

Pascal

procedure Next; safecall;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

EOF property


IDADataset.Open Method

IDADataset Interface	IDADataset Interface	See Also

Opens the dataset and prepares it for fetching records from the database. If the dataset is not empty, the cursor will be placed on the first available record; otherwise, EOF will be set to true to indicate the end of the (empty) record set has been reached.

See Also

Open and Close method

Active and EOF properties

Pascal

procedure Open; safecall;

Links

IDADataset Interface, IDADataset Interface, See Also


See Also

Open and Close method

Active and EOF properties


IDADelta Interface

Add Method	Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The IDADelta interface represents a set of changes to be transmitted between client and server. These can be client-side changes that are pending to be applied to the server database, or server-side changes that are being propagated back to the client.

This interface is implemented by the TDADelta class.

Key Properties

Changes provides access to the individual delta changes stored within the delta

Count indicates the number of changes

See Also

TDADelta class

Pascal

IDADelta = interface;

Class Hierarchy

File

uDADelta

Links

Add Method, Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDADelta Interface Properties

IDADelta Interface	Legend

Properties

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LogicalName

Specified the name of the logical entity that this delta pertains to. Usually, this will be the name of the data table that changes should be applied to.


Legend

Property

read only


IDADelta Interface Methods

IDADelta Interface	Legend

Methods

 Add

Adds a new delta change to to the list of changes maintained within the delta.

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.


Legend

Method


Legend

IDADelta Interface

Legend

Property

read only

Method


IDADelta Interface Members

IDADelta Interface	Legend

Members

Properties

 Changes

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

 Count

Indicates the number of Changes contained within the delta.

 KeyFieldCount

Indicates the number of fields that comprise the key for this delta.

 KeyFieldNames

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

 LoggedFieldCount

Indicates the number of fields that comprise the data for this delta.

 LoggedFieldNames

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LoggedFieldTypes

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

 LogicalName

Specified the name of the logical entity that this delta pertains to. Usually, this will be the name of the data table that changes should be applied to.

Methods

 Add

Adds a new delta change to to the list of changes maintained within the delta.

 Clear

Clears the delta and discards all the individual changes that it contains.

 IsNewRecord

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

 RemoveChange

Removes a delta change to the list of changes maintained within the delta.


Legend

Property

read only

Method


See Also

TDADelta class


IDADelta.Changes Property

IDADelta Interface	IDADelta Interface	See Also

Provides access to all the individual changes contained in the delta. The indexer is zero-based and the number of elements is indicated by the Count property.

See Also

Count property

TDADeltaChange class

Pascal

property Changes [Index: integer]: TDADeltaChange;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

Count property

TDADeltaChange class


IDADelta.Count Property

IDADelta Interface	IDADelta Interface	See Also

Indicates the number of Changes contained within the delta.

See Also

Changes indexer property

Pascal

property Count: integer;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

Changes indexer property


IDADelta.KeyFieldCount Property

IDADelta Interface	IDADelta Interface	See Also

Indicates the number of fields that comprise the key for this delta.

See Also

KeyFieldNames indexer property

Pascal

property KeyFieldCount: integer;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

KeyFieldNames indexer property


IDADelta.KeyFieldNames Property

IDADelta Interface	IDADelta Interface	See Also

Lists the names of the fields that comprise the key for this delta. The indexer is zero-based and the number of elements is indicated by the KeyFieldCount property.

See Also

KeyFieldCount property

Pascal

property KeyFieldNames [Index: integer]: string;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

KeyFieldCount property


IDADelta.LoggedFieldCount Property

IDADelta Interface	IDADelta Interface	See Also

Indicates the number of fields that comprise the data for this delta.

See Also

LoggedFieldNames and LoggedFieldTypes indexer properties

Pascal

property LoggedFieldCount: integer;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

LoggedFieldNames and LoggedFieldTypes indexer properties


IDADelta.LoggedFieldNames Property

IDADelta Interface	IDADelta Interface	See Also

Lists the names of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

See Also

LoggedFieldTypes and LoggedFieldCount property

Pascal

property LoggedFieldNames [Index: integer]: string;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

LoggedFieldTypes and LoggedFieldCount property


IDADelta.LoggedFieldTypes Property

IDADelta Interface	IDADelta Interface	See Also

Lists the data types of the fields that comprise the data for this delta. The indexer is zero-based and the number of elements is indicated by the LoggedFieldCount property.

See Also

LoggedFieldNames and LoggedFieldCount property

Pascal

property LoggedFieldTypes [Index : integer]: TDADataType;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

LoggedFieldNames and LoggedFieldCount property


IDADelta.LogicalName Property

IDADelta Interface	IDADelta Interface	See Also

Specified the name of the logical entity that this delta pertains to. Usually, this will be the name of the data table that changes should be applied to.

See Also

TDADataTable.LogicalName property

Pascal

property LogicalName: string;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

TDADataTable.LogicalName property


Add Method

IDADelta Interface	Legend	Methods	See Also

Adds a new delta change to to the list of changes maintained within the delta.

See Also

Changes indexer property

RemoveChange method

Links

IDADelta Interface, Legend, Methods, See Also


Add Method Methods

Add Method	Legend

Methods

 Add

 Add


Legend

Method


Legend

Add Method

Legend

Method


See Also

Changes indexer property

RemoveChange method


IDADelta.Add Method (TDADeltaChange)

IDADelta Interface	Add Method

procedure Add(aChange: TDADeltaChange); overload;

Links

IDADelta Interface, Add Method


IDADelta.Add Method (integer, TDAChangeType, TDAChangeStatus, string)

IDADelta Interface	Add Method

function Add(aRecordID: integer; aChangeType: TDAChangeType; aStatus: TDAChangeStatus = csPending; const aMessage: string = ''): TDADeltaChange; overload;

Links

IDADelta Interface, Add Method


IDADelta.Clear Method

IDADelta Interface	IDADelta Interface	See Also

Clears the delta and discards all the individual changes that it contains.

See Also

Changes indexer property

RemoveChange method

Pascal

procedure Clear(DoClearFieldNames: boolean = FALSE; DoClearKeyFieldNames: boolean = FALSE);

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

Changes indexer property

RemoveChange method


IDADelta.IsNewRecord Method

IDADelta Interface	IDADelta Interface	See Also

Indicates whether the record in question represents a newly inserted record that doesn't exist on the server yet (true) or a changed record that already exists on the server (false).

If called without parameter (or with -1), the result value will indicate the status of the current record in the data table associated with the delta (client-side only). If called with a non-negative record id, it will indicate the status of that record.

See Also

TDADeltaChange.ChangeType property

Pascal

function IsNewRecord(aRecordID: integer = -1): boolean;

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

TDADeltaChange.ChangeType property


IDADelta.RemoveChange Method

IDADelta Interface	IDADelta Interface	See Also

Removes a delta change to the list of changes maintained within the delta.

See Also

Changes indexer property

Add method

Pascal

procedure RemoveChange(aChange: TDADeltaChange);

Links

IDADelta Interface, IDADelta Interface, See Also


See Also

Changes indexer property

Add method


IDAIBConnectionProperties Interface

Data Abstract Reference	Legend	Members	Properties	See Also

This interface extends a generic IDAConnection with options specific to Interbase and Firebird drivers and databases.

Key Properties

Charset specifies the name of the character encoding to be used for the communication.

Role specifies the Interbase Role used for the connection.

SQLDialect specifies the SQL dialect version active for this connection.

See Also

IDAConnection and IDAIBTransactionAccess interfaces

Pascal

IDAIBConnectionProperties = interface;

Class Hierarchy

File

uDAIBInterfaces

Links

Data Abstract Reference, Legend, Members, Properties, See Also


IDAIBConnectionProperties Interface Properties

IDAIBConnectionProperties Interface	Legend

Properties

 Charset

Specifies the name of the character encoding to be used for the communication.

 Role

Specifies the Interbase Role used for the connection. Please refer to the Interbase or Firebird documentation for more more information on Roles and how they relate to database security and access control.

 SQLDialect

Specifies the SQL dialect version active for this connection. Interbase provides 3 different language dialects that expose different features of the database and the Interbase SQL language. Please refer to the Interbase or firebird documentation for more information.

The default dialect for Data Abstract's Interbase drivers is 3.


Legend

Property


Legend

IDAIBConnectionProperties Interface

Legend

Property


IDAIBConnectionProperties Interface Members

IDAIBConnectionProperties Interface	Legend

Members

Properties

 Charset

Specifies the name of the character encoding to be used for the communication.

 Role

Specifies the Interbase Role used for the connection. Please refer to the Interbase or Firebird documentation for more more information on Roles and how they relate to database security and access control.

 SQLDialect

Specifies the SQL dialect version active for this connection. Interbase provides 3 different language dialects that expose different features of the database and the Interbase SQL language. Please refer to the Interbase or firebird documentation for more information.

The default dialect for Data Abstract's Interbase drivers is 3.


Legend

Property


See Also

IDAConnection and IDAIBTransactionAccess interfaces


IDAIBConnectionProperties.Charset Property

IDAIBConnectionProperties Interface	IDAIBConnectionProperties Interface

Specifies the name of the character encoding to be used for the communication.

Pascal

property Charset: string;

Links

IDAIBConnectionProperties Interface, IDAIBConnectionProperties Interface


IDAIBConnectionProperties.Role Property

IDAIBConnectionProperties Interface	IDAIBConnectionProperties Interface

Specifies the Interbase Role used for the connection. Please refer to the Interbase or Firebird documentation for more more information on Roles and how they relate to database security and access control.

Pascal

property Role: string;

Links

IDAIBConnectionProperties Interface, IDAIBConnectionProperties Interface


IDAIBConnectionProperties.SQLDialect Property

IDAIBConnectionProperties Interface	IDAIBConnectionProperties Interface

Specifies the SQL dialect version active for this connection. Interbase provides 3 different language dialects that expose different features of the database and the Interbase SQL language. Please refer to the Interbase or firebird documentation for more information.

The default dialect for Data Abstract's Interbase drivers is 3.

Pascal

property SQLDialect: integer;

Links

IDAIBConnectionProperties Interface, IDAIBConnectionProperties Interface


IDAIBTransactionAccess Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

This interface extends a generic IDAConnection with options specific to Interbase and Firebird transactions.

Key Properties

Transaction provides to currently active the Interbase transaction object.

See Also

IDAConnection and IDAIBConnectionProperties interfaces

Pascal

IDAIBTransactionAccess = interface;

Class Hierarchy

File

uDAIBInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDAIBTransactionAccess Interface Properties

IDAIBTransactionAccess Interface	Legend

Properties

 Transaction

Provides to currently active the Interbase transaction object. The actual implementation of this object depends on the underlying driver type; please refer to the driver libraries documentation for more details.

This property returns a TObject reference that can be cast to the appropriate transaction object such as TIBTransaction for IBX.


Legend

Property

read only


IDAIBTransactionAccess Interface Methods

IDAIBTransactionAccess Interface	Legend

Methods

 Commit

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call Rollback instead.

Please refer to the Transaction Handling help topic for more details in transactions.

 CommitRetaining

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

In contrast to Commit, CommitRetaining commits the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.

 Rollback

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call Commit instead.

Please refer to the Transaction Handling help topic for more details in transactions.

 RollbackRetaining

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

In contrast to Rollback, RollbackRetaining discards the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.


Legend

Method


Legend

IDAIBTransactionAccess Interface

Legend

Property

read only

Method


IDAIBTransactionAccess Interface Members

IDAIBTransactionAccess Interface	Legend

Members

Properties

 Transaction

Provides to currently active the Interbase transaction object. The actual implementation of this object depends on the underlying driver type; please refer to the driver libraries documentation for more details.

This property returns a TObject reference that can be cast to the appropriate transaction object such as TIBTransaction for IBX.

Methods

 Commit

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call Rollback instead.

Please refer to the Transaction Handling help topic for more details in transactions.

 CommitRetaining

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

In contrast to Commit, CommitRetaining commits the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.

 Rollback

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call Commit instead.

Please refer to the Transaction Handling help topic for more details in transactions.

 RollbackRetaining

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

In contrast to Rollback, RollbackRetaining discards the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.


Legend

Property

read only

Method


See Also

IDAConnection and IDAIBConnectionProperties interfaces


IDAIBTransactionAccess.Transaction Property

IDAIBTransactionAccess Interface	IDAIBTransactionAccess Interface

Provides to currently active the Interbase transaction object. The actual implementation of this object depends on the underlying driver type; please refer to the driver libraries documentation for more details.

This property returns a TObject reference that can be cast to the appropriate transaction object such as TIBTransaction for IBX.

Pascal

property Transaction: TObject;

Links

IDAIBTransactionAccess Interface, IDAIBTransactionAccess Interface


IDAIBTransactionAccess.Commit Method

IDAIBTransactionAccess Interface	IDAIBTransactionAccess Interface	See Also

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call Rollback instead.

Please refer to the Transaction Handling help topic for more details in transactions.

See Also

Rollback and CommitRetaining methods

Transaction property

Transaction Handling help topic

Pascal

procedure Commit; safecall;

Links

IDAIBTransactionAccess Interface, IDAIBTransactionAccess Interface, See Also


See Also

Rollback and CommitRetaining methods

Transaction property

Transaction Handling help topic


IDAIBTransactionAccess.CommitRetaining Method

IDAIBTransactionAccess Interface	IDAIBTransactionAccess Interface	See Also

Commits the currently active transaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

In contrast to Commit, CommitRetaining commits the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.

See Also

RollbackRetaining and Commit methods

Transaction property

Transaction Handling help topic

Pascal

procedure CommitRetaining; safecall;

Links

IDAIBTransactionAccess Interface, IDAIBTransactionAccess Interface, See Also


See Also

RollbackRetaining and Commit methods

Transaction property

Transaction Handling help topic


IDAIBTransactionAccess.Rollback Method

IDAIBTransactionAccess Interface	IDAIBTransactionAccess Interface	See Also

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call Commit instead.

Please refer to the Transaction Handling help topic for more details in transactions.

See Also

Commit and RollbackRetaining methods

Transaction property

Transaction Handling help topic

Pascal

procedure Rollback; safecall;

Links

IDAIBTransactionAccess Interface, IDAIBTransactionAccess Interface, See Also


See Also

Commit and RollbackRetaining methods

Transaction property

Transaction Handling help topic


IDAIBTransactionAccess.RollbackRetaining Method

IDAIBTransactionAccess Interface	IDAIBTransactionAccess Interface	See Also

Discards the currently active transaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

In contrast to Rollback, RollbackRetaining discards the transaction, but then immediately starts a new one with the same parameters. It also saves the same cursor, so that any dataset retrieval can continue from the same location.

Please refer to the Interbase and Firebird documentation for more details on this option.

See Also

Rollback and CommitRetaining methods

Transaction property

Transaction Handling help topic

Pascal

procedure RollbackRetaining; safecall;

Links

IDAIBTransactionAccess Interface, IDAIBTransactionAccess Interface, See Also


See Also

Rollback and CommitRetaining methods

Transaction property

Transaction Handling help topic


IDAInterbaseConnection Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

This interface extends a generic IDAConnection to indicate the connection is specific to an Interbase or Firebird database.

See Also

IDAConnection interface

Pascal

IDAInterbaseConnection = interface(IDAConnection);

Class Hierarchy

File

uDAIBInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDAInterbaseConnection Interface Properties

IDAInterbaseConnection Interface	Legend

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.


Legend

Property

read only


IDAInterbaseConnection Interface Methods

IDAInterbaseConnection Interface	Legend

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Method


Legend

IDAInterbaseConnection Interface

Legend

Property

read only

Method


IDAInterbaseConnection Interface Members

IDAInterbaseConnection Interface	Legend

Members

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Property

read only

Method


See Also

IDAConnection interface


IDAOracleConnection Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

This interface extends a generic IDAConnection to indicate the connection is specific to an Oracle database.

See Also

IDAConnection interface

Pascal

IDAOracleConnection = interface(IDAConnection);

Class Hierarchy

File

uDAOracleInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDAOracleConnection Interface Properties

IDAOracleConnection Interface	Legend

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.


Legend

Property

read only


IDAOracleConnection Interface Methods

IDAOracleConnection Interface	Legend

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Method


Legend

IDAOracleConnection Interface

Legend

Property

read only

Method


IDAOracleConnection Interface Members

IDAOracleConnection Interface	Legend

Members

Properties

 Connected

Specifies whether the connection object currently has an active link to the database (true) or not (false).

Usually, a Data Abstract connection connects to the database when it is created, and is not closed until discarded and eventually removed from the connection pool. However, you can use the Open and Close methods to manually connect or disconnect from the database, if needed.

 ConnectionString

Specifies the database connection string that was used to open this connection.

The exact content of this string depends on the driver and database you are using, but it will usually contain information such as the database name, user id and password, as well as additional connection parameters. Please refer to the reference for the specific driver for more details.

 InTransaction

Specifies whether the connection is currently inside a transaction (true) or not (false).

When inside a transaction, all changes made to the database are not applied to the physical database right away, but will be held until the transaction is commited. Then and only then will all changes be made permanent.

Exact transaction behavior (such as transaction isolation) might also depend on the used database back-end setup and the connection parameters.

Please refer to the Transaction Handling help topic for more details on transactions.

 Name

Returns a human-readable name for the connection. For connections obtained through a TDAConnectionManager component, this will be the name that the connection was defined under in Schema Modeler.

 Password

Specifies the Password that was or will be used to open this connection. This value is usually obtained from the connection string.

 UserID

Specifies the User ID that was or will be used to open this connection. This value is usually obtained from the connection string.

Methods

 BeginTransaction

Starts a new transaction for the current connection. After this call, all subsequent changes to the database will be isolated in a new transaction and are not applied to the physical database right away. Only when the transaction is commited though a call to CommitTransaction, the changes are made permanent.

Please refer to the Transaction Handling help topic for more details in transactions.

 Close

Closes the physical connection to the database back-end.

 CommitTransaction

Commits a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be permanently applied to the database at this point.

The commit will only succeed if all changes can be successfully applied.

To discard changes made, instead of persisting them, call RollbackTransaction instead.

Please refer to the Transaction Handling help topic for more details on transactions.

 NewCommand

Returns a new IDASQLCommand implementation that can be used to execute a SQL command on the underlying database.

In normal Data Abstract operations, you will not call this method directly, but obtain commands defined in your schema from the TDASchema component to execute them. However, this method provides the ability to easily execute custom SQL code against the database back-end, if the need should arise.

 NewDataset

Returns a new IDADataset implementation that can be used to retrieve records from the database

In normal Data Abstract operations, you will not call this method directly, but obtain datasets (a.k.a. data tables) defined in your schema from the TDASchema component to retrieve them. However, this method provides the ability to easily execute custom SQL code to select specific data from the database back-end, if the need should arise.

 Open

Establishes a physical connection to the database back-end, using the specified ConnectionString.

 RollbackTransaction

Discards a transaction that was started with a prior call to BeginTransaction. All changes made in the context of the transaction will be be discarded and not applied to the physical database.

To persist the changes made, instead of discarding them, call CommitTransaction instead.

Please refer to the Transaction Handling help topic for more details in transactions.


Legend

Property

read only

Method


See Also

IDAConnection interface


IDASQLCommand Interface

Data Abstract Reference	Legend	Members	Methods	Properties	See Also

The IDASQLCommand interface is used to represents an individual command to be executed on the database.

Commands are usually obtained via IDAConnection.NewCommand or TDASchema.NewCommand and will be implemented by different classes depending on the database driver you are using.

Essential Properties

SQL specifies the SQL statement to be executed.

Relevant Properties

Where provides access to a structured WHERE clause that can be modified and expanded in code.

See Also

IDAConnection.NewCommand and TDASchema.NewCommand methods

Database Drivers help topic

Pascal

IDASQLCommand = interface;

Class Hierarchy

File

uDAInterfaces

Links

Data Abstract Reference, Legend, Members, Methods, Properties, See Also


IDASQLCommand Interface Properties

IDASQLCommand Interface	Legend

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement


Legend

Property

read only


IDASQLCommand Interface Methods

IDASQLCommand Interface	Legend

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.


Legend

Method


Legend

IDASQLCommand Interface

Legend

Property

read only

Method


IDASQLCommand Interface Members

IDASQLCommand Interface	Legend

Members

Properties

 Name

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

 Params

Provides access to the list of parameters defined for the command.

 Prepared

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

 SQL

Specifies the SQL statement to be executed.

 Where

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

Methods

 Execute

Executes the the specified SQL statement on the server.

 ParamByName

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

 RefreshParams

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.


Legend

Property

read only

Method


See Also

IDAConnection.NewCommand and TDASchema.NewCommand methods

Database Drivers help topic


IDASQLCommand.Name Property

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Returns a human-readable name for the command.

For commands obtained through a TDASchema component, this will be the name that the command (or data table) was defined under in Schema Modeler. When obtaining a command from an IDAConnection, the name can be specified in the call to NewCommand or NewDataset.

See Also

TDASchema component

IDAConnection interface

Schema Modeler help topic

Pascal

property Name: string;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

TDASchema component

IDAConnection interface

Schema Modeler help topic


IDASQLCommand.Params Property

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Provides access to the list of parameters defined for the command.

See Also

RefreshParams and ParamByName methods

Command and Data Table Parameters help topic

Pascal

property Params: TDAParamCollection;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

RefreshParams and ParamByName methods

Command and Data Table Parameters help topic


IDASQLCommand.Prepared Property

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Specifies whether the SQL statement has been prepared for execution on the database (true) or not (false). Setting this property to true will automatically prepare the statement.

Preparing statements on the database server allows for faster execution, especially if the statement will be executed multiple times, as the server will not need to re-parse the SQL text for every execution. Please refer to your database system's documentation for more information on preparing statements.

Notes

Note that changing the SQL or Where properties will automatically un-prepare the statement.

See Also

SQL and Where properties

Execute method

Pascal

property Prepared: boolean;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

SQL and Where properties

Execute method


IDASQLCommand.SQL Property

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Specifies the SQL statement to be executed.

See Also

Where property

Execute method

Pascal

property SQL: string;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

Where property

Execute method


IDASQLCommand.Where Property

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Provides access to a structured WHERE clause that can be modified and expanded in code.

The WHERE clause is represented by an instance of the TDAWhere class, which provides methods to dynamically build and extend the WHERE clause in code. Upon execution of the command, the appropriate WHERE statement will automatically be generated and appended to the original SQL statement

See Also

SQL property

Execute method

TDAWhere class

Pascal

property Where: TDAWhere;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

SQL property

Execute method

TDAWhere class


IDASQLCommand.Execute Method

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Executes the the specified SQL statement on the server.

See Also

SQL and Where properties

Pascal

function Execute: integer; safecall;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

SQL and Where properties


IDASQLCommand.ParamByName Method

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Locates a specific parameter defined for the command, based on its name. If no matching parameter is defined, an exception will be raised.

See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic

Pascal

function ParamByName(const aName: string): TDAParam; safecall;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

Params, SQL and Where properties

RefreshParams method

Command and Data Table Parameters help topic


IDASQLCommand.RefreshParams Method

IDASQLCommand Interface	IDASQLCommand Interface	See Also

Refreshes the list of parameters defined for the command based on the actual parameter names found in the SQL statement and Where clause.

See Also

Params, SQL and Where properties

ParamByName method

Command and Data Table Parameters help topic

Pascal

procedure RefreshParams; safecall;

Links

IDASQLCommand Interface, IDASQLCommand Interface, See Also


See Also

Params, SQL and Where properties

ParamByName method

Command and Data Table Parameters help topic


TDABlobType Enumeration

Data Abstract Reference	See Also

Defines the different BLOB (Binary Large Object) types supported by Data Abstract.

Value	Meaning
dabtUnknown	Unknown or unspecified BLOB type.
dabtBlob	Standard BLOB.
dabtMemo	Text-BLOB.
dabtOraBlob	Oracle BLOB Type.
dabtCoaClob	Oracle CLOB Type.
See Also

TDABaseField.BlobType property

Pascal

TDABlobType = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDABaseField.BlobType property


TDAChangeStatus Enumeration

Data Abstract Reference	See Also

Defines the different states of a TDADeltaChange:

Value	Meaning
csPending	The change still needs to be applied to the back-end database.
csResolved	The change has been successfully applied to the database.
csFailed	Applying the change to the database has failed. Typically, the TDADeltaChange.Message property will contain information about the failure.
See Also

TDADeltaChange.Status and Message properties

Pascal

TDAChangeStatus = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDADeltaChange.Status and Message properties


TDAChangeType Enumeration

Data Abstract Reference	See Also

Specifies the type of change represented by a TDADeltaChange:

Value	Meaning
ctInsert	The change represents a new record to be inserted into the database. OldValues will not be defined.
ctUpdate	The change represents a changed record that should be updated in the database.
cdDelete	The change represents a record that should be deleted from the database. NewValues will not be defined.
See Also

TDADeltaChange.ChangeType, OldValues and NewValues properties

Pascal

TDAChangeType = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDADeltaChange.ChangeType, OldValues and NewValues properties


TDADataType Enumeration

Data Abstract Reference	See Also

Defines the different data types supported by Data Abstract.

See Also

TDABaseField.DataType property

Pascal

TDADataType = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDABaseField.DataType property


TDADetailOption Enumeration

Data Abstract Reference	See Also

Defines options used in the TDADataTable.DetailOptions property to configure the behavior of a data table in a Master/Detail relationship.

Value	Meaning
dtCascadeOpenClose	Automatically open or close the detail table when the master table is opened or closed.
dtCascadeApplyUpdates	Automatically apply detail changes to the server when ApplyUpdate is called on the master.
dtAutoFetch	Automatically fetch new data for this detail table, when the master record has changed.
dtCascadeDelete	Automatically delete detail records when the master record is deleted.
dtCascadeUpdate	Automatically update detail records, if one of the MasterFields has changed in the master, to keep the relationship intact.
dtDisableLogOfCascadeDeletes	Do not log cascaded detail deletes. Enable this option if the back-end database is configured to automatically cascade deletes on its own and the detail deletes do not have to be applied back to the database, individually.
dtDisableLogOfCascadeUpdates	Do not log cascaded detail updates. Enable this option if the back-end database is configured to automatically cascade updates on its own and the detail updates (if referring only to DetailFields) do not have to be applied back to the database, individually.
dtIncludeInAllInOneFetch	Automatically download data for this detail table, when filling the master.
See Also

TDADataTable.DetailOptions, MasterFields and DetailFields properties

TDADataTable.ApplyUpdate method

Pascal

TDADetailOption = (
);

File

uDADataTable

Links

Data Abstract Reference, See Also


See Also

TDADataTable.DetailOptions, MasterFields and DetailFields properties

TDADataTable.ApplyUpdate method


TDAMasterMappingMode Enumeration

Data Abstract Reference	See Also

Defines the individual options for master/detail mapping in the TDADataTable.MasterMappingMode property:

Value	Meaning
mmParams	Detail data will be fetched by setting the MasterFields as parameters on the data table.
mmDataRequest	Detail data will be fetched by passing the MasterFields as parameters to a custom data request method provided by the service.
See Also

TDADataTable.MasterMappingMode and MasterFields properties

Pascal

TDAMasterMappingMode = (
);

File

uDADataTable

Links

Data Abstract Reference, See Also


See Also

TDADataTable.MasterMappingMode and MasterFields properties


TDAMasterOption Enumeration

Data Abstract Reference	See Also

Defines options used in the TDADataTable.MasterOptions property to configure the behavior of a data table in a Master/Detail relationship.

Value	Meaning
moCascadeOpenClose	Automatically open or close the detail table when the master table is opened or closed.
moCascadeApplyUpdates	Automatically apply detail changes to the server when ApplyUpdate is called on the master.
moCascadeDelete	Automatically delete detail records when the master record is deleted.
moCascadeUpdate	Automatically update detail records, if one of the MasterFields has changed in the master, to keep the relationship intact.
moDisableLogOfCascadeDeletes	Do not log cascaded detail deletes. Enable this option if the back-end database is configured to automatically cascade deletes on its own and the detail deletes do not have to be applied back to the database individually.
moDisableLogOfCascadeUpdates	Do not log cascaded detail updates. Enable this option if the back-end database is configured to automatically cascade updates on its own and the detail updates (if referring only to DetailFields) do not have to be applied back to the database individually.
moAllInOneFetch	Automatically download data for the detail table, when filling the master.
See Also

TDADataTable.MasterOptions, MasterFields and DetailFields properties

TDADataTable.ApplyUpdate method

Pascal

TDAMasterOption = (
);

File

uDADataTable

Links

Data Abstract Reference, See Also


See Also

TDADataTable.MasterOptions, MasterFields and DetailFields properties

TDADataTable.ApplyUpdate method


TDAParamType Enumeration

Data Abstract Reference	See Also

Specifies the directions available for TDAParams.

Value	Meaning
daptUnknown	Unknown or unspecified direction.
daptInput	The parameter will be passed into the command or stored procedure.
daptOutput	The parameter will be returned from the command or stored procedure.
daptInputOutput	The parameter will be passed in and back out of the command or stored procedure.
daptResult	The parameter will be returned from the command or stored procedure as result value.
See Also

TDAParam.ParamType property

Pascal

TDAParamType = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDAParam.ParamType property


TDAPoolBehaviour Enumeration

Data Abstract Reference	See Also

Specifies how the pool behaves when the maximum number of connections has been reached.

Value	Meaning
pbRaiseError	The call to NewConnection will fail with an exception.
pbWait	The call to NewConnection will wait until another connection is freed, and it will then return a connection.
pbIgnoreAndReturn	The call to NewConnection will return nil.
See Also

TDAConnectionManager.PoolBehaviour property

TDAConnectionManager.NewConnection method

Pascal

TDAPoolBehaviour = (
);

File

uDAClasses

Links

Data Abstract Reference, See Also


See Also

TDAConnectionManager.PoolBehaviour property

TDAConnectionManager.NewConnection method


TDAPoolTransactionBehaviour Enumeration

Data Abstract Reference	See Also

Specifies how the pool handles connections that are returned to the pool with an active transaction.

Value	Meaning
ptNone	No action will be taken.
ptRollback	The transaction will be rolled back, losing all changes (recommended).
ptCommit	The transaction will be committed, applying all changes to the underlying database.
See Also

TDAConnectionManager.PoolTransactionBehaviour property

Pascal

TDAPoolTransactionBehaviour = (
);

File

uDAClasses

Links

Data Abstract Reference, See Also


See Also

TDAConnectionManager.PoolTransactionBehaviour property


TDAProcessorOption Enumeration

Data Abstract Reference	See Also

Defines the individual options for the TDABusinessProcessor.ProcessorOptions property:

Value	Meaning
poAutoGenerateInsert	Generate automatic INSERT statements instead of using the InsertCommandName.
poAutoGenerateUpdate	Generate automatic UPDATE statements instead of using the UpdateCommandName.
poAutoGenerateDelete	Generate automatic DELETE statements instead of using the DeleteCommandName.
poAutoGenerateRefreshDataset	Generate automatic SELECT statements instead of using the RefreshDatasetName.
poPrepareCommands	Prepare commands against the back-end database for faster execution. See IDASQLCommand.Prepared for details.
poIgnoreStaticCommands	DEPRECATED AND UNDER REVIEW
poIgnoreRowsAffected	Disables the "no rows were affected by this update" error message.
See Also

TDABusinessProcessor.ProcessorOptions property

IDASQLCommand.Prepared property

Pascal

TDAProcessorOption = (
);

File

uDABusinessProcessor

Links

Data Abstract Reference, See Also


See Also

TDABusinessProcessor.ProcessorOptions property

IDASQLCommand.Prepared property


TDARemoteUpdatesOption Enumeration

Data Abstract Reference	See Also

Defines possible values for the RemoteUpdatesOptions of the TDADataTable.

Value	Meaning
ruoOnPost	Changes to records will automatically be applied to the server as they are posted. Enable this option to achieve behavior similar to single- or two-tier database applications, where posting a record in the user interface will directly apply the change to the back-end database. This basically triggers an automatic call to ApplyUpdates for each record change.
See Also

TDADataTable.StreamingOptions property

TDADataTable.ApplyUpdates method

Pascal

TDARemoteUpdatesOption = (
);

File

uDADataTable

Links

Data Abstract Reference, See Also


See Also

TDADataTable.StreamingOptions property

TDADataTable.ApplyUpdates method


TDASQLStatementType Enumeration

Data Abstract Reference	See Also

Specifies the type of statement represented by a TDAStatement.

Value	Meaning
stSQL	The statement's SQL property contains a script of SQL code to be executed on the server. This might include any valid SQL statements.
stStoredProcedure	The statement's SQL property contains the name of a stored procedure to be executed.

Note that a statement of type stSQL might still represent a stored procedure, if, for example, it contains an SQL "EXEC" command that executes the stored procedure. The value of this StatementType simply indicates how to interpret the value of the SQL property.

See Also

TDAStatement.StatementType and SQL properties

Pascal

TDASQLStatementType = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDAStatement.StatementType and SQL properties


TDAStreamingOption Enumeration

Data Abstract Reference	See Also

Defines possible values for the StreamingOptions of the TDADataTable.

Value	Meaning
soIgnoreStreamSchema	Any schema information sent from the server as part of the data packet will be ignored and the data table will maintain its predefined schema. If not present, schema information present in the data stream can override the configured field settings.
soDisableEventsWhileStreaming	The data table's notification events for data or row changes will not fire during streaming processes, while downloading new data or applying changes (default).
See Also

TDADataTable.StreamingOptions property

Pascal

TDAStreamingOption = (
);

File

uDADataTable

Links

Data Abstract Reference, See Also


See Also

TDADataTable.StreamingOptions property


TDAUpdateFailureBehavior Enumeration

Data Abstract Reference	See Also

Specifies how Data Abstract behaves when an error is encountered while processing updates

Value	Meaning
fbRaiseException	An exception will be raised, and the entire update process will be aborted.
fbLogAndContinue	The error will be logged to be sent back to the client, and processing for the remaining changes will continue.
fbIgnoreAndContinue	The error will be ignored to be sent back to the client, and processing for the remaining changes will continue. The client will not be notified of the failed update.
See Also

TDAUpdateRule.FailureBehavior property

Pascal

TDAUpdateFailureBehavior = (
);

File

uDAInterfaces

Links

Data Abstract Reference, See Also


See Also

TDAUpdateRule.FailureBehavior property


TDAUpdateMode Enumeration

Data Abstract Reference	See Also

Defines the different update modes available for the TDABusinessProcessor:

Value	Meaning
updWhereKeyOnly	Only the fields from the primary key (PK) of the data table will be used to locate records for UPDATEs and DELETEs.
updWhereAll	All fields defined for the data table will be used to locate records for UPDATEs and DELETEs.
updWhereKeyAndUserDefined	The fields from the primary key (PK) of the data table plus those listed in the business processor's UserUpdateFields property will be used to locate records for UPDATEs and DELETEs.
updWhereUserDefined	Only the fields listed in the business processor's UserUpdateFields property will be used to locate records for UPDATEs and DELETEs.
See Also

TDABusinessProcessor.UpdateMode property

Pascal

TDAUpdateMode = (
);

File

uDABusinessProcessor

Links

Data Abstract Reference, See Also


See Also

TDABusinessProcessor.UpdateMode property


TDAXmlDataStreamerOption Enumeration

Data Abstract Reference	See Also

Defines general options for streaming with the TDAXmlDataStreamer.

Value	Meaning
xaoUseDatasetXSLTs	When present, XSLT Transformations will be applied to data packets.
xaoUseDeltaXSLTs	When present, XSLT Transformations will be applied to delta packets.
See Also

TDAXmlDataStreamer.Options property

Pascal

TDAXmlDataStreamerOption = (
);

File

uDAXMLAdapter

Links

Data Abstract Reference, See Also


See Also

TDAXmlDataStreamer.Options property


TDAXMLRowOption Enumeration

Data Abstract Reference	See Also

Defines the individual options for streaming rows with the TDAXmlDataStreamer.

Value	Meaning
roCompressBlobs	When present, Blob values will be compressed using ZLib before being streamed into the XML.
See Also

TDAXmlDataStreamer.RowOptions property

Pascal

TDAXMLRowOption = (
);

File

uDAXMLAdapter

Links

Data Abstract Reference, See Also


See Also

TDAXmlDataStreamer.RowOptions property


TDAXMLSchemaOption Enumeration

Data Abstract Reference	See Also

Defines the individual options for streaming schema info with the TDAXmlDataStreamer.

Value	Meaning
soIncludeEmptyAttributes	When present, schema properties with empty values will be streamed as attributes with an empty value; else they will be omitted from the XML altogether.
See Also

TDAXmlDataStreamer.SchemaOptions property

Pascal

TDAXMLSchemaOption = (
);

File

uDAXMLAdapter

Links

Data Abstract Reference, See Also


See Also

TDAXmlDataStreamer.SchemaOptions property


Samples

See Also

Data Abstract for Delphi ships with a large number of samples, and more are added with each subsequent release.

These samples are provided in the \Samples subfolder of your Data Abstract install, where you will also find a Samples.html file that describes each individual sample in detail.

See Also

Samples.html in your "Data Abstract for Delphi\Samples" folder

Links

See Also


See Also

Samples.html in your "Data Abstract for Delphi\Samples" folder


Additional Information

Topics

Please make sure to visit the RemObjects Software website at remobjects.com, where up to date information on all our products is available.

RSS feeds are also provided, to help you stay informed about new articles and product news.

Links

Topics


Topics

Additional Information

Topics

FAQs

Frequently asked questions (FAQs) about our products are maintained on our website and are often extended and enhanced based on feedback we receive via our newsgroups and support team.

We maintain a single FAQ database containing items for all our products and you can reach the FAQ home page via: remobjects.com/devcenter/faq

The FAQ page allows you to filter by product or category and also offers a text search facility.

Online Articles

RemObjects Software provides an extensive set of online articles and other resources, covering all aspects of our products in varying degrees of detail, from non-technical whitepapers over introductory articles to in-depth architecture reviews for experienced users.

The complete set of RemObjects developer resources can be accessed via our Developer Center at remobjects.com/devcenter.

Getting Technical Support

For more information on getting technical support for RemObjects products, please refer to the RemObjects website at remobjects.com/support.

Our goal is to help create success for you and your organization by leveraging RemObjects’ industry-leading solutions. RemObjects Support provides world class technical support, and you can email our support team at support@remobjects.com should you have any technical issues.

Paid per-incident Premium Support is also available, please visit remobjects.com?premiumsupport for details.

Newsgroups

Support newsgroups are available via NNTP at news.remobjects.com: 	For .NET Products:

remobjects.public.dataabstract.net

remobjects.public.hydra.net

remobjects.public.chrome

remobjects.public.sdk.net

For Delphi Products:

remobjects.public.dataabstract.delphi

remobjects.public.hydra.delphi

remobjects.public.sdk.delphi

Other Useful Groups:

remobjects.public.binaries

remobjects.public.bugreports

remobjects.public.non-tech

remobjects.public.suggestions

Please visit www.remobjects.com?newsgroups for more up to date information on available newsgroups and assistance for setting up newsgroup access.


FAQs

Additional Information	See Also

Frequently asked questions (FAQs) about our products are maintained on our website and are often extended and enhanced based on feedback we receive via our newsgroups and support team.

We maintain a single FAQ database containing items for all our products and you can reach the FAQ home page via: remobjects.com/devcenter/faq

The FAQ page allows you to filter by product or category and also offers a text search facility.

Notes

If you need to refer to a numbered item, you can use a shortcut, e.g. remobjects.com?faq112 to directly access the FAQ in question.

See Also

Online Articles, Newsgroups and Getting Technical Support help topics

Links

Additional Information, See Also


See Also

Online Articles, Newsgroups and Getting Technical Support help topics


Online Articles

Additional Information	See Also

RemObjects Software provides an extensive set of online articles and other resources, covering all aspects of our products in varying degrees of detail, from non-technical whitepapers over introductory articles to in-depth architecture reviews for experienced users.

The complete set of RemObjects developer resources can be accessed via our Developer Center at remobjects.com/devcenter.

See Also

FAQs, Newsgroups and Getting Technical Support help topics

Links

Additional Information, See Also


See Also

FAQs, Newsgroups and Getting Technical Support help topics


Getting Technical Support

Additional Information	See Also

For more information on getting technical support for RemObjects products, please refer to the RemObjects website at remobjects.com/support.

Our goal is to help create success for you and your organization by leveraging RemObjects’ industry-leading solutions. RemObjects Support provides world class technical support, and you can email our support team at support@remobjects.com should you have any technical issues.

Paid per-incident Premium Support is also available, please visit remobjects.com?premiumsupport for details.

See Also

FAQs, Online Articles and Newsgroups help topics

Links

Additional Information, See Also


See Also

FAQs, Online Articles and Newsgroups help topics


Newsgroups

Additional Information	See Also

Support newsgroups are available via NNTP at news.remobjects.com: 	For .NET Products:

remobjects.public.dataabstract.net

remobjects.public.hydra.net

remobjects.public.chrome

remobjects.public.sdk.net

For Delphi Products:

remobjects.public.dataabstract.delphi

remobjects.public.hydra.delphi

remobjects.public.sdk.delphi

Other Useful Groups:

remobjects.public.binaries

remobjects.public.bugreports

remobjects.public.non-tech

remobjects.public.suggestions

Please visit www.remobjects.com?newsgroups for more up to date information on available newsgroups and assistance for setting up newsgroup access.

See Also

FAQs, Online Articles and Getting Technical Support help topics

Links

Additional Information, See Also


See Also

FAQs, Online Articles and Getting Technical Support help topics


Copyright Notice

RemObjects Data Abstract for Delphi Documentation

The Software as described in this online help system, is licensed under the software license agreement distributed with the product. The software may be used or copied only in accordance with the terms of its license.

RemObjects Data Abstract for Delphi is copyright © RemObjects Software, LLC, 2002-2007. All Rights reserved.

This help file is copyright © RemObjects Software, LLC, 2002-2007. All Rights reserved.

This help file was created using doc-o-matic. We'd like to thank toolsfactory and Markus Spoettl for their continuous support!

Please also visit our online developer center at remobjects.com/devcenter.

Copyright

No part of this help can be reproduced, stored in any retrieval system, copied or modified, transmitted in any form or by any electronic or mechanical means, including photocopying and recording for purposes other than the purchaser's personal use.

Microsoft, Windows, Visual Studio, Microsoft .NET, Internet Information Server and Personal Web Server are registered trademarks or trademarks of Microsoft Corporation.

All other brands and names mentioned in this help system are the properties of their respective owners.

RemObjects Software Trademarks

Chrome™, Data Abstract™, DebugServer™, DevCenter™, DevStudio™, EWF Server Pack™, Hydra™, Internet Pack™, Pascal Script™, RemObjects™, RemObjects Software™, RemObjects SDK™, The Infrastructure Company™ and Wolpertinger™ as well as their respective logos are trademarks or registered trademarks of RemObjects Software, LLC in the United States of America and World-Wide.

The absence of a name or logo in the above list does not constitute a waiver of any and all intellectual property rights that RemObjects Software has established in any of its product, feature, or service names or logos.

Copyright © RemObjects Software, LLC, 2002-2007. All rights reserved.