ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / Managing databases / HFSQL / HFSQL functions
  • 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
  • xBase/FoxFro
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
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 <Source>.Cross).
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 <Source>.Delete, the record is inserted in the list of deleted records and will be reused by <Source>.Add.
PHPOLE DBNative Connectors (Native Accesses) The deleted record is no longer visible in the iteration on the current item. This record will no longer be visible in iterations on other items if these iterations are reinitialized.


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.
Remark: To delete all records from a data file, use <Source>.DeleteAll.
Example
WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaPHPAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5
// Deletes the record #123
Customer.Delete(123)
// Delete the customer orders
Order.ReadSeekFirst(CustNum, ValCustNum)
WHILE Order.Found() = True
Order.Delete()
Order.ReadNext()
END
// Delete the customer orders
FOR EACH Order WHERE CustNum = CustNumVal
Order.Delete()
END
Syntax
<Result> = <Source>.Delete([<Record number> [, <Options>]])
<Result>: Boolean
  • 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, <Source>.Delete returns True.
<Source>: Type corresponding to the specified source
Name of HFSQL data file or view used.
<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 <Source>.RecNum.
OLE DBNative Connectors (Native Accesses) This parameter must correspond to the current record number (hCurrentRecNum constant).
Java Access by JDBC: This parameter must correspond to the current record number (hCurrentRecNum constant).
<Options>: Optional constant
Configures the integrity management performed on the deleted record.
hIgnoreIntegrityIgnores the integrity check for this operation, even if the automatic integrity check is enabled (<Connection variable>.SetIntegrity)
PHP This parameter is ignored.
Java Access by JDBC: This parameter is ignored.
Remarks
WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaExternal languagePHPAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5

Handling a deleted record

WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaExternal languagePHPAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5

Number of deleted records

<Source>.NbRec is used to find out the number of records deleted from the data file.
Remark: For backward compatibility with Hyper File 5.5, the H.NbDel variable can also be used to find out the number of deleted records.

Deleting a record from a query

Deleting a record from a query can be performed:
Regardless of the query execution mode (with or without the hWithFilter constant), <Source>.Delete can only be used on single-file queries.
Caution:
  • On data files not in HFSQL format, there is no need to specify the hModifyFile constant in <Source>.ExecuteQuery or <Source>.ExecuteSQLQuery: 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.
For more details, see Modifying the query content.
WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaExternal languagePHPAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5

Version of data file

If <Source>.Delete is successful, the data file version number is modified. This version number is returned by <Source>.Version.
WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaExternal languagePHPAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5

Size of the data file

The deletion of one or more records has no incidence on the total file size on disk. The locations left empty in the data files by the deletions will be re-used during the next additions of records (<Source>.Add). This feature is used to get better performance, the reduction of file size being costly in time.
However, if after many deletions it is necessary to reduce the size of a data file, it can be reindexed (via <Source>.Index, WDMap or the HFSQL Control Center).
WINDEVWEBDEV - Server codeUniversal Windows 10 AppiPhone/iPadJavaExternal languageAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5OLE DBNative Connectors (Native Accesses)

Deletion and lock

If a lock problem occurs when "deleting" a record (attempt to delete a record locked in write mode for example), the record is not deleted and HErrorLock returns True.
WINDEVWEBDEV - Server codeAjaxNative Connectors (Native Accesses)

xBase/FoxFro

<Source>.Delete and <Source>.Cross have the same effect: the record is crossed but it is not deleted. Therefore, the record can be re-enabled using <Source>.Modify. In this case, <Source>.State returns the hStateCrossed constant for a deleted record (instead of hStateDel).
To physically delete the crossed records, you must use <Source>.Index.
FoxPro files: The <Source>.Index function is not available
Component: wd290hf.dll
Minimum version required
  • Version 25
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 11/21/2023

Send a report | Local help