RemoveRecordsetNew (Recordset function)

From m204wiki
Revision as of 22:53, 22 February 2012 by JAL2 (talk | contribs) (→‎Usage notes)
Jump to navigation Jump to search

Create Recordset from all records in one Recordset that are not in another (Recordset class)


RemoveRecordsetNew "subtracts", from a Recordset object's records, the records in a second Recordset object, producing a new Recordset object that contains all the records in the first Recordset, but not the second. It does the same processing as RemoveRecordset, but it produces a new output Recordset and leaves the two input Recordsets unmodified.

Syntax

%outRecordset = recordset:RemoveRecordsetNew( recordset2)

Syntax terms

%outRecordset The Recordset object created by this method.
recordset A non-null Recordset object, which must have the same file context as %outRecordset.
recordset2 A non-null Recordset object, which must have the same file context as %outRecordset and the method object, recordset.

Usage notes

  • The RemoveRecordsetNew method is only available in Sirius Mods 7.1 and later.
  • The LockStrength and LoopLockStrength of the output Recordset object is the same as that of the method object, recordset.
  • If the recordset2 argument is null, the request is cancelled.
  • Since RemoveRecordsetNew never adds records to a Recordset, there are no lock strength requirements for the either method or input object.

Examples

  • In the following example, the result of one Find is used to eliminate records from the result of another Find.

    %arrears is object recordSet in file orders %bigCust is object recordSet in file orders %threaten is object recordSet in file orders find records to %arrears status = 'ARREARS' end find find records to %bigCust company ='TOXICO' end find %threaten = %arrears:removeRecordset(%bigCust)

  • RemoveRecordsetNew can be thought of as subtraction, AddRecordsetNew as an OR, and AndRecordsetNew as an AND. The missing basic logical operation is an exclusive OR, which is not implemented as a basic method because it is expected to be rarely needed. However, you can achieve such an exclusive OR operation with the provided methods, as in the following example:

    %first is object recordSet in foo %second is object recordSet in foo %xor is object recordSet in foo ... %xor = %first:addRecordsetNew(%second): - removeRecordset(%first:andRecordsetNew(%second))

    And %xor is now the exclusive OR of the original %first and %second.

See also