Visual Basic Concepts

RDO Compared to Microsoft Jet/DAO

Basically, you can use Remote Data Objects similarly to the way you use the Microsoft Jet database engine Data Access Objects (DAO), and the RemoteData control is similar to the Data control. With RDO, you can submit queries, create a result set or cursor, and process the results from the query using database-independent object-oriented code.

Using the RemoteData control, you can create a form containing the same bound controls recognized by the Data control and process a result set with little or no code.

You can take your existing applications that use DAO and the Data control and convert them to use RDO and the RemoteData control with a few changes. There are some differences, however, because RDO is implemented and designed for use with strictly relational databases. RDO has no query processor of its own; it depends on the data source to process all queries and create the result sets. The data objects themselves are built from the result sets and cursors returned by the ODBC driver.

It might be unnecessary to convert an existing DAO/Jet application over to RDO because of ODBCDirect, which routes DAO through RDO instead of Jet. If your application does not use the DAO ISAM objects and methods (like the table-type Recordset object and the Seek method) or other ISAM programming methodologies, you should be able to convert over to ODBCDirect with very few changes — even fewer than are required when converting to RDO.

For More Information   For more information about ODBCDirect, see "RDO Compared to Microsoft Jet ODBCDirect" and "Remote Data Access Using DAO and ODBCDirect" in "Using Data Access Objects"

The following table lists RDO 2.0 objects and their equivalent DAO/Jet objects.

Remote Data Objects and their DAO/Jet Equivalents

RDO object Equivalent DAO/Jet object
rdoEngine DBEngine
rdoError Error
rdoEnvironment Workspace
rdoConnection Database
rdoTable TableDef
Not Implemented Index
rdoResultset Recordset
Not implemented Table-type
Keyset-type Dynaset-type
Static-type (r/w) Snapshot-type (r/o)
Dynamic-type (none)
Forward-only – type Forward-only-type
(cursorless) (none)
rdoColumn Field
rdoQuery QueryDef
rdoParameter Parameter
Not Implemented Relation
Not Implemented Group
Not implemented User

Remote Data Objects refer to table rows instead of records and columns instead of fields — the generally accepted terminology for relational databases. The data returned from a query is in the form of result sets, which can contain zero or more data rows composed of one or more columns. Whereas DAO requires cursors to access data, RDO permits you to create a cursorless result set that has far fewer resource demands than a cursor.

Some DAO objects, methods, and properties are designed to implement and support the ISAM structure of Jet and installable ISAM databases. For example, you can use the Index object and the Seek method to manage ISAM indexes and locate rows based on those indexes. Because the RDO and relational databases manage indexes in an entirely different manner, those objects and methods are not needed.

DAO also supports the creation and modification of the database schema, referential integrity (RI), and security through DAO methods and properties. RDO does not support any type of RI, security, or schema modification because they are fully supported in the tools and utilities provided with the server systems.

You can still run RDO make-table queries or execute action queries that create, modify, or delete databases and tables using native SQL statements. You can also execute complex stored procedures that manage the database schema or perform maintenance operations that are not possible with DAO.