rptfilter |
|
The rptfilter object is a data member of the pvxreport object interface, delegated to store and manipulate a data filter definition. One object is created for each filter. The pvxreport GetFilter( ) method can be used to retrieve the object handle for an rptfilter object, which allows access to all the object's methods and properties.
The following table lists the properties of the rptfilter object:
Property |
Description |
Value to be used for comparison in the condition test. A value can consist of a table element, parameter, calculated field, literal or formula. Examples of formulas are "LITERAL"+STRINGVAL$ or Balance*Tax. Some conditions use more than one comparison value. Indicate which CompareValue$ is being accessed by setting the ValNo property to the index number of the desired CompareValue$ property. Default is the first CompareValue$ until the ValNo index is otherwise set. | |
Code number (-1, 1-12) indicating the type of condition: (Code number -1 was added in PxPlus 2022.) | |
(Read Only) Contains a free-form PxPlus expression that can be evaluated to a 0/1 Boolean value. Example: InvoiceDate$>=StartDate$ AND InvoiceDate$<=EndDate$ (The Filter property was added in PxPlus 2022.) | |
IsCaseSensitive |
Boolean value (0/1) indicating whether the condition test should be case sensitive or not. |
Contains a string of memory file channel numbers used to access the memory files set up to process the IsAnyOf( ) method of the *rpt/pvxreport class. Each channel number is five characters long (e.g. 00054), and its position within the MemFiles$ string is based on the sequence number associated with the IsAnyOf( ) method. (The MemFiles$ property was added in PxPlus 2023.) | |
Index (1-8) to indicate which CompareValue$ property is being accessed. Valid indices are based on the type of condition. Default is 1 until otherwise set. | |
Variable$ |
Name of the table element, parameter or calculated field to be used in the condition test. This must start with an alpha character, optionally followed by alphanumeric, . (period) or _ (underscore) characters. Names of elements containing string values must be terminated by a $ character. Set to null if invalid. If the name of a string element is assigned, the IsCaseSensitive property is set to 1. |
The following table lists the methods of the rptfilter object:
Method |
Description | ||||||||
GetCompareValue$(idx) |
Returns the value of the CompareValue$ property whose index is given. idx - Index of CompareValue$ property. Assigned to ValNo property. Returns null if the index value is invalid. | ||||||||
GetCondition$( ) |
Returns the condition in the form of a PxPlus expression. Example: If the following properties are set … Variable=CompanyId$ … then the return value would be: CompanyId$=CompanyNumber$ Returns null if the information in the rptfilter object is invalid. | ||||||||
SetAnyOfValues(Seq,Values$,Type$,Case$) |
Create the memory file for an IsAnyOf( ) method reference based of the Values$, Type$ and Case$. The channel number for the memory file is added to the MemFiles$ property string based on the sequence value.
(The SetAnyOfValues( ) method was added in PxPlus 2023.) | ||||||||
SetCompareValue(idx,Val$) |
Assigns a value to the CompareValue$ property whose index is given.
Returns 1 if successful or 0 if the index value is invalid. | ||||||||
SetFilter( ) SetFilter(Expression$) |
Set the Filter property to a free-form filter consisting of a valid PxPlus expression that can be evaluated to a Boolean value (0/1). Sets ConditionCode to -1. Example: InvoiceDate$>=StartDate$ AND InvoiceDate$<=EndDate$ If no expression is specified, the Filter is set to null and ConditionCode is set to 0. |
This sample program creates the filter set and adds the filters to the filter set:
! invoicelist - Print a range of invoices
!
! This program prints a list of invoices, with an optional invoice range.
! It is a called program that accepts a report definition as the first argument
! and optional start and end invoice values as the second and third arguments.
!
! After loading the report, the program adds filters if the start and end
! values are supplied.
!
! Lastly, it generates the report to the Viewer.
!
enter ReportName$,StartAt$,EndAt$,err=*next
!
rpt=new("*rpt/pvxreport")
if Rpt'open(ReportName$)=0 \
then goto WrapUp
!
! Create the filter set
if StartAt$+EndAt$<>"" \
then Rpt'ClearFilters();
fs=Rpt'AddFilterSet()
! Now add the filters to the filter set
if StartAt$<>"" \
then fltr=fs'AddFilter();
fltr'Variable$="InvoiceNumber$";
fltr'ConditionCode=6;
fltr'IsCaseSensitive=0;
fltr'SetCompareValue(1,quo+StartAt$+quo)
if EndAt$<>"" \
then fltr=fs'AddFilter();
fltr'Variable$="InvoiceNumber$";
fltr'ConditionCode=5;
fltr'IsCaseSensitive=0;
fltr'SetCompareValue(1,quo+EndAt$+$FF$+quo)
!
! Now generate the report
Generate_Report:
open (hfn,err=WrapUp,opt="Normal;"+Rpt'GetPageSetup$())"*viewer*";
prt=lfo
Rpt'OutputPrint(prt)
Rpt'RunReport()
close (prt)
WrapUp: \
drop object Rpt
end