The following tables list the features available with a Recordset object opened with this provider. For more detailed information about Recordset behavior for your provider configuration, run the Supports method.
Availability of standard ADO 2.1 Recordset methods:
Method |
Supported? |
Comments |
AddNew |
Yes |
Batch adds are supported for current record only when using server-side cursors. |
Cancel |
No |
Asynchronous Recordset opens are not supported. |
CancelBatch |
Yes |
Batch update mode is supported for current record only when using server-side cursors. |
CancelUpdate |
Yes |
|
Clone |
Yes |
|
Close |
Yes |
|
CompareBookmarks |
Yes |
|
Delete |
Yes |
Batch deletes are supported for current record only when using server-side cursors. |
Find |
Yes |
Does a sequential search for the specified data in the current Recordset. Since the search is sequential, this method can take a long time to complete if the Recordset is large and the search condition results in few matches. Use the Seek method to perform a very fast search. |
GetRows |
Yes |
|
GetString |
Yes |
|
Move |
Yes |
When using server-side cursors, a Move method will move the current Recordset pointer via an Advantage Skip operation. If the number of records to Move is a large value (e.g., several hundreds or thousands of records) in a large table, this operation may be slow. To move to a specific record in a Recordset, use the Recordset.Bookmark property. |
MoveFirst |
Yes |
When using server-side cursors, a MoveFirst method will move the current Recordset pointer to the first record in the recordset via an Advantage Go Top operation. This operation should be very fast and efficient. |
MoveLast |
Yes |
When using server-side cursors, a MoveLast method will move the current Recordset pointer to the last record in the recordset via an Advantage Go Bottom operation. Unless this method causes an SQL static cursor to be dynamically populated, this operation should be very fast and efficient. |
MoveNext |
Yes |
When using server-side cursors, a MoveNext method will move the current Recordset pointer to the next record in the recordset via an Advantage Skip operation. This operation should be very fast and efficient. |
MovePrevious |
Yes |
When using server-side cursors, a MovePrevious method will move the current Recordset pointer to the previous record in the recordset via an Advantage Skip operation. This operation should be very fast and efficient. |
NextRecordset |
No |
Multiple Recordsets are not supported with server-side cursors. |
Open |
Yes |
Asynchronous opens are not supported. |
Requery |
Yes |
|
Resync |
Yes |
|
Save |
No |
Save functionality is not supported with server-side cursors. |
Seek |
Yes |
When using server-side cursors, a Seek method will search the index of the current Recordset to quickly locate the row that matches the specified value, and changes the current record position to that record. This method is only supported when the Recordset has been opened directly on a table (with a command type of adCmdTableDirect) or has been opened with an SQL query that results in a live cursor. This operation is performed via an Advantage Seek operation. This operation should be very fast and efficient. |
Supports |
Yes |
|
Update |
Yes |
|
UpdateBatch |
Yes |
Batch update mode supported for current record only when using server-side cursors. |
Availability of standard ADO 2.1 Recordset properties:
Property |
Availability |
Comments |
||||||||||||||||||
AbsolutePage |
read/write |
|
||||||||||||||||||
AbsolutePosition |
read/write |
|
||||||||||||||||||
ActiveCommand |
read-only |
|
||||||||||||||||||
ActiveConnection |
read/write |
|
||||||||||||||||||
BOF |
read-only |
|
||||||||||||||||||
Bookmark |
read/write |
When using server-side cursors, setting the Bookmark property will reposition the current Recordset pointer via an Advantage Go To operation. This operation is very fast and is the recommended means to move to a specific record in a Recordset, as opposed to using the Recordset.Move method, which can be slow. Setting the bookmark will position to the physical record number in the underlying Advantage table; it will not set the bookmark to a logical or virtual record position. With Advantage, it is not necessary to position to a record and get a bookmark before you can set the bookmark at some later time. In other words, you can perform a "go to" operation by setting the Bookmark property at any time. For example, Recordset.Bookmark = CDbl(5) will position the pointer to the 5th record in the underlying table. When using Visual Basic and performing a Go To operation by setting the Bookmark to a literal value, it is often best to use a literal value that is a double. When getting the Bookmark property and later setting the Bookmark property to that stored value, using a variant seems to work well. |
||||||||||||||||||
CacheSize |
read/write |
Corresponds to Advantage’s Read Ahead Record Caching. |
||||||||||||||||||
CursorLocation |
read/write |
Client cursors will use the ADO Client Cursor Engine. Use of Client cursors can allow for functionality such as disconnected Recordsets, but be aware that Client cursors can be very slow initially because every single record in the rowset/cursor is read over to the client when the rowset/cursor is first opened. |
||||||||||||||||||
CursorType |
read/write |
Server-side cursor types will be forward-only, dynamic, or static. If adOpenForwardOnly is specified as the cursor type, the Advantage OLE DB provider will use an aggressive read-ahead cache value that can improve performance when reading through the table. Forward-only cursors may be useful when reading through a table in a single pass for batch processing operations. Note that forward-only cursors may be edited, but this negates the benefits; your application should probably use a dynamic cursor if you plan to edit it. See Read-Ahead Record Caching for more information. If another cursor type is specified, the Advantage OLE DB provider will default to the type that matches the underlying rowset (either dynamic or static based on the SQL query used to specify the cursor). Please note that the default server type (if not specified) is forward-only. Some data grids such as the Microsoft ADO DataGrid require scrollable cursors and will not display a forward-only cursor. |
||||||||||||||||||
DataMember |
read/write |
|
||||||||||||||||||
DataSource |
read/write |
|
||||||||||||||||||
EditMode |
read-only |
|
||||||||||||||||||
EOF |
read-only |
|
||||||||||||||||||
Filter |
read/write |
The filter property can be used to apply filter conditions to an open recordset. It results in setting a server-side Advantage Optimized Filter. ADO processes the filter condition before sending it to the Advantage OLE DB Provider, therefore, the filter condition must adhere to the ADO specification. The following lists some of the rules for ADO filter strings.
lastname LIKE ‘Wi*’ This will find all records where the lastname field begins with the characters ‘Wi’. If the asterisks are at the beginning and end of the value, the search will be for values that contain the characters. lastname LIKE ‘*mit*’ This will find all records where the lastname field contains the character sequence ‘mit’.
entrytime = #January 21, 1985 2:36pm# entrytime = #1/21/1985 14:36:00# ADO provides for a wide range and flexibility in specifying dates and times. Refer to the ADO specification for details. The following lists some filter limitations specific to the Advantage OLE DB Provider.
lastname = ‘Smith’ or lastname LIKE ‘Sch*’ Advantage does not allow these two types of matching to be used at the same time in the same filter expression. They both result in the same Advantage operator (=) but use a different table-wide setting to control the type of string matching. The following expression is valid: lastname = ‘Smith’ or lastname LIKE ‘*ch*’ The Advantage operator that results from the LIKE operator in this case (containment) is different and does not require the table-wide setting. |
||||||||||||||||||
Index |
read/write |
When using server-side cursors, the Index property allows you to specify the currently active index order in which the Recordset is sorted. This property is only supported when the Recordset has been opened directly on a table (with a command type of adCmdTableDirect) or has been opened with an SQL query that results in a live cursor. This property will automatically be set to the default index specified in the Advantage Data Dictionary if a default index is specified. |
||||||||||||||||||
LockType |
read/write |
adLockBatchOptimistic indicates optimistic batch updates -- use this value to enter batch update mode with client-side cursors. adLockOptimistic indicates optimistic locking, record by record -- the provider uses optimistic locking, locking records only when you call the Update method. adLockPessimistic indicates pessimistic locking, record by record -- the provider does what is necessary to ensure successful editing of the records, usually by locking records at the data source immediately after editing. adLockReadOnly indicates read-only records -- you cannot alter the data. If the CursorLocation property is adUseClient (i.e., when using a client-side cursor), the ADO Client Cursor Engine handles all locking. Use adLockBatchOptimistic for batch mode updates, adLockOptimistic for immediate mode updates, and adLockReadOnly for read-only Recordsets. The adLockPessimistic setting is not supported if the CursorLocation property is set to adUseClient. If the CursorLocation property is adUseServer (i.e., when using a server-side cursor), Advantage itself handles all locking. Advantage supports read-only Recordsets and immediate mode updateable Recordsets with server-side cursors. If the LockType is specified as adLockReadOnly, a read-only Recordset will result. If the LockType is specified as adLockBatchOptimistic, adLockOptimistic, or adLockPessimistic, an immediate-mode updateable Recordset will result. After a Recordset has been opened using a server-side cursor, Advantage will return adLockReadOnly for read-only Recordsets, and adLockPessimistic for immediate-mode updateable Recordsets. |
||||||||||||||||||
MarshalOptions |
not available |
|
||||||||||||||||||
MaxRecords |
read-only |
Setting the MaxRecords is not supported. |
||||||||||||||||||
PageCount |
read-only |
|
||||||||||||||||||
PageSize |
read/write |
|
||||||||||||||||||
RecordCount |
read-only |
|
||||||||||||||||||
Sort |
read/write |
Supported with client cursors with ADO Client Cursor Engine. |
||||||||||||||||||
Source |
read/write |
|
||||||||||||||||||
State |
adStateClosed or adStateOpen only |
Asynchronous operations are not supported. |
||||||||||||||||||
Status |
read-only |
|
||||||||||||||||||
StayInSync |
read/write |
|
The Advantage OLE DB Provider supports both Batch and Immediate Update Modes with server-side cursors. Batch Update Mode is supported for the current record only when using server-side cursors. Thus, you can update multiple fields in a single record without each field update being flushed to the underlying database. But, a "batch" of record updates can consist of no more than 1 record. If a row has an update, insert, or deletion pending, and the current row position is changed, that updated/inserted/deleted row will be automatically flushed to the underlying database when the record position changes. Since a "batch" of record updates can consist of no more than one record, the CancelUpdate and a CancelBatch methods behave identically when in Batch Update Mode with server-side cursors. Batch update mode behaves as expected when using client-side cursors.