Use cWebBusinessProcess.pkg Use DataDict.pkg Use cWebReport.pkg Use Customer.DD Object oCustomerReport is a cWebBusinessProcess Set pbAllowDelete to False Set pbAllowSaveEdit to False Set pbAllowSaveNew to False Set pbVerboseErrors to True Set psDescription to "Customer Information Drill Down Report" Object Customer_DD is a Customer_DataDictionary Send DefineAllExtendedFields Property Number pnStartCustomer_Number Property Number pnStopCustomer_Number Procedure OnConstrain Number nStart nStop Date dStart dStop String sStart sStop Get pnStartCustomer_Number To nStart Get pnStopCustomer_Number To nStop If (nStart<>0 And nStop<>0) ; Constrain Customer.Customer_Number Between nStart And nStop Else If (nStart>0) ; Constrain Customer.Customer_Number Ge nStart Else If (nStop<0) ; Constrain Customer.Customer_Number Le nStop End_Procedure // OnConstrain End_Object // Customer_DD Set Main_DD to Customer_DD Object oReport is a cWebReport Procedure OnPageTop Send WriteHtmlTableBegin 'border="0" width="99%" Class="ReportTable"' Send WriteHtmlRowBegin Send WriteHtmlCellHeader 'Number' 'Class="Header" Align="right"' Send WriteHtmlCellHeader 'Customer Name' 'Class="Header" Align="left"' Send WriteHtmlCellHeader 'Phone' 'Class="Header" Align="left"' Send WriteHtmlCellHeader 'Balance' 'Class="Header" Align="right"' Send WriteHtmlCellHeader 'Status' 'Class="Header" Align="left"' Send WriteHtmlRowEnd End_Procedure // OnPageTop Procedure OnBody String sText sName sPhone sStatus Number nID nBalance Send WriteHtmlRowBegin Get ddValueEncode "Customer.Customer_Number" To nID Get ddValueEncode "Customer.Name" To sName Get ddValueEncode "Customer.Phone_Number" To sPhone Get ddValueEncode "Customer.Balance" To nBalance Get ddValueEncode "Customer.Status" To sStatus If (sStatus="Y") Move "Active" To sStatus Else Move "Inactive" To sStatus Get AddRowIdLink (FormatNumber(nId,0)) To sText Send WriteHtmlCell sText 'Class="Data" Align="right"' Get AddRowIdLink sName To sText Send WriteHtmlCell sText 'Class="Data" Align="left"' Send WriteHtmlCell sPhone 'Class="Data" Align="left"' Send WriteHtmlCell (FormatNumber(nBalance,2)) 'Class="Data" Align="right"' Send WriteHtmlCell sStatus 'Class="Data" Align="left"' Send WriteHtmlRowEnd End_Procedure // OnBody Procedure OnPageBottom Send WriteHtmlTableEnd End_Procedure // OnPageBottom Function RunCustomerReport Integer iIndex RowId riStart Integer iMax Returns RowId RowId riEnd Integer iEnd iStat Set piOrdering To iIndex Set piMaxCount To iMax Set piMaxCountBreakLevel To 0 Set priStartRowId To riStart Get DoRunReport To iStat Get priLastRowId To riEnd Function_Return riEnd End_Function // RunCustomerReport End_Object // oReport { Published = True } { Description = "" } Procedure SetHRefName String sName Set psHRefname Of oReport To sName End_Procedure // SetHRefName { Published = True } { Description = "" } Procedure SetCustomer_Number String sStart String sStop Handle hDD Get phMainDD To hDD Set pnStartCustomer_Number Of hDD To sStart Set pnStopCustomer_Number Of hDD To sStop End_Procedure // SetCustomer_Number { Published = True } { Description = "" } Function RunCustomerReport Integer iIndex string sStart Integer iMax Returns string Rowid riEnd Get RunCustomerReport Of oReport iIndex (DeserializeRowId(sStart)) iMax To riEnd Function_Return (SerializeRowid(riEnd)) End_Function // RunCustomerReport // Register WBO interfaces // Register standard interface, which registers, and thus gives us // web access to function CreateFindIndexCombo Send RegisterStandardInterface End_Object // oCustomerReport