Stores the current context of a data file: current record, filter, pointers. This allows you to temporarily suspend the current process in order for the data file to be used somewhere else (to perform checks for example). The saved context can be restored by <Source>.RestorePosition
. Then, the main process can continue.
<Source>.SavePosition is used to save:
- the number of the record used,
- the different pointers in the index (the position in the index is saved for each key),
- the current filter. You will have to use the hRPFilter constant in <Source>.RestorePosition to restore the stored filter.
// Find a record
WHILE Customer.Found() = True
// Saves the current context
nPos = Customer.SavePosition(Name)
// Check a customer with another name
IF Customer.Found() = True THEN Counter = Counter + 1
// Restores the context
<Result> = <Source>.SavePosition([<Item>] [, <Options>])
- Number of the position that was saved,
- -1 if an error occurred.
<Source>: Type corresponding to the specified source
Name of the data file, view or query used. If this name is not specified, <Source>.SavePosition will use the last data file used by the last HFSQL function (function starting with "H").
<Item>: Optional character string
Name of the item used. If this parameter is not specified, <Source>.SavePosition saves the positions of all items being looped through.
The <Item> parameter will be ignored: the position will be saved for all items being looped through.
<Options>: Optional integer constant
Used to configure the backup:
Example for managing the positions in a data file
- form used to display a record and to loop through the data file according to a key. Another window is called to display the data as a table. Positions allow you to easily go back to desired record in the iteration.
- viewing a data file in a Table control. When selected, the record is displayed as a form, with the possibility of looping through forms. The position management allows you to display the Table control again while being properly positioned on the data file.
- The number of calls to <Source>.SavePosition is not limited.
- You have the ability to nest <Source>.SavePosition and <Source>.RestorePosition for the same data file.
- If the record pointed during the call to <Source>.SavePosition is deleted, <Source>.RestorePosition cannot be called anymore.
Repositioning by OLE DB and Native MySQL, DB2 and Informix Connectors
If the database or the status of the iteration (e.g., reinitialized) does not allow resetting the position directly on the record, the position is set using the cache of records read.
The following functions reinitialize the iteration:
This operating mode is the same in Java.
Business / UI classification: Business Logic