Release 10.1A: OpenEdge Data Management:
DataServer for Microsoft SQL Server

> ## FIND statements

> The DataServer fully supports the `FIND` `FIRST`, `CURRENT`, `LAST`, `PREV`, and `NEXT` statements for MSS data source tables that have unique indexes. If a table has no unique index, only the `FIND` `FIRST` and `FIND` `NEXT` statements are available for that table. The following section provides additional information about specific `FIND` statements.

> ##### FIND NEXT statement

> The `FIND` `NEXT` statement can generate different results with the DataServer when compared to the same statement executed against an OpenEdge database. A `FIND` `NEXT` statement refers to a previous `FIND` statement only if the `WHERE` clauses of each statement are identical. If the `WHERE` clauses are different, or if one of the statements does not have a `WHERE` clause, the `FIND` `NEXT` will behave like a `FIND` `FIRST` statement.

> ##### FIND PREV and FIND LAST statements

> Applications that use the `FIND` `PREV` or `FIND` `LAST` statements work on tables in a manner consistent with the OpenEdge database. The only exception occurs when the `FIND` `PREV` or `FIND` `LAST` statement fails. In OpenEdge, the cursor is located after the last record that was scanned. In the MSS data source, the cursor behaves as if the failed `FIND` had never occurred. To support these statements, a table must include support for the Progress `ROWID` function (through either a `PROGRESS_RECID` column or an indexed `NUMBER` column with unique values). See the "ROWID function" section for more information.

> For example, the procedure find.p accesses OpenEdge and MS SQL Server databases using the same `FIND` and `FIND` `PREV` statements in each case, as shown:

> find.p
>     /* This code accesses an OpenEdge database. */
>     FIND demo.customer WHERE demo.customer.cust-num = 3.
>     FIND PREV demo.customer.
>     DISPLAY demo.customer.cust-num
>       LABEL "PROGRESS DATABASE RESULT" WITH FRAME new-frame.

>     /* This code accesses an MSS data source. */
>     FIND mssdemo.customer WHERE mssdemo.customer.cust-num = 3.
>     FIND PREV mssdemo.customer.
>     DISPLAY mssdemo.customer.cust-num
>       LABEL "MSS DATA SOURCE RESULT" WITH COL 29.

> When you run `find.p` with an OpenEdge table and an MSS table, you get the following results (assuming that the database has records for customer numbers 1 through 4):

> If the `FIND` `PREV` statement fails, the cursor remains located after `customer.cust-num` `3` in the OpenEdge table, which was the last record scanned. In the data source table, the cursor is positioned at `cust-num` `2`. Failed finds do not affect cursor position in data source tables.

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095