- Handling a deleted record
- Number of deleted records
- Deleting a record from a query
- Version of data file
- Size of the data file
- Deletion and lock
In french: HSupprime
Not available with this kind of connection
Deletes a record from a data file (query or view). The record is deleted logically and physically. It cannot be restored (unlike the records crossed by HCross
The following operations are performed:
- the record is deleted: the record is inactive and it is not referenced in the index anymore. The data is not kept.
- the indexes (corresponding to the record keys) are deleted from the index file.
- the memos associated with the record are deleted from the memo file.
After running HDelete
, the record is inserted in the list of deleted records and will be reused by HAdd
WINDEV, WINDEV Mobile and WEBDEV propose an automatic management of errors for the following types of errors: Duplicate error, integrity error, password error, modification conflict error and status error during modification conflict, lock error. For more details, see Assisted HFSQL error handling
: To delete all records from a data file, use HDeleteAll
// Delete the customer orders
HReadSeekFirst(Orders, CustNum, ValCustNum)
WHILE HFound() = True
// Delete the customer orders
FOR EACH Order where CustNum = CustNumVal
<Result> = HDelete([<Data file> [, <Record number> [, <Options>]]])
- True if the record was deleted,
- False if a problem occurred (locked record, etc. (see the special cases)). HErrorInfo is used to identify the error.
If the record to delete is already deleted, HDelete returns True.
<Data file>: Optional character string
Name of HFSQL data file or view used. If this parameter is an empty string (""), HDelete manipulates the last data file used by the last HFSQL function (function starting with "H").
<Record number>: Optional integer
Number of the record to delete. If this parameter is not specified (if it is equal to 0 or to the hCurrentRecNum constant), the current record will be deleted. However, the current record will remain the deleted record.
CAUTION: Do not confuse the record number with the automatic identifier associated with the record.
In most cases, these two numbers are not identical. The record number is returned by HRecNum
This parameter must correspond to the current record number (hCurrentRecNum
Access by JDBC: This parameter must correspond to the current record number (hCurrentRecNum
<Options>: Optional constant
Configures the integrity management performed on the deleted record.
|hIgnoreIntegrity||Ignores the integrity check for this operation, even if the automatic integrity check is enabled (HSetIntegrity)|
This parameter is ignored.
Access by JDBC: This parameter is ignored.
Handling a deleted record
- A deleted record will not be read:
- by iteration functions: HFirst, HLast, HNext, HPrevious, HReadFirst, HReadLast, HReadNext, HReadPrevious, HForward, HBackward.
- by the search functions: HSeekFirst, HReadSeekFirst, HSeekLast, HReadSeekLast.
- A deleted record can be read by HRead. Its content will be incomplete or inconsistent.
- The physical location of a deleted record can be immediately re-used by HAdd for example.
Deleting a record from a query
Deleting a record from a query can be performed:
- in the query result
- in the data files handled by the query (hModifyFile constant used in HExecuteQuery or HExecuteSQLQuery). In this case, the hWithFilter constant is automatically selected.
Regardless of the query execution mode (with or without the hWithFilter constant), HDelete can only be used on single-file queries.
- On data files not in HFSQL format, there is no need to specify the hModifyFile constant in HExecuteQuery or HExecuteSQLQuery: the data files taking part in the query are automatically modified when modifying the query result.
- Records cannot be deleted from a query that uses groups or aggregates.
- The management of integrity and duplicates is not performed during the operations on the multi-file queries: it is recommended to use transactions to avoid any problems.
have the same effect: the record is crossed but it is not deleted. Therefore, the record can be re-enabled using HModify
. In this case, HState
returns the hStateCrossed
constant for a deleted record (instead of hStateDel
To physically delete the crossed records, you must use HIndex
is not available
This page is also available for…