Even though there is no designer for VPE reports especially column based reports can be created very quickly and can also be maintained rather easily
as an example lets walk through creating a simple customer report
the skeleton for a report object looks as follows
Object oColumnReport is a cszVpeColumnReport_V2
// main file is CUST ordered by index.1
Set Main_File to CUST.file_number
Set ordering to 1
Object oPageHeader is a cszVpePageHeaderSection
Set psPageTitle to "StarZen Technologies, Inc"
Set psPageSubtitle to "Column Report Sample V2"
Set piSectionHeight to 150
End_Object
End_Object
We create a simple object based on the cszVpeColumnReport class
We can set the main file and the ordering. The report class can either support database finds and constraints directly or via an attached DataDictionary object
In our example we will add constraints directly to the report object as well as a manual selection function
// Constraint
Procedure OnConstrain
String sIDTo sIDFrom
Get Value of oSelStart1 to sIDFrom
Get Value of oSelStop1 to sIDTo
Constrain CUST.NUM ge sIDFrom
If (trim(sIDTo)<>"") Constrain CUST.nUm ge sIDTo
End_Procedure
// use manual selection
Function Selection Returns Integer
Send DoUpdateStatusPanel ("Processing record#: "+String(CUST.NUM))
Function_Return RPT_OK
End_Function
the report class also has a built in status panel feature and we are updating the status panel from the selection function
Now on to define the columns. this works very similar to the way you define columns in dbgrids and dblists
Object oIDColumn is a cszVpeReportColumn
Set psCaption to "ID"
Set piWidth to 8
Function ColumnValue Returns String
Function_Return (trim(CUST.NUM))
End_Function
End_Object
Object oNameColumn is a cszVpeReportColumn
Set psCaption to "Name"
Set piWidth to 20
Function ColumnValue Returns String
Function_Return (trim(CUST.NAME))
End_Function
End_Object
Object oAddressColumn is a cszVpeReportColumn
Set psCaption to "Address"
Set piWidth to 20
Function ColumnValue Returns String
Function_Return (trim(CUST.ADDRESS1))
End_Function
End_Object
Object oCityColumn is a cszVpeReportColumn
Set psCaption to "City"
Set piWidth to 12
Function ColumnValue Returns String
Function_Return (trim(CUST.CITY))
End_Function
End_Object
Object oBalanceColumn is a cszVpeReportColumn
Set psCaption to "Balance"
Set piWidth to 18
Set piTextAlignment to VPE_ALIGN_RIGHT
Set pbTotal to True
Set pnTotalFormat to 8.2
Set pbTotalThousandsFormatting to True
Function ColumnValue Returns String
Function_Return (szFormatToDecimalsEx(cust.balance,10.2,True))
End_Function
End_Object
you simply define all the column objects setting properties. The report class supports hiding as well as reording columns at runtime and will adjust the report output automatically based on these changes
we can also define other sections for example a page header section
Object oPageHeader is a cszVpePageHeaderSection
Set psPageTitle to "StarZen Technologies, Inc"
Set psPageSubtitle to "Column Report Sample V2"
Set piSectionHeight to 150
End_Object
this is pretty much all there is to creating a simple column report
These VPE reports can be used in both DataFlex Desktop as well as WebApp applications