%
Set report_classfields = (CreateDictionary())
Function create_reportfield(ByVal name,ByVal var_type,ByVal interval,ByVal alias)
if bValue(var_type) then
if not IsEmpty(ArrayElement(report_classfields,var_type)) then
doAssignmentByRef create_reportfield,CreateClass(ArrayElement(report_classfields,var_type),3,name,interval,alias,Empty,Empty,Empty,Empty)
Exit Function
else
Response.End
end if
end if
End Function
'------ Class ReportField ------
Class ReportField
Public var_interval
Public var_name
Public var_alias
Public var_sqlname
Public var_start
Public var_caseSensitive
Public var_recordBasedRequest
Public var_rowsInSummary
Public var_rowsInHeader
Public var_viewFormat
Public var_orderBy
Public var_oldAlgorithm
Public Function init_ReportField_p3(ByVal name,ByVal interval,ByVal alias)
DoAssignmentByRef init_ReportField_p3,method_ReportField_ReportField(me,name,interval,alias)
End Function
Public Function getStringSql()
DoAssignmentByRef getStringSql,method_ReportField_getStringSql(me)
End Function
Public Function getFieldName_p2(ByVal fieldValue,ByVal data)
DoAssignmentByRef getFieldName_p2,method_ReportField_getFieldName(me,fieldValue,data)
End Function
Public Function getFieldName_p1(ByVal fieldValue)
DoAssignmentByRef getFieldName_p1,method_ReportField_getFieldName(me,fieldValue,null)
End Function
Public Function getSelectSql_p1(ByVal hasGrouping)
DoAssignmentByRef getSelectSql_p1,method_ReportField_getSelectSql(me,hasGrouping)
End Function
Public Function getSelectSql()
DoAssignmentByRef getSelectSql,method_ReportField_getSelectSql(me,false)
End Function
Public Function getGroupSql()
DoAssignmentByRef getGroupSql,method_ReportField_getGroupSql(me)
End Function
Public Function getOrderSql()
DoAssignmentByRef getOrderSql,method_ReportField_getOrderSql(me)
End Function
Public Function getWhereSql_p1(ByVal groups)
DoAssignmentByRef getWhereSql_p1,method_ReportField_getWhereSql(me,groups)
End Function
Public Function getGroup_p1(ByVal data)
DoAssignmentByRef getGroup_p1,method_ReportField_getGroup(me,data)
End Function
Public Function getKey_p1(ByVal data)
DoAssignmentByRef getKey_p1,method_ReportField_getKey(me,data)
End Function
Public Function setStart_p1(ByVal start)
DoAssignmentByRef setStart_p1,method_ReportField_setStart(me,start)
End Function
Public Function name()
DoAssignmentByRef name,method_ReportField_name(me)
End Function
Public Function alias()
DoAssignmentByRef alias,method_ReportField_alias(me)
End Function
Public Function overrideFormat()
DoAssignmentByRef overrideFormat,method_ReportField_overrideFormat(me)
End Function
Public Function setCaseSensitive_p1(ByVal cs)
DoAssignmentByRef setCaseSensitive_p1,method_ReportField_setCaseSensitive(me,cs)
End Function
Public Function cutNull_p2(ByRef range,ByVal checkEmty)
DoAssignmentByRef cutNull_p2,method_ReportField_cutNull(me,range,checkEmty)
End Function
Public Function cutNull_p1(ByRef range)
DoAssignmentByRef cutNull_p1,method_ReportField_cutNull(me,range,false)
End Function
Public Function getLtGt_p2(ByRef lt,ByRef gt)
DoAssignmentByRef getLtGt_p2,method_ReportField_getLtGt(me,lt,gt)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_interval", var_interval
setArrElement out,"var_name", var_name
setArrElement out,"var_alias", var_alias
setArrElement out,"var_sqlname", var_sqlname
setArrElement out,"var_start", var_start
setArrElement out,"var_caseSensitive", var_caseSensitive
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_rowsInSummary", var_rowsInSummary
setArrElement out,"var_rowsInHeader", var_rowsInHeader
setArrElement out,"var_viewFormat", var_viewFormat
setArrElement out,"var_orderBy", var_orderBy
setArrElement out,"var_oldAlgorithm", var_oldAlgorithm
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_interval, dict("var_interval")
DoAssignment var_name, dict("var_name")
DoAssignment var_alias, dict("var_alias")
DoAssignment var_sqlname, dict("var_sqlname")
DoAssignment var_start, dict("var_start")
DoAssignment var_caseSensitive, dict("var_caseSensitive")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_rowsInSummary, dict("var_rowsInSummary")
DoAssignment var_rowsInHeader, dict("var_rowsInHeader")
DoAssignment var_viewFormat, dict("var_viewFormat")
DoAssignment var_orderBy, dict("var_orderBy")
DoAssignment var_oldAlgorithm, dict("var_oldAlgorithm")
End Sub
' end serialize
End Class
' ReportField implementation
Function method_ReportField_ReportField(byref this_object,ByVal name,ByVal interval,ByVal alias)
this_object.var_interval = 0
this_object.var_name = ""
this_object.var_alias = ""
this_object.var_sqlname = ""
this_object.var_start = 0
this_object.var_caseSensitive = false
this_object.var_recordBasedRequest = false
this_object.var_rowsInSummary = 0
this_object.var_rowsInHeader = 0
this_object.var_viewFormat = ""
this_object.var_orderBy = "ASC"
this_object.var_oldAlgorithm = false
doClassAssignment this_object,"var_name",name
doClassAssignment this_object,"var_interval",interval
doClassAssignment this_object,"var_alias",alias
doClassAssignment this_object,"var_sqlname",alias
End Function
Function method_ReportField_getStringSql(byref this_object)
Response.End
End Function
Function method_ReportField_getFieldName(byref this_object,ByVal fieldValue,ByVal data)
Response.End
End Function
Function method_ReportField_getSelectSql(byref this_object,ByVal hasGrouping)
Dim this
method_ReportField_getSelectSql = CSmartStr(this_object.getStringSql()) & CSmartStr(IIF(this_object.alias()," as " & CSmartStr(cached_ffn(this_object.alias())),""))
Exit Function
End Function
Function method_ReportField_getGroupSql(byref this_object)
Dim this
doAssignmentByRef method_ReportField_getGroupSql,this_object.getStringSql()
Exit Function
End Function
Function method_ReportField_getOrderSql(byref this_object)
Dim this
method_ReportField_getOrderSql = ((CSmartStr(this_object.getStringSql()) & " ") & CSmartStr(this_object.var_orderBy)) & " "
Exit Function
End Function
Function method_ReportField_getWhereSql(byref this_object,ByVal groups)
Response.End
End Function
Function method_ReportField_getGroup(byref this_object,ByVal data)
Dim this
doAssignmentByRef method_ReportField_getGroup,ArrayElement(data,this_object.alias())
Exit Function
End Function
Function method_ReportField_getKey(byref this_object,ByVal data)
Dim this
doAssignmentByRef method_ReportField_getKey,ArrayElement(data,this_object.alias())
Exit Function
End Function
Function method_ReportField_setStart(byref this_object,ByVal start)
Dim this
doClassAssignment this_object,"var_start",start
doClassAssignment this_object,"var_sqlname",this_object.alias()
method_ReportField_setStart = CSmartDbl(start)+1
Exit Function
End Function
Function method_ReportField_name(byref this_object)
doAssignmentByRef method_ReportField_name,this_object.var_name
Exit Function
End Function
Function method_ReportField_alias(byref this_object)
method_ReportField_alias = CSmartStr(this_object.var_alias) & CSmartStr(this_object.var_start)
Exit Function
End Function
Function method_ReportField_overrideFormat(byref this_object)
method_ReportField_overrideFormat = false
Exit Function
End Function
Function method_ReportField_setCaseSensitive(byref this_object,ByVal cs)
doClassAssignment this_object,"var_caseSensitive",cs
End Function
Function method_ReportField_cutNull(byref this_object,ByRef range,ByVal checkEmty)
Dim ret,out,nCnt,b
ret = false
Set out = (CreateDictionary())
nCnt = 0
do while IsLess(nCnt,asp_count(range))
b = false
if IsNull(ArrayElement(range,nCnt)) then
b = true
ret = true
else
if bValue(checkEmty) and (not bValue(ArrayElement(range,nCnt)) or IsEqual(strcasecmp(ArrayElement(range,nCnt),"null"),0)) then
b = true
ret = true
end if
end if
if not bValue(b) then
setArrElement out,asp_count(out),ArrayElement(range,nCnt)
end if
nCnt = CSmartDbl(nCnt)+1
loop
doAssignment range,out
doAssignmentByRef method_ReportField_cutNull,ret
Exit Function
End Function
Function method_ReportField_getLtGt(byref this_object,ByRef lt,ByRef gt)
if not IsEqual(this_object.var_orderBy,"ASC") then
lt = " >= "
gt = " <= "
else
lt = " <= "
gt = " >= "
end if
End Function
setArrElement report_classfields,"numeric","ReportNumericField"
'------ Class ReportNumericField extends ReportField ------
Class ReportNumericField
Public var_interval
Public var_name
Public var_alias
Public var_sqlname
Public var_start
Public var_caseSensitive
Public var_recordBasedRequest
Public var_rowsInSummary
Public var_rowsInHeader
Public var_viewFormat
Public var_orderBy
Public var_oldAlgorithm
Public Function init_ReportNumericField_p3(ByVal name,ByVal interval,ByVal alias)
DoAssignmentByRef init_ReportNumericField_p3,method_ReportNumericField_ReportNumericField(me,name,interval,alias)
End Function
Public Function getStringSql()
DoAssignmentByRef getStringSql,method_ReportNumericField_getStringSql(me)
End Function
Public Function getFieldName_p2(ByVal fieldValue,ByVal data)
DoAssignmentByRef getFieldName_p2,method_ReportNumericField_getFieldName(me,fieldValue,data)
End Function
Public Function getKey_p1(ByVal data)
DoAssignmentByRef getKey_p1,method_ReportNumericField_getKey(me,data)
End Function
Public Function getWhereSql_p1(ByVal groups)
DoAssignmentByRef getWhereSql_p1,method_ReportNumericField_getWhereSql(me,groups)
End Function
Public Function getSelectSql_p1(ByVal hasGrouping)
DoAssignmentByRef getSelectSql_p1,method_ReportField_getSelectSql(me,hasGrouping)
End Function
Public Function getSelectSql()
DoAssignmentByRef getSelectSql,method_ReportField_getSelectSql(me,false)
End Function
Public Function getGroupSql()
DoAssignmentByRef getGroupSql,method_ReportField_getGroupSql(me)
End Function
Public Function getOrderSql()
DoAssignmentByRef getOrderSql,method_ReportField_getOrderSql(me)
End Function
Public Function getGroup_p1(ByVal data)
DoAssignmentByRef getGroup_p1,method_ReportField_getGroup(me,data)
End Function
Public Function setStart_p1(ByVal start)
DoAssignmentByRef setStart_p1,method_ReportField_setStart(me,start)
End Function
Public Function name()
DoAssignmentByRef name,method_ReportField_name(me)
End Function
Public Function alias()
DoAssignmentByRef alias,method_ReportField_alias(me)
End Function
Public Function overrideFormat()
DoAssignmentByRef overrideFormat,method_ReportField_overrideFormat(me)
End Function
Public Function setCaseSensitive_p1(ByVal cs)
DoAssignmentByRef setCaseSensitive_p1,method_ReportField_setCaseSensitive(me,cs)
End Function
Public Function cutNull_p2(ByRef range,ByVal checkEmty)
DoAssignmentByRef cutNull_p2,method_ReportField_cutNull(me,range,checkEmty)
End Function
Public Function cutNull_p1(ByRef range)
DoAssignmentByRef cutNull_p1,method_ReportField_cutNull(me,range,false)
End Function
Public Function getLtGt_p2(ByRef lt,ByRef gt)
DoAssignmentByRef getLtGt_p2,method_ReportField_getLtGt(me,lt,gt)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_interval", var_interval
setArrElement out,"var_name", var_name
setArrElement out,"var_alias", var_alias
setArrElement out,"var_sqlname", var_sqlname
setArrElement out,"var_start", var_start
setArrElement out,"var_caseSensitive", var_caseSensitive
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_rowsInSummary", var_rowsInSummary
setArrElement out,"var_rowsInHeader", var_rowsInHeader
setArrElement out,"var_viewFormat", var_viewFormat
setArrElement out,"var_orderBy", var_orderBy
setArrElement out,"var_oldAlgorithm", var_oldAlgorithm
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_interval, dict("var_interval")
DoAssignment var_name, dict("var_name")
DoAssignment var_alias, dict("var_alias")
DoAssignment var_sqlname, dict("var_sqlname")
DoAssignment var_start, dict("var_start")
DoAssignment var_caseSensitive, dict("var_caseSensitive")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_rowsInSummary, dict("var_rowsInSummary")
DoAssignment var_rowsInHeader, dict("var_rowsInHeader")
DoAssignment var_viewFormat, dict("var_viewFormat")
DoAssignment var_orderBy, dict("var_orderBy")
DoAssignment var_oldAlgorithm, dict("var_oldAlgorithm")
End Sub
' end serialize
End Class
' ReportNumericField implementation
Function method_ReportNumericField_ReportNumericField(byref this_object,ByVal name,ByVal interval,ByVal alias)
this_object.var_interval = 0
this_object.var_name = ""
this_object.var_alias = ""
this_object.var_sqlname = ""
this_object.var_start = 0
this_object.var_caseSensitive = false
this_object.var_recordBasedRequest = false
this_object.var_rowsInSummary = 0
this_object.var_rowsInHeader = 0
this_object.var_viewFormat = ""
this_object.var_orderBy = "ASC"
this_object.var_oldAlgorithm = false
method_ReportField_ReportField this_object,name,interval,alias
End Function
Function method_ReportNumericField_getStringSql(byref this_object)
Dim fname
doAssignment fname,IIF(this_object.var_oldAlgorithm,GetFullFieldName(this_object.var_name,""),cached_ffn(this_object.var_name))
if IsLess(0,this_object.var_interval) then
method_ReportNumericField_getStringSql = (((("floor(" & CSmartStr(fname)) & "/") & CSmartStr(this_object.var_interval)) & ")*") & CSmartStr(this_object.var_interval)
Exit Function
else
doAssignmentByRef method_ReportNumericField_getStringSql,fname
Exit Function
end if
End Function
Function method_ReportNumericField_getFieldName(byref this_object,ByVal fieldValue,ByVal data)
Dim value
doAssignment value,ArrayElement(data,IIF(this_object.var_recordBasedRequest,this_object.var_name,this_object.var_sqlname))
if IsNull(value) then
method_ReportNumericField_getFieldName = "NULL"
Exit Function
end if
if IsLess(0,this_object.var_interval) then
method_ReportNumericField_getFieldName = (CSmartStr(asp_intval(value)) & " - ") & CSmartStr(CSmartDbl(asp_intval(value))+CSmartDbl(this_object.var_interval))
Exit Function
else
doAssignmentByRef method_ReportNumericField_getFieldName,asp_intval(value)
Exit Function
end if
End Function
Function method_ReportNumericField_getKey(byref this_object,ByVal data)
if bValue(this_object.var_recordBasedRequest) then
if IsLess(0,this_object.var_interval) then
method_ReportNumericField_getKey = CSmartDbl(asp_intval(CSmartDbl(ArrayElement(data,this_object.var_name))/CSmartDbl(this_object.var_interval)))*CSmartDbl(this_object.var_interval)
Exit Function
else
doAssignmentByRef method_ReportNumericField_getKey,ArrayElement(data,this_object.var_name)
Exit Function
end if
else
doAssignmentByRef method_ReportNumericField_getKey,method_ReportField_getKey(this_object,data)
Exit Function
end if
End Function
Function method_ReportNumericField_getWhereSql(byref this_object,ByVal groups)
Dim ret,ssql,this,hasNull,lt,gt
ret = ""
doAssignmentByRef ssql,this_object.getStringSql()
doAssignmentByRef hasNull,this_object.cutNull_p1(groups)
if IsLess(0,asp_count(groups)) then
lt = ""
gt = ""
this_object.getLtGt_p2 lt,gt
ret = ((((((("(" & CSmartStr(ssql)) & CSmartStr(gt)) & CSmartStr(ArrayElement(groups,0))) & " AND ") & CSmartStr(ssql)) & CSmartStr(lt)) & CSmartStr(ArrayElement(groups,CSmartDbl(asp_count(groups))-1))) & ")"
end if
if bValue(hasNull) then
ret = CSmartStr(ret) & ((CSmartStr(IIF(ret," OR ","")) & CSmartStr(ssql)) & " IS NULL")
end if
doAssignmentByRef method_ReportNumericField_getWhereSql,IIF(ret,("(" & CSmartStr(ret)) & ")","")
Exit Function
End Function
setArrElement report_classfields,"char","ReportCharField"
'------ Class ReportCharField extends ReportField ------
Class ReportCharField
Public var_interval
Public var_name
Public var_alias
Public var_sqlname
Public var_start
Public var_caseSensitive
Public var_recordBasedRequest
Public var_rowsInSummary
Public var_rowsInHeader
Public var_viewFormat
Public var_orderBy
Public var_oldAlgorithm
Public Function init_ReportCharField_p3(ByVal name,ByVal interval,ByVal alias)
DoAssignmentByRef init_ReportCharField_p3,method_ReportCharField_ReportCharField(me,name,interval,alias)
End Function
Public Function getStringSql()
DoAssignmentByRef getStringSql,method_ReportCharField_getStringSql(me)
End Function
Public Function getFieldName_p2(ByVal fieldValue,ByVal data)
DoAssignmentByRef getFieldName_p2,method_ReportCharField_getFieldName(me,fieldValue,data)
End Function
Public Function getKey_p1(ByVal data)
DoAssignmentByRef getKey_p1,method_ReportCharField_getKey(me,data)
End Function
Public Function getWhereSql_p1(ByVal groups)
DoAssignmentByRef getWhereSql_p1,method_ReportCharField_getWhereSql(me,groups)
End Function
Public Function getSelectSql_p1(ByVal hasGrouping)
DoAssignmentByRef getSelectSql_p1,method_ReportField_getSelectSql(me,hasGrouping)
End Function
Public Function getSelectSql()
DoAssignmentByRef getSelectSql,method_ReportField_getSelectSql(me,false)
End Function
Public Function getGroupSql()
DoAssignmentByRef getGroupSql,method_ReportField_getGroupSql(me)
End Function
Public Function getOrderSql()
DoAssignmentByRef getOrderSql,method_ReportField_getOrderSql(me)
End Function
Public Function getGroup_p1(ByVal data)
DoAssignmentByRef getGroup_p1,method_ReportField_getGroup(me,data)
End Function
Public Function setStart_p1(ByVal start)
DoAssignmentByRef setStart_p1,method_ReportField_setStart(me,start)
End Function
Public Function name()
DoAssignmentByRef name,method_ReportField_name(me)
End Function
Public Function alias()
DoAssignmentByRef alias,method_ReportField_alias(me)
End Function
Public Function overrideFormat()
DoAssignmentByRef overrideFormat,method_ReportField_overrideFormat(me)
End Function
Public Function setCaseSensitive_p1(ByVal cs)
DoAssignmentByRef setCaseSensitive_p1,method_ReportField_setCaseSensitive(me,cs)
End Function
Public Function cutNull_p2(ByRef range,ByVal checkEmty)
DoAssignmentByRef cutNull_p2,method_ReportField_cutNull(me,range,checkEmty)
End Function
Public Function cutNull_p1(ByRef range)
DoAssignmentByRef cutNull_p1,method_ReportField_cutNull(me,range,false)
End Function
Public Function getLtGt_p2(ByRef lt,ByRef gt)
DoAssignmentByRef getLtGt_p2,method_ReportField_getLtGt(me,lt,gt)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_interval", var_interval
setArrElement out,"var_name", var_name
setArrElement out,"var_alias", var_alias
setArrElement out,"var_sqlname", var_sqlname
setArrElement out,"var_start", var_start
setArrElement out,"var_caseSensitive", var_caseSensitive
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_rowsInSummary", var_rowsInSummary
setArrElement out,"var_rowsInHeader", var_rowsInHeader
setArrElement out,"var_viewFormat", var_viewFormat
setArrElement out,"var_orderBy", var_orderBy
setArrElement out,"var_oldAlgorithm", var_oldAlgorithm
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_interval, dict("var_interval")
DoAssignment var_name, dict("var_name")
DoAssignment var_alias, dict("var_alias")
DoAssignment var_sqlname, dict("var_sqlname")
DoAssignment var_start, dict("var_start")
DoAssignment var_caseSensitive, dict("var_caseSensitive")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_rowsInSummary, dict("var_rowsInSummary")
DoAssignment var_rowsInHeader, dict("var_rowsInHeader")
DoAssignment var_viewFormat, dict("var_viewFormat")
DoAssignment var_orderBy, dict("var_orderBy")
DoAssignment var_oldAlgorithm, dict("var_oldAlgorithm")
End Sub
' end serialize
End Class
' ReportCharField implementation
Function method_ReportCharField_ReportCharField(byref this_object,ByVal name,ByVal interval,ByVal alias)
this_object.var_interval = 0
this_object.var_name = ""
this_object.var_alias = ""
this_object.var_sqlname = ""
this_object.var_start = 0
this_object.var_caseSensitive = false
this_object.var_recordBasedRequest = false
this_object.var_rowsInSummary = 0
this_object.var_rowsInHeader = 0
this_object.var_viewFormat = ""
this_object.var_orderBy = "ASC"
this_object.var_oldAlgorithm = false
method_ReportField_ReportField this_object,name,interval,alias
End Function
Function method_ReportCharField_getStringSql(byref this_object)
Dim fname
doAssignment fname,IIF(this_object.var_oldAlgorithm,GetFullFieldName(this_object.var_name,""),cached_ffn(this_object.var_name))
if IsLess(0,this_object.var_interval) then
method_ReportCharField_getStringSql = ((("substr(" & CSmartStr(fname)) & ", 1, ") & CSmartStr(this_object.var_interval)) & ")"
Exit Function
else
doAssignmentByRef method_ReportCharField_getStringSql,fname
Exit Function
end if
End Function
Function method_ReportCharField_getFieldName(byref this_object,ByVal fieldValue,ByVal data)
Dim value
doAssignment value,ArrayElement(data,IIF(this_object.var_recordBasedRequest,this_object.var_name,this_object.var_sqlname))
if IsNull(value) then
method_ReportCharField_getFieldName = "NULL"
Exit Function
end if
if IsLess(0,this_object.var_interval) then
doAssignmentByRef method_ReportCharField_getFieldName,asp_substr(value,0,this_object.var_interval)
Exit Function
else
doAssignmentByRef method_ReportCharField_getFieldName,value
Exit Function
end if
End Function
Function method_ReportCharField_getKey(byref this_object,ByVal data)
Dim this
if bValue(this_object.var_recordBasedRequest) then
if IsLess(0,this_object.var_interval) then
if bValue(this_object.var_caseSensitive) then
doAssignmentByRef method_ReportCharField_getKey,asp_substr(ArrayElement(data,this_object.var_name),0,this_object.var_interval)
Exit Function
else
doAssignmentByRef method_ReportCharField_getKey,asp_strtolower(asp_substr(ArrayElement(data,this_object.var_name),0,this_object.var_interval))
Exit Function
end if
else
if bValue(this_object.var_caseSensitive) then
doAssignmentByRef method_ReportCharField_getKey,ArrayElement(data,this_object.var_name)
Exit Function
else
doAssignmentByRef method_ReportCharField_getKey,asp_strtolower(ArrayElement(data,this_object.var_name))
Exit Function
end if
end if
else
if bValue(this_object.var_caseSensitive) then
doAssignmentByRef method_ReportCharField_getKey,ArrayElement(data,this_object.alias())
Exit Function
else
doAssignmentByRef method_ReportCharField_getKey,asp_strtolower(ArrayElement(data,this_object.alias()))
Exit Function
end if
end if
End Function
Function method_ReportCharField_getWhereSql(byref this_object,ByVal groups)
Dim ret,ssql,this,hasNull,gr,g,lt,gt
ret = ""
doAssignmentByRef ssql,this_object.getStringSql()
doAssignmentByRef hasNull,this_object.cutNull_p1(groups)
if IsLess(0,asp_count(groups)) then
Set gr = (CreateDictionary())
GetCollectionBounds groups,c_reportlib_loopIdx3,c_reportlib_loopMax3
do while c_reportlib_loopIdx3<=c_reportlib_loopMax3
c_reportlib_arrKey3 = GetCollectionKey(groups,c_reportlib_loopIdx3)
doAssignment g,ArrayElement(groups,c_reportlib_arrKey3)
setArrElement gr,asp_count(gr),("'" & CSmartStr(g)) & "'"
c_reportlib_loopIdx3=c_reportlib_loopIdx3+1
loop
lt = ""
gt = ""
this_object.getLtGt_p2 lt,gt
ret = ((((((((("(" & CSmartStr(ssql)) & CSmartStr(gt)) & "'") & CSmartStr(db_addslashes(ArrayElement(groups,0)))) & "' AND ") & CSmartStr(ssql)) & CSmartStr(lt)) & "'") & CSmartStr(db_addslashes(ArrayElement(groups,CSmartDbl(asp_count(groups))-1)))) & "')"
end if
if bValue(hasNull) then
ret = CSmartStr(ret) & ((CSmartStr(IIF(ret," OR ","")) & CSmartStr(ssql)) & " IS NULL")
ret = CSmartStr(ret) & ((" OR " & CSmartStr(ssql)) & "=''")
end if
doAssignmentByRef method_ReportCharField_getWhereSql,IIF(ret,("(" & CSmartStr(ret)) & ")","")
Exit Function
End Function
setArrElement report_classfields,"date","ReportDateField"
'------ Class ReportDateField extends ReportField ------
Class ReportDateField
Public var_interval
Public var_name
Public var_alias
Public var_sqlname
Public var_start
Public var_caseSensitive
Public var_recordBasedRequest
Public var_rowsInSummary
Public var_rowsInHeader
Public var_viewFormat
Public var_orderBy
Public var_oldAlgorithm
Public Function init_ReportDateField_p3(ByVal name,ByVal interval,ByVal alias)
DoAssignmentByRef init_ReportDateField_p3,method_ReportDateField_ReportDateField(me,name,interval,alias)
End Function
Public Function setStart_p1(ByVal start)
DoAssignmentByRef setStart_p1,method_ReportDateField_setStart(me,start)
End Function
Public Function getSqlList_p1(ByVal all)
DoAssignmentByRef getSqlList_p1,method_ReportDateField_getSqlList(me,all)
End Function
Public Function getSqlList()
DoAssignmentByRef getSqlList,method_ReportDateField_getSqlList(me,true)
End Function
Public Function getSelectSql_p1(ByVal hasGrouping)
DoAssignmentByRef getSelectSql_p1,method_ReportDateField_getSelectSql(me,hasGrouping)
End Function
Public Function getGroupSql()
DoAssignmentByRef getGroupSql,method_ReportDateField_getGroupSql(me)
End Function
Public Function getOrderSql()
DoAssignmentByRef getOrderSql,method_ReportDateField_getOrderSql(me)
End Function
Public Function getWhereSql_p1(ByVal groups)
DoAssignmentByRef getWhereSql_p1,method_ReportDateField_getWhereSql(me,groups)
End Function
Public Function getFieldName_p2(ByVal fieldValue,ByVal data)
DoAssignmentByRef getFieldName_p2,method_ReportDateField_getFieldName(me,fieldValue,data)
End Function
Public Function getGroup_p1(ByVal data)
DoAssignmentByRef getGroup_p1,method_ReportDateField_getGroup(me,data)
End Function
Public Function getKey_p1(ByVal data)
DoAssignmentByRef getKey_p1,method_ReportDateField_getKey(me,data)
End Function
Public Function overrideFormat()
DoAssignmentByRef overrideFormat,method_ReportDateField_overrideFormat(me)
End Function
Public Function cutNull_p2(ByRef range,ByVal checkEmpty)
DoAssignmentByRef cutNull_p2,method_ReportDateField_cutNull(me,range,checkEmpty)
End Function
Public Function cutNull_p1(ByRef range)
DoAssignmentByRef cutNull_p1,method_ReportDateField_cutNull(me,range,false)
End Function
Public Function getStringSql()
DoAssignmentByRef getStringSql,method_ReportField_getStringSql(me)
End Function
Public Function name()
DoAssignmentByRef name,method_ReportField_name(me)
End Function
Public Function alias()
DoAssignmentByRef alias,method_ReportField_alias(me)
End Function
Public Function setCaseSensitive_p1(ByVal cs)
DoAssignmentByRef setCaseSensitive_p1,method_ReportField_setCaseSensitive(me,cs)
End Function
Public Function getLtGt_p2(ByRef lt,ByRef gt)
DoAssignmentByRef getLtGt_p2,method_ReportField_getLtGt(me,lt,gt)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_interval", var_interval
setArrElement out,"var_name", var_name
setArrElement out,"var_alias", var_alias
setArrElement out,"var_sqlname", var_sqlname
setArrElement out,"var_start", var_start
setArrElement out,"var_caseSensitive", var_caseSensitive
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_rowsInSummary", var_rowsInSummary
setArrElement out,"var_rowsInHeader", var_rowsInHeader
setArrElement out,"var_viewFormat", var_viewFormat
setArrElement out,"var_orderBy", var_orderBy
setArrElement out,"var_oldAlgorithm", var_oldAlgorithm
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_interval, dict("var_interval")
DoAssignment var_name, dict("var_name")
DoAssignment var_alias, dict("var_alias")
DoAssignment var_sqlname, dict("var_sqlname")
DoAssignment var_start, dict("var_start")
DoAssignment var_caseSensitive, dict("var_caseSensitive")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_rowsInSummary, dict("var_rowsInSummary")
DoAssignment var_rowsInHeader, dict("var_rowsInHeader")
DoAssignment var_viewFormat, dict("var_viewFormat")
DoAssignment var_orderBy, dict("var_orderBy")
DoAssignment var_oldAlgorithm, dict("var_oldAlgorithm")
End Sub
' end serialize
End Class
' ReportDateField implementation
Function method_ReportDateField_ReportDateField(byref this_object,ByVal name,ByVal interval,ByVal alias)
this_object.var_interval = 0
this_object.var_name = ""
this_object.var_alias = ""
this_object.var_sqlname = ""
this_object.var_start = 0
this_object.var_caseSensitive = false
this_object.var_recordBasedRequest = false
this_object.var_rowsInSummary = 0
this_object.var_rowsInHeader = 0
this_object.var_viewFormat = ""
this_object.var_orderBy = "ASC"
this_object.var_oldAlgorithm = false
method_ReportField_ReportField this_object,name,interval,alias
End Function
Function method_ReportDateField_setStart(byref this_object,ByVal start)
Dim this
doClassAssignment this_object,"var_start",start
if IsEqual(this_object.var_interval,0) then
doClassAssignment this_object,"var_sqlname",this_object.alias()
else
this_object.var_sqlname = CSmartStr(this_object.alias()) & "MIN"
end if
method_ReportDateField_setStart = CSmartDbl(start)+CSmartDbl(IIF(IsLess(0,this_object.var_interval),this_object.var_interval,1))
Exit Function
End Function
Function method_ReportDateField_getSqlList(byref this_object,ByVal all)
Dim grp,fname,symbols,idx
Set grp = (CreateDictionary())
doAssignment fname,IIF(this_object.var_oldAlgorithm,GetFullFieldName(this_object.var_name,""),cached_ffn(this_object.var_name))
if bValue(all) then
Set symbols = (CreateDictionary7(Empty,CreateDictionary3(Empty,"YEAR(",Empty,")",Empty,-1),Empty,CreateDictionary3(Empty,"QUARTER(",Empty,")",Empty,0),Empty,CreateDictionary3(Empty,"MONTH(",Empty,")",Empty,0),Empty,CreateDictionary3(Empty,"WEEK(",Empty,")",Empty,0),Empty,CreateDictionary3(Empty,"DATE(",Empty,")",Empty,-1),Empty,CreateDictionary3(Empty,"HOUR(",Empty,")",Empty,4),Empty,CreateDictionary3(Empty,"MINUTE(",Empty,")",Empty,5)))
idx = CSmartDbl(this_object.var_interval)-1
do
asp_array_unshift grp,(CSmartStr(ArrayElement(ArrayElement(symbols,idx),0)) & CSmartStr(cached_ffn(this_object.var_name))) & CSmartStr(ArrayElement(ArrayElement(symbols,idx),1))
doAssignment idx,ArrayElement(ArrayElement(symbols,idx),2)
loop while IsLessOrEqual(0,idx)
end if
doAssignmentByRef method_ReportDateField_getSqlList,grp
Exit Function
End Function
Function method_ReportDateField_getSelectSql(byref this_object,ByVal hasGrouping)
Dim fname,this,grp,nCnt
doAssignment fname,IIF(this_object.var_oldAlgorithm,GetFullFieldName(this_object.var_name,""),cached_ffn(this_object.var_name))
if IsEqual(this_object.var_interval,0) then
method_ReportDateField_getSelectSql = (CSmartStr(fname) & " as ") & CSmartStr(cached_ffn(this_object.alias()))
Exit Function
else
doAssignmentByRef grp,this_object.getSqlList()
nCnt = 0
do while IsLess(nCnt,asp_count(grp))
setArrElement grp,nCnt,CSmartStr(ArrayElement(grp,nCnt)) & (" as " & CSmartStr(cached_ffn(CSmartStr(this_object.var_alias) & CSmartStr(CSmartDbl(nCnt)+CSmartDbl(this_object.var_start)))))
nCnt = CSmartDbl(nCnt)+1
loop
if bValue(hasGrouping) then
setArrElement grp,asp_count(grp),(("MIN(" & CSmartStr(fname)) & ") as ") & CSmartStr(cached_ffn(CSmartStr(this_object.alias()) & "MIN"))
setArrElement grp,asp_count(grp),(("MAX(" & CSmartStr(fname)) & ") as ") & CSmartStr(cached_ffn(CSmartStr(this_object.alias()) & "MAX"))
else
setArrElement grp,asp_count(grp),(CSmartStr(fname) & " as ") & CSmartStr(cached_ffn(CSmartStr(this_object.alias()) & "MIN"))
end if
doAssignmentByRef method_ReportDateField_getSelectSql,asp_join(", ",grp)
Exit Function
end if
End Function
Function method_ReportDateField_getGroupSql(byref this_object)
Dim grp,this
if IsEqual(this_object.var_interval,0) then
doAssignmentByRef method_ReportDateField_getGroupSql,cached_ffn(this_object.var_name)
Exit Function
else
doAssignmentByRef grp,this_object.getSqlList()
doAssignmentByRef method_ReportDateField_getGroupSql,asp_join(", ",grp)
Exit Function
end if
End Function
Function method_ReportDateField_getOrderSql(byref this_object)
Dim fname,grp,this,newgrp,g
if IsEqual(this_object.var_interval,0) then
doAssignment fname,IIF(this_object.var_oldAlgorithm,GetFullFieldName(this_object.var_name,""),cached_ffn(this_object.var_name))
method_ReportDateField_getOrderSql = ((CSmartStr(fname) & " ") & CSmartStr(this_object.var_orderBy)) & " "
Exit Function
else
doAssignmentByRef grp,this_object.getSqlList()
Set newgrp = (CreateDictionary())
GetCollectionBounds grp,c_reportlib_loopIdx6,c_reportlib_loopMax6
do while c_reportlib_loopIdx6<=c_reportlib_loopMax6
c_reportlib_arrKey6 = GetCollectionKey(grp,c_reportlib_loopIdx6)
doAssignment g,ArrayElement(grp,c_reportlib_arrKey6)
setArrElement newgrp,asp_count(newgrp),((CSmartStr(g) & " ") & CSmartStr(this_object.var_orderBy)) & " "
c_reportlib_loopIdx6=c_reportlib_loopIdx6+1
loop
doAssignmentByRef method_ReportDateField_getOrderSql,asp_join(", ",newgrp)
Exit Function
end if
End Function
Function method_ReportDateField_getWhereSql(byref this_object,ByVal groups)
Dim ret,hasNull,this,lt,gt
ret = ""
doAssignmentByRef hasNull,this_object.cutNull_p2(groups,true)
if IsLess(0,asp_count(groups)) then
lt = ""
gt = ""
if IsEqual(this_object.var_interval,0) then
this_object.getLtGt_p2 lt,gt
ret = ((((((((((("(" & CSmartStr(cached_ffn(this_object.var_name))) & " ") & CSmartStr(gt)) & " ") & CSmartStr(db_datequotes(ArrayElement(groups,0)))) & " AND ") & CSmartStr(cached_ffn(this_object.var_name))) & " ") & CSmartStr(lt)) & " ") & CSmartStr(db_datequotes(ArrayElement(groups,CSmartDbl(asp_count(groups))-1)))) & ")"
else
if IsLessOrEqual(ArrayElement(ArrayElement(groups,0),"MIN"),ArrayElement(ArrayElement(groups,CSmartDbl(asp_count(groups))-1),"MAX")) then
ret = ((((((("(" & CSmartStr(cached_ffn(this_object.var_name))) & " >= ") & CSmartStr(db_datequotes(ArrayElement(ArrayElement(groups,0),"MIN")))) & " AND ") & CSmartStr(cached_ffn(this_object.var_name))) & " <= ") & CSmartStr(db_datequotes(ArrayElement(ArrayElement(groups,CSmartDbl(asp_count(groups))-1),"MAX")))) & ")"
else
ret = ((((((("(" & CSmartStr(cached_ffn(this_object.var_name))) & " <= ") & CSmartStr(db_datequotes(ArrayElement(ArrayElement(groups,0),"MAX")))) & " AND ") & CSmartStr(cached_ffn(this_object.var_name))) & " >= ") & CSmartStr(db_datequotes(ArrayElement(ArrayElement(groups,CSmartDbl(asp_count(groups))-1),"MIN")))) & ")"
end if
end if
end if
if bValue(hasNull) then
ret = CSmartStr(ret) & ((CSmartStr(IIF(ret," OR ","")) & CSmartStr(cached_ffn(this_object.var_name))) & " IS NULL ")
end if
doAssignmentByRef method_ReportDateField_getWhereSql,IIF(ret,("(" & CSmartStr(ret)) & ")","")
Exit Function
End Function
Function method_ReportDateField_getFieldName(byref this_object,ByVal fieldValue,ByVal data)
Dim value,date
doAssignment value,ArrayElement(data,IIF(this_object.var_recordBasedRequest,this_object.var_name,this_object.var_sqlname))
if (IsNull(value) or not bValue(value)) or IsEqual(strcasecmp(value,"null"),0) then
method_ReportDateField_getFieldName = "NULL"
Exit Function
end if
if IsEqual(this_object.var_interval,0) then
if bValue(this_object.var_viewFormat) then
doAssignmentByRef method_ReportDateField_getFieldName,GetDataInt(value,CreateDictionary1(this_object.var_name,value),this_object.var_name,this_object.var_viewFormat)
Exit Function
else
doAssignmentByRef date,db2time(value)
doAssignmentByRef method_ReportDateField_getFieldName,str_format_datetime(date)
Exit Function
end if
end if
do
If IsEqual(this_object.var_interval,1) then
doAssignmentByRef date,cached_db2time(value)
doAssignmentByRef method_ReportDateField_getFieldName,ArrayElement(date,0)
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) then
doAssignmentByRef date,cached_db2time(value)
method_ReportDateField_getFieldName = (CSmartStr(ArrayElement(date,0)) & "/Q") & CSmartStr(asp_intval(CSmartDbl(ArrayElement(date,1))/3))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) then
doAssignmentByRef date,cached_db2time(value)
method_ReportDateField_getFieldName = (CSmartStr(ArrayElement(locale_info,"LOCALE_SABBREVMONTHNAME" & CSmartStr(ArrayElement(date,1)))) & " ") & CSmartStr(ArrayElement(date,0))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) then
doAssignmentByRef method_ReportDateField_getFieldName,cached_formatweekstart(value)
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) then
doAssignmentByRef date,cached_db2time(value)
doAssignmentByRef method_ReportDateField_getFieldName,format_shortdate(date)
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) or IsEqual(this_object.var_interval,6) then
doAssignmentByRef date,db2time(value)
setArrElement date,4,0
setArrElement date,5,0
doAssignmentByRef method_ReportDateField_getFieldName,str_format_datetime(date)
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) or IsEqual(this_object.var_interval,6) or IsEqual(this_object.var_interval,7) then
doAssignmentByRef date,db2time(value)
setArrElement date,5,0
doAssignmentByRef method_ReportDateField_getFieldName,str_format_datetime(date)
Exit Function
End If
Loop While false
End Function
Function method_ReportDateField_getGroup(byref this_object,ByVal data)
Dim this
if IsEqual(this_object.var_interval,0) then
doAssignmentByRef method_ReportDateField_getGroup,ArrayElement(data,this_object.alias())
Exit Function
else
if IsNull(ArrayElement(data,CSmartStr(this_object.alias()) & "MIN")) or IsNull(ArrayElement(data,CSmartStr(this_object.alias()) & "MAX")) then
method_ReportDateField_getGroup = null
Exit Function
else
doAssignmentByRef method_ReportDateField_getGroup,CreateDictionary2("MIN",ArrayElement(data,CSmartStr(this_object.alias()) & "MIN"),"MAX",ArrayElement(data,CSmartStr(this_object.alias()) & "MAX"))
Exit Function
end if
end if
End Function
Function method_ReportDateField_getKey(byref this_object,ByVal data)
Dim this,key,nCnt,strdate,date,start
if not bValue(this_object.var_recordBasedRequest) then
if IsEqual(this_object.var_interval,0) then
doAssignmentByRef method_ReportDateField_getKey,ArrayElement(data,this_object.alias())
Exit Function
else
Set key = (CreateDictionary())
doAssignment nCnt,this_object.var_start
do while IsLess(nCnt,CSmartDbl(this_object.var_interval)+CSmartDbl(this_object.var_start))
setArrElement key,asp_count(key),ArrayElement(data,CSmartStr(this_object.var_alias) & CSmartStr(nCnt))
nCnt = CSmartDbl(nCnt)+1
loop
doAssignmentByRef method_ReportDateField_getKey,asp_join("-",key)
Exit Function
end if
else
doAssignment strdate,ArrayElement(data,this_object.var_name)
if IsNull(strdate) then
method_ReportDateField_getKey = "NULL"
Exit Function
end if
if IsEqual(this_object.var_interval,0) then
doAssignmentByRef method_ReportDateField_getKey,strdate
Exit Function
else
do
If IsEqual(this_object.var_interval,1) then
doAssignmentByRef date,cached_db2time(strdate)
doAssignmentByRef method_ReportDateField_getKey,ArrayElement(date,0)
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) then
doAssignmentByRef date,cached_db2time(strdate)
method_ReportDateField_getKey = (CSmartStr(ArrayElement(date,0)) & "-") & CSmartStr(asp_intval(CSmartDbl(ArrayElement(date,1))/3))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) then
doAssignmentByRef date,cached_db2time(strdate)
method_ReportDateField_getKey = (CSmartStr(ArrayElement(date,0)) & "-") & CSmartStr(ArrayElement(date,1))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) then
doAssignmentByRef start,cached_getweekstart(strdate)
method_ReportDateField_getKey = (((CSmartStr(ArrayElement(start,0)) & "-") & CSmartStr(ArrayElement(start,1))) & "-") & CSmartStr(ArrayElement(start,2))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) then
doAssignmentByRef date,cached_db2time(strdate)
method_ReportDateField_getKey = (((CSmartStr(ArrayElement(date,0)) & "-") & CSmartStr(ArrayElement(date,1))) & "-") & CSmartStr(ArrayElement(date,2))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) or IsEqual(this_object.var_interval,6) then
doAssignmentByRef date,db2time(strdate)
method_ReportDateField_getKey = (((((CSmartStr(ArrayElement(date,0)) & "-") & CSmartStr(ArrayElement(date,1))) & "-") & CSmartStr(ArrayElement(date,2))) & "-") & CSmartStr(ArrayElement(date,3))
Exit Function
End If
If IsEqual(this_object.var_interval,1) or IsEqual(this_object.var_interval,2) or IsEqual(this_object.var_interval,3) or IsEqual(this_object.var_interval,4) or IsEqual(this_object.var_interval,5) or IsEqual(this_object.var_interval,6) or IsEqual(this_object.var_interval,7) then
doAssignmentByRef date,db2time(strdate)
method_ReportDateField_getKey = (((((((CSmartStr(ArrayElement(date,0)) & "-") & CSmartStr(ArrayElement(date,1))) & "-") & CSmartStr(ArrayElement(date,2))) & "-") & CSmartStr(ArrayElement(date,3))) & "-") & CSmartStr(ArrayElement(date,4))
Exit Function
End If
Loop While false
end if
end if
End Function
Function method_ReportDateField_overrideFormat(byref this_object)
method_ReportDateField_overrideFormat = true
Exit Function
End Function
Function method_ReportDateField_cutNull(byref this_object,ByRef range,ByVal checkEmpty)
Dim ret,out,nCnt,b
ret = false
Set out = (CreateDictionary())
nCnt = 0
do while IsLess(nCnt,asp_count(range))
b = false
if IsNull(ArrayElement(range,nCnt)) then
b = true
ret = true
else
if bValue(checkEmpty) then
if bValue(asp_is_array(ArrayElement(range,nCnt))) then
if not bValue(ArrayElement(ArrayElement(range,nCnt),"MIN")) or IsEqual(strcasecmp(ArrayElement(ArrayElement(range,nCnt),"MIN"),"null"),0) then
b = true
ret = true
end if
else
if not bValue(ArrayElement(range,nCnt)) or IsEqual(strcasecmp(ArrayElement(range,nCnt),"null"),0) then
b = true
ret = true
end if
end if
end if
end if
if not bValue(b) then
setArrElement out,asp_count(out),ArrayElement(range,nCnt)
end if
nCnt = CSmartDbl(nCnt)+1
loop
doAssignment range,out
doAssignmentByRef method_ReportDateField_cutNull,ret
Exit Function
End Function
Function getFormattedValue(ByVal value,ByVal fieldName,ByVal strViewFormat,ByVal strEditFormat,ByVal mode)
Dim val,d,h,m,s
if IsEqual(strViewFormat,FORMAT_TIME) and bValue(asp_is_numeric(value)) then
val = ""
doAssignmentByRef d,asp_intval(CSmartDbl(value)/86400)
doAssignmentByRef h,asp_intval((value mod 86400)/3600)
doAssignmentByRef m,asp_intval(((value mod 86400) mod 3600)/60)
s = ((value mod 86400) mod 3600) mod 60
val = CSmartStr(val) & CSmartStr(IIF(IsLess(0,d),CSmartStr(d) & "d ",""))
val = CSmartStr(val) & CSmartStr(str_format_time(CreateDictionary6(Empty,0,Empty,0,Empty,0,Empty,h,Empty,m,Empty,s)))
else
if IsEqual(strEditFormat,EDIT_FORMAT_LOOKUP_WIZARD) or IsEqual(strEditFormat,EDIT_FORMAT_RADIO) then
doAssignmentByRef val,DisplayLookupWizard(fieldName,value,null,"",mode)
else
doAssignmentByRef val,GetDataInt(value,CreateDictionary1(fieldName,value),fieldName,strViewFormat)
end if
end if
doAssignmentByRef getFormattedValue,val
Exit Function
End Function
Set cache_db2time = (CreateDictionary())
Function cached_db2time(ByVal strtime)
Dim res
if not (not IsEmpty(ArrayElement(cache_db2time,strtime))) then
doAssignmentByRef res,db2time(strtime)
setArrElement cache_db2time,strtime,res
doAssignmentByRef cached_db2time,res
Exit Function
else
doAssignmentByRef cached_db2time,ArrayElement(cache_db2time,strtime)
Exit Function
end if
End Function
Set cache_getdayofweek = (CreateDictionary())
Function cached_getdayofweek(ByVal strtime)
Dim date,res
if not (not IsEmpty(ArrayElement(cache_getdayofweek,strtime))) then
doAssignmentByRef date,cached_db2time(strtime)
doAssignmentByRef res,getdayofweek(date)
setArrElement cache_getdayofweek,strtime,res
doAssignmentByRef cached_getdayofweek,res
Exit Function
else
doAssignmentByRef cached_getdayofweek,ArrayElement(cache_getdayofweek,strtime)
Exit Function
end if
End Function
Set cache_getweekstart = (CreateDictionary())
Function cached_getweekstart(ByVal strtime)
Dim date,res
if not (not IsEmpty(ArrayElement(cache_getweekstart,strtime))) then
doAssignmentByRef date,cached_db2time(strtime)
doAssignmentByRef res,getweekstart(date)
setArrElement cache_getweekstart,strtime,res
doAssignmentByRef cached_getweekstart,res
Exit Function
else
doAssignmentByRef cached_getweekstart,ArrayElement(cache_getweekstart,strtime)
Exit Function
end if
End Function
Set cache_formatweekstart = (CreateDictionary())
Function cached_formatweekstart(ByVal strtime)
Dim start,var_end,res
if not (not IsEmpty(ArrayElement(cache_formatweekstart,strtime))) then
doAssignmentByRef start,cached_getweekstart(strtime)
doAssignmentByRef var_end,adddays(start,6)
res = (CSmartStr(format_shortdate(start)) & " - ") & CSmartStr(format_shortdate(var_end))
setArrElement cache_formatweekstart,strtime,res
doAssignmentByRef cached_formatweekstart,res
Exit Function
else
doAssignmentByRef cached_formatweekstart,ArrayElement(cache_formatweekstart,strtime)
Exit Function
end if
End Function
Set cache_fullfieldname = (CreateDictionary())
Function cached_ffn(ByVal field)
Dim res
if not (not IsEmpty(ArrayElement(cache_fullfieldname,field))) then
doAssignmentByRef res,AddFieldWrappers(field)
setArrElement cache_fullfieldname,field,res
doAssignmentByRef cached_ffn,res
Exit Function
else
doAssignmentByRef cached_ffn,ArrayElement(cache_fullfieldname,field)
Exit Function
end if
End Function
'------ Class SQLStatement ------
Class SQLStatement
Public var_fields
Public var_hasDetails
Public var_originalSql
Public var_order_in
Public var_order_out
Public var_order_old
Public var_aggregates
Public var_skipCount
Public var_reportGlobalSummary
Public var_reportSummary
Public var_details
Public var_from
Public var_pagesize
Public var_limitLevel
Public var_hasGroups
Public searchClauseObj
Public var_recordBasedRequest
Public var_oldAlgorithm
Public tName
Public shortTName
Public repGroupFieldsCount
Public repPageSummary
Public repGlobalSummary
Public repLayout
Public showGroupSummaryCount
Public repShowDet
Public repGroupFields
Public tKeyFields
Public isExistTotalFields
Public fieldsArr
Public orderIndexes
Public Function init_SQLStatement_p6(ByVal sql,ByVal order,ByVal pagesize,ByVal connection,ByRef searchClauseObj,ByRef params)
DoAssignmentByRef init_SQLStatement_p6,method_SQLStatement_SQLStatement(me,sql,order,pagesize,connection,searchClauseObj,params)
End Function
Public Function getOriginal_p1(ByVal useOriginalOrder)
DoAssignmentByRef getOriginal_p1,method_SQLStatement_getOriginal(me,useOriginalOrder)
End Function
Public Function getOriginal()
DoAssignmentByRef getOriginal,method_SQLStatement_getOriginal(me,true)
End Function
Public Function setRecordBasedRequest_p1(ByVal recordBasedRequest)
DoAssignmentByRef setRecordBasedRequest_p1,method_SQLStatement_setRecordBasedRequest(me,recordBasedRequest)
End Function
Public Function getGroup_p1(ByVal data)
DoAssignmentByRef getGroup_p1,method_SQLStatement_getGroup(me,data)
End Function
Public Function field_p1(ByVal num)
DoAssignmentByRef field_p1,method_SQLStatement_field(me,num)
End Function
Public Function getSQLLimits_p2(ByVal sql,ByVal from)
DoAssignmentByRef getSQLLimits_p2,method_SQLStatement_getSQLLimits(me,sql,from)
End Function
Public Function sqlg_p2(ByVal donotlimit,ByVal doorder)
DoAssignmentByRef sqlg_p2,method_SQLStatement_sqlg(me,donotlimit,doorder)
End Function
Public Function sqlg_p1(ByVal donotlimit)
DoAssignmentByRef sqlg_p1,method_SQLStatement_sqlg(me,donotlimit,true)
End Function
Public Function sqlg()
DoAssignmentByRef sqlg,method_SQLStatement_sqlg(me,false,true)
End Function
Public Function sqlcg()
DoAssignmentByRef sqlcg,method_SQLStatement_sqlcg(me)
End Function
Public Function sqlt()
DoAssignmentByRef sqlt,method_SQLStatement_sqlt(me)
End Function
Public Function sql2_p1(ByVal groups)
DoAssignmentByRef sql2_p1,method_SQLStatement_sql2(me,groups)
End Function
Public Function sql2()
DoAssignmentByRef sql2,method_SQLStatement_sql2(me,null)
End Function
Public Function buildsql_p1(ByVal hsql)
DoAssignmentByRef buildsql_p1,method_SQLStatement_buildsql(me,hsql)
End Function
Public Function initWhere()
DoAssignmentByRef initWhere,method_SQLStatement_initWhere(me)
End Function
Public Function getWhere()
DoAssignmentByRef getWhere,method_SQLStatement_getWhere(me)
End Function
Public Function applyWhere_p1(ByRef sql)
DoAssignmentByRef applyWhere_p1,method_SQLStatement_applyWhere(me,sql)
End Function
Public Function setOldAlgorithm_p1(ByVal useOldAlgorithm)
DoAssignmentByRef setOldAlgorithm_p1,method_SQLStatement_setOldAlgorithm(me,useOldAlgorithm)
End Function
Public Function setOldAlgorithm()
DoAssignmentByRef setOldAlgorithm,method_SQLStatement_setOldAlgorithm(me,true)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_fields", var_fields
setArrElement out,"var_hasDetails", var_hasDetails
setArrElement out,"var_originalSql", var_originalSql
setArrElement out,"var_order_in", var_order_in
setArrElement out,"var_order_out", var_order_out
setArrElement out,"var_order_old", var_order_old
setArrElement out,"var_aggregates", var_aggregates
setArrElement out,"var_skipCount", var_skipCount
setArrElement out,"var_reportGlobalSummary", var_reportGlobalSummary
setArrElement out,"var_reportSummary", var_reportSummary
setArrElement out,"var_details", var_details
setArrElement out,"var_from", var_from
setArrElement out,"var_pagesize", var_pagesize
setArrElement out,"var_limitLevel", var_limitLevel
setArrElement out,"var_hasGroups", var_hasGroups
setArrElement out,"searchClauseObj", searchClauseObj
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_oldAlgorithm", var_oldAlgorithm
setArrElement out,"tName", tName
setArrElement out,"shortTName", shortTName
setArrElement out,"repGroupFieldsCount", repGroupFieldsCount
setArrElement out,"repPageSummary", repPageSummary
setArrElement out,"repGlobalSummary", repGlobalSummary
setArrElement out,"repLayout", repLayout
setArrElement out,"showGroupSummaryCount", showGroupSummaryCount
setArrElement out,"repShowDet", repShowDet
setArrElement out,"repGroupFields", repGroupFields
setArrElement out,"tKeyFields", tKeyFields
setArrElement out,"isExistTotalFields", isExistTotalFields
setArrElement out,"fieldsArr", fieldsArr
setArrElement out,"orderIndexes", orderIndexes
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_fields, dict("var_fields")
DoAssignment var_hasDetails, dict("var_hasDetails")
DoAssignment var_originalSql, dict("var_originalSql")
DoAssignment var_order_in, dict("var_order_in")
DoAssignment var_order_out, dict("var_order_out")
DoAssignment var_order_old, dict("var_order_old")
DoAssignment var_aggregates, dict("var_aggregates")
DoAssignment var_skipCount, dict("var_skipCount")
DoAssignment var_reportGlobalSummary, dict("var_reportGlobalSummary")
DoAssignment var_reportSummary, dict("var_reportSummary")
DoAssignment var_details, dict("var_details")
DoAssignment var_from, dict("var_from")
DoAssignment var_pagesize, dict("var_pagesize")
DoAssignment var_limitLevel, dict("var_limitLevel")
DoAssignment var_hasGroups, dict("var_hasGroups")
DoAssignment searchClauseObj, dict("searchClauseObj")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_oldAlgorithm, dict("var_oldAlgorithm")
DoAssignment tName, dict("tName")
DoAssignment shortTName, dict("shortTName")
DoAssignment repGroupFieldsCount, dict("repGroupFieldsCount")
DoAssignment repPageSummary, dict("repPageSummary")
DoAssignment repGlobalSummary, dict("repGlobalSummary")
DoAssignment repLayout, dict("repLayout")
DoAssignment showGroupSummaryCount, dict("showGroupSummaryCount")
DoAssignment repShowDet, dict("repShowDet")
DoAssignment repGroupFields, dict("repGroupFields")
DoAssignment tKeyFields, dict("tKeyFields")
DoAssignment isExistTotalFields, dict("isExistTotalFields")
DoAssignment fieldsArr, dict("fieldsArr")
DoAssignment orderIndexes, dict("orderIndexes")
End Sub
' end serialize
End Class
' SQLStatement implementation
Function method_SQLStatement_SQLStatement(byref this_object,ByVal sql,ByVal order,ByVal pagesize,ByVal connection,ByRef searchClauseObj,ByRef params)
doClassAssignment this_object,"var_fields",CreateDictionary()
this_object.var_hasDetails = true
this_object.var_originalSql = null
doClassAssignment this_object,"var_aggregates",CreateDictionary()
this_object.var_skipCount = 0
this_object.var_reportGlobalSummary = true
this_object.var_reportSummary = true
this_object.var_details = true
this_object.var_from = 0
this_object.var_pagesize = 20
this_object.var_limitLevel = 0
this_object.var_hasGroups = true
this_object.searchClauseObj = null
this_object.var_recordBasedRequest = false
this_object.var_oldAlgorithm = false
this_object.tName = ""
this_object.shortTName = ""
this_object.repGroupFieldsCount = 0
this_object.repPageSummary = 0
this_object.repGlobalSummary = 0
this_object.repLayout = 0
this_object.showGroupSummaryCount = 0
this_object.repShowDet = 0
doClassAssignment this_object,"repGroupFields",CreateDictionary()
doClassAssignment this_object,"tKeyFields",CreateDictionary()
this_object.isExistTotalFields = false
doClassAssignment this_object,"fieldsArr",CreateDictionary()
Dim this,start,fields,i,j,add,f,field,order_in,order_out,order_old,o,groupField,fieldIndex,n
RunnerApply this_object,params
doClassAssignment this_object,"searchClauseObj",searchClauseObj
if not bValue(asp_is_array(sql)) then
Response.End
end if
doClassAssignment this_object,"var_originalSql",sql
start = 0
Set fields = (CreateDictionary())
i = 0
do while IsLess(i,asp_count(this_object.repGroupFields))
j = 0
do while IsLess(j,asp_count(this_object.fieldsArr))
if IsEqual(ArrayElement(ArrayElement(this_object.repGroupFields,i),"strGroupField"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")) then
Set add = (CreateDictionary())
setArrElement add,"name",ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")
if bValue(IsNumberType(GetFieldType(ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),this_object.tName))) then
setArrElement add,"type","numeric"
else
if bValue(IsCharType(GetFieldType(ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),this_object.tName))) then
setArrElement add,"type","char"
setArrElement add,"case_sensitive",reportCaseSensitiveGroupFields
else
if bValue(IsDateFieldType(GetFieldType(ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),this_object.tName))) then
setArrElement add,"type","date"
else
setArrElement add,"type","char"
end if
end if
end if
setArrElement add,"interval",ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupInterval")
setArrElement add,"viewformat",ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat")
setArrElement add,"rowsinsummary",1
if ((bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalMax")) or bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalMin"))) or bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalAvg"))) or bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalSum")) then
setArrElement add,"rowsinsummary",CSmartDbl(ArrayElement(add,"rowsinsummary"))+1
end if
if IsEqual(this_object.repLayout,REPORT_STEPPED) then
setArrElement add,"rowsinheader",1
else
if IsEqual(this_object.repLayout,REPORT_BLOCK) then
setArrElement add,"rowsinheader",0
else
if IsEqual(this_object.repLayout,REPORT_OUTLINE) or IsEqual(this_object.repLayout,REPORT_ALIGN) then
if IsEqual(j,CSmartDbl(asp_count(this_object.fieldsArr))-1) then
setArrElement add,"rowsinheader",2
else
setArrElement add,"rowsinheader",1
end if
else
if IsEqual(this_object.repLayout,REPORT_TABULAR) then
setArrElement add,"rowsinheader",0
end if
end if
end if
end if
setArrElement fields,asp_count(fields),add
end if
j = CSmartDbl(j)+1
loop
i = CSmartDbl(i)+1
loop
this_object.var_hasGroups = IsLess(0,asp_count(fields))
GetCollectionBounds fields,c_reportlib_loopIdx11,c_reportlib_loopMax11
do while c_reportlib_loopIdx11<=c_reportlib_loopMax11
c_reportlib_arrKey11 = GetCollectionKey(fields,c_reportlib_loopIdx11)
doAssignment field,ArrayElement(fields,c_reportlib_arrKey11)
doAssignmentByRef f,create_reportfield(ArrayElement(field,"name"),ArrayElement(field,"type"),ArrayElement(field,"interval"),"grp")
doAssignmentByRef start,f.setStart_p1(start)
if not IsEmpty(ArrayElement(field,"case_sensitive")) then
f.setCaseSensitive_p1 ArrayElement(field,"case_sensitive")
end if
if not IsEmpty(ArrayElement(field,"rowsinsummary")) then
doClassAssignment f,"var_rowsInSummary",ArrayElement(field,"rowsinsummary")
end if
if not IsEmpty(ArrayElement(field,"rowsinheader")) then
doClassAssignment f,"var_rowsInHeader",ArrayElement(field,"rowsinheader")
end if
doClassAssignment f,"var_viewFormat",ArrayElement(field,"viewformat")
setArrElement this_object.var_fields,asp_count(this_object.var_fields),f
c_reportlib_loopIdx11=c_reportlib_loopIdx11+1
loop
if bValue(order) then
Set order_in = (CreateDictionary())
Set order_out = (CreateDictionary())
Set order_old = (CreateDictionary())
GetCollectionBounds order,c_reportlib_loopIdx12,c_reportlib_loopMax12
do while c_reportlib_loopIdx12<=c_reportlib_loopMax12
c_reportlib_arrKey12 = GetCollectionKey(order,c_reportlib_loopIdx12)
doAssignment o,ArrayElement(order,c_reportlib_arrKey12)
setArrElement order_in,asp_count(order_in),(CSmartStr(ArrayElement(o,2)) & " as ") & CSmartStr(cached_ffn("originalorder" & CSmartStr(ArrayElement(o,0))))
setArrElement order_out,asp_count(order_out),(CSmartStr(cached_ffn("originalorder" & CSmartStr(ArrayElement(o,0)))) & " ") & CSmartStr(ArrayElement(o,1))
groupField = false
i = 0
do while IsLess(i,asp_count(this_object.repGroupFields))
j = 0
do while IsLess(j,asp_count(this_object.fieldsArr))
if IsEqual(ArrayElement(ArrayElement(this_object.repGroupFields,i),"strGroupField"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")) then
doAssignmentByRef fieldIndex,GetFieldIndex(ArrayElement(ArrayElement(this_object.repGroupFields,i),"strGroupField"),"")
if IsEqual(fieldIndex,ArrayElement(o,0)) then
n = CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1
doClassAssignment ArrayElement(this_object.var_fields,n),"var_orderBy",ArrayElement(o,1)
groupField = true
end if
end if
j = CSmartDbl(j)+1
loop
i = CSmartDbl(i)+1
loop
if not bValue(groupField) then
setArrElement order_old,asp_count(order_old),(CSmartStr(ArrayElement(o,2)) & " ") & CSmartStr(ArrayElement(o,1))
end if
c_reportlib_loopIdx12=c_reportlib_loopIdx12+1
loop
doClassAssignment this_object,"var_order_in",asp_join(", ",order_in)
doClassAssignment this_object,"var_order_out",asp_join(", ",order_out)
doClassAssignment this_object,"var_order_old",asp_join(", ",order_old)
end if
i = 0
do while IsLess(i,asp_count(this_object.fieldsArr))
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
setArrElement this_object.var_aggregates,asp_count(this_object.var_aggregates),(("MAX(" & CSmartStr(cached_ffn(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) & ") as ") & CSmartStr(cached_ffn(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MAX"))
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
setArrElement this_object.var_aggregates,asp_count(this_object.var_aggregates),(("MIN(" & CSmartStr(cached_ffn(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) & ") as ") & CSmartStr(cached_ffn(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MIN"))
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
if not bValue(IsDateFieldType(GetFieldType(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),this_object.tName))) then
setArrElement this_object.var_aggregates,asp_count(this_object.var_aggregates),(("AVG(" & CSmartStr(cached_ffn(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) & ") as ") & CSmartStr(cached_ffn(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "AVG"))
setArrElement this_object.var_aggregates,asp_count(this_object.var_aggregates),(("COUNT(" & CSmartStr(cached_ffn(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) & ") as ") & CSmartStr(cached_ffn(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "NAVG"))
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
if not bValue(IsDateFieldType(GetFieldType(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),this_object.tName))) then
setArrElement this_object.var_aggregates,asp_count(this_object.var_aggregates),(("SUM(" & CSmartStr(cached_ffn(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) & ") as ") & CSmartStr(cached_ffn(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "SUM"))
end if
end if
i = CSmartDbl(i)+1
loop
this_object.var_reportSummary = bValue(this_object.repPageSummary) or bValue(this_object.repGlobalSummary)
doClassAssignment this_object,"var_pagesize",pagesize
End Function
Function method_SQLStatement_getOriginal(byref this_object,ByVal useOriginalOrder)
Dim sql,this,hwhere,eventObj
doAssignmentByRef sql,this_object.applyWhere_p1(this_object.var_originalSql)
if bValue(tableEventExists("BeforeQueryReport",strTableName)) then
doAssignment hwhere,ArrayElement(sql,2)
doAssignmentByRef eventObj,getEventObject(strTableName)
eventObj.BeforeQueryReport_p1 hwhere
setArrElement sql,2,hwhere
end if
method_SQLStatement_getOriginal = ((((((((CSmartStr(ArrayElement(sql,0)) & " ") & CSmartStr(IIF((bValue(useOriginalOrder) and bValue(this_object.var_order_in)) and not bValue(this_object.var_oldAlgorithm),(", " & CSmartStr(this_object.var_order_in)) & " ",""))) & CSmartStr(ArrayElement(sql,1))) & " ") & CSmartStr(IIF(ArrayElement(sql,2)," WHERE " & CSmartStr(ArrayElement(sql,2)),""))) & " ") & CSmartStr(ArrayElement(sql,3))) & " ") & CSmartStr(IIF(ArrayElement(sql,4)," HAVING " & CSmartStr(ArrayElement(sql,4)),""))
Exit Function
End Function
Function method_SQLStatement_setRecordBasedRequest(byref this_object,ByVal recordBasedRequest)
Dim nCnt
doClassAssignment this_object,"var_recordBasedRequest",recordBasedRequest
nCnt = 0
do while IsLess(nCnt,asp_count(this_object.var_fields))
doClassAssignment ArrayElement(this_object.var_fields,nCnt),"var_recordBasedRequest",recordBasedRequest
nCnt = CSmartDbl(nCnt)+1
loop
End Function
Function method_SQLStatement_getGroup(byref this_object,ByVal data)
doAssignmentByRef method_SQLStatement_getGroup,ArrayElement(this_object.var_fields,0).getGroup_p1(data)
Exit Function
End Function
Function method_SQLStatement_field(byref this_object,ByVal num)
doAssignmentByRef method_SQLStatement_field,ArrayElement(this_object.var_fields,num)
Exit Function
End Function
Function method_SQLStatement_getSQLLimits(byref this_object,ByVal sql,ByVal from)
Dim out,nsel
if IsLessOrEqual(0,from) and IsLessOrEqual(0,this_object.var_pagesize) then
out = (((CSmartStr(sql) & " LIMIT ") & CSmartStr(asp_intval(this_object.var_pagesize))) & " OFFSET ") & CSmartStr(asp_intval(from))
this_object.var_skipCount = 0
doAssignmentByRef method_SQLStatement_getSQLLimits,out
Exit Function
else
doAssignmentByRef method_SQLStatement_getSQLLimits,sql
Exit Function
end if
End Function
Function method_SQLStatement_sqlg(byref this_object,ByVal donotlimit,ByVal doorder)
Dim hsql,s,g,o,this
Set hsql = (CreateDictionary())
Set s = (CreateDictionary())
Set g = (CreateDictionary())
Set o = (CreateDictionary())
if bValue(this_object.var_hasGroups) then
setArrElement s,asp_count(s),ArrayElement(this_object.var_fields,0).getSelectSql_p1(true)
setArrElement g,asp_count(g),ArrayElement(this_object.var_fields,0).getGroupSql()
setArrElement o,asp_count(o),ArrayElement(this_object.var_fields,0).getOrderSql()
end if
if bValue(asp_count(s)) then
setArrElementN hsql,CreateArray2("select",empty),asp_join(", ",s)
end if
if bValue(asp_count(g)) then
setArrElementN hsql,CreateArray2("groupby",empty),asp_join(", ",g)
end if
if bValue(asp_count(o)) and bValue(doorder) then
setArrElement hsql,"orderby",asp_join(", ",o)
end if
if IsEqual(this_object.var_limitLevel,1) and not bValue(donotlimit) then
setArrElement hsql,"limits",1
end if
doAssignmentByRef method_SQLStatement_sqlg,this_object.buildsql_p1(hsql)
Exit Function
End Function
Function method_SQLStatement_sqlcg(byref this_object)
Dim gsql,this
doAssignmentByRef gsql,this_object.sqlg_p2(true,false)
method_SQLStatement_sqlcg = ((("select count(*) as " & CSmartStr(cached_ffn("c"))) & " from (") & CSmartStr(gsql)) & ") countgroups"
Exit Function
End Function
Function method_SQLStatement_sqlt(byref this_object)
Dim hsql,this
Set hsql = (CreateDictionary())
setArrElementN hsql,CreateArray2("select",empty),"count(1) as " & CSmartStr(cached_ffn("countField"))
if bValue(asp_count(this_object.var_aggregates)) then
setArrElementN hsql,CreateArray2("select",empty),asp_join(", ",this_object.var_aggregates)
end if
doAssignmentByRef method_SQLStatement_sqlt,this_object.buildsql_p1(hsql)
Exit Function
End Function
Function method_SQLStatement_sql2(byref this_object,ByVal groups)
Dim hsql,o,f,s,g,where
Set hsql = (CreateDictionary())
if not bValue(this_object.var_hasGroups) or bValue(this_object.var_recordBasedRequest) then
setArrElement hsql,"original",true
Set o = (CreateDictionary())
GetCollectionBounds this_object.var_fields,c_reportlib_loopIdx17,c_reportlib_loopMax17
do while c_reportlib_loopIdx17<=c_reportlib_loopMax17
c_reportlib_arrKey17 = GetCollectionKey(this_object.var_fields,c_reportlib_loopIdx17)
doAssignment f,ArrayElement(this_object.var_fields,c_reportlib_arrKey17)
setArrElement o,asp_count(o),f.getOrderSql()
c_reportlib_loopIdx17=c_reportlib_loopIdx17+1
loop
if bValue(asp_count(o)) then
setArrElement hsql,"orderby",asp_join(", ",o)
end if
else
if bValue(this_object.repShowDet) then
setArrElementN hsql,CreateArray2("select",empty),"original.*"
else
if bValue(asp_count(this_object.var_aggregates)) then
setArrElementN hsql,CreateArray2("select",empty),asp_join(", ",this_object.var_aggregates)
end if
end if
Set s = (CreateDictionary())
Set g = (CreateDictionary())
Set o = (CreateDictionary())
GetCollectionBounds this_object.var_fields,c_reportlib_loopIdx18,c_reportlib_loopMax18
do while c_reportlib_loopIdx18<=c_reportlib_loopMax18
c_reportlib_arrKey18 = GetCollectionKey(this_object.var_fields,c_reportlib_loopIdx18)
doAssignment f,ArrayElement(this_object.var_fields,c_reportlib_arrKey18)
setArrElement s,asp_count(s),f.getSelectSql_p1(not bValue(this_object.repShowDet))
if not bValue(this_object.repShowDet) then
setArrElement g,asp_count(g),f.getGroupSql()
end if
setArrElement o,asp_count(o),f.getOrderSql()
c_reportlib_loopIdx18=c_reportlib_loopIdx18+1
loop
if (bValue(this_object.var_reportSummary) and bValue(this_object.var_hasGroups)) and not bValue(this_object.repShowDet) then
setArrElementN hsql,CreateArray2("select",empty),"count(1) as " & CSmartStr(cached_ffn("countField"))
end if
if bValue(asp_count(s)) then
setArrElementN hsql,CreateArray2("select",empty),asp_join(", ",s)
end if
if not IsNull(groups) and bValue(asp_count(groups)) then
doAssignmentByRef where,ArrayElement(this_object.var_fields,0).getWhereSql_p1(groups)
if bValue(where) then
setArrElement hsql,"where",where
end if
end if
if bValue(asp_count(g)) then
setArrElement hsql,"groupby",g
end if
if bValue(asp_count(o)) then
setArrElement hsql,"orderby",asp_join(", ",o)
end if
end if
if IsEqual(this_object.var_limitLevel,2) then
setArrElement hsql,"limits",1
end if
if bValue(this_object.repShowDet) then
setArrElement hsql,"origorder",1
end if
doAssignmentByRef method_SQLStatement_sql2,hsql
Exit Function
End Function
Function method_SQLStatement_buildsql(byref this_object,ByVal hsql)
Dim ordered,sql,this,osql
this_object.var_skipCount = 0
ordered = false
if IsEqual(asp_count(hsql),0) or bValue(ArrayElement(hsql,"original")) then
doAssignmentByRef sql,this_object.getOriginal()
else
sql = "SELECT "
if bValue(ArrayElement(hsql,"select")) and IsLess(0,asp_count(ArrayElement(hsql,"select"))) then
sql = CSmartStr(sql) & CSmartStr(asp_join(", ",ArrayElement(hsql,"select")))
else
sql = CSmartStr(sql) & " * "
end if
sql = CSmartStr(sql) & ((" FROM (" & CSmartStr(this_object.getOriginal_p1(ArrayElement(hsql,"origorder")))) & ") original")
if bValue(ArrayElement(hsql,"where")) and IsLess(0,asp_count(ArrayElement(hsql,"where"))) then
sql = CSmartStr(sql) & (" WHERE " & CSmartStr(ArrayElement(hsql,"where")))
end if
if bValue(ArrayElement(hsql,"groupby")) and IsLess(0,asp_count(ArrayElement(hsql,"groupby"))) then
sql = CSmartStr(sql) & (" GROUP BY " & CSmartStr(asp_join(", ",ArrayElement(hsql,"groupby"))))
end if
end if
osql = ""
if bValue(ArrayElement(hsql,"orderby")) and IsLess(0,asp_count(ArrayElement(hsql,"orderby"))) then
osql = CSmartStr(osql) & CSmartStr(ArrayElement(hsql,"orderby"))
ordered = true
end if
if bValue(ArrayElement(hsql,"origorder")) then
if not bValue(this_object.var_oldAlgorithm) then
if bValue(this_object.var_order_out) then
osql = CSmartStr(osql) & (CSmartStr(IIF(osql,", ","")) & CSmartStr(this_object.var_order_out))
end if
else
if bValue(this_object.var_order_old) then
osql = CSmartStr(osql) & (CSmartStr(IIF(osql,", ","")) & CSmartStr(this_object.var_order_old))
end if
end if
end if
if bValue(osql) then
sql = CSmartStr(sql) & (" ORDER BY " & CSmartStr(osql))
end if
if bValue(ArrayElement(hsql,"limits")) then
doAssignmentByRef sql,this_object.getSQLLimits_p2(sql,this_object.var_from)
end if
doAssignmentByRef method_SQLStatement_buildsql,sql
Exit Function
End Function
Function method_SQLStatement_initWhere(byref this_object)
End Function
Function method_SQLStatement_getWhere(byref this_object)
doAssignmentByRef method_SQLStatement_getWhere,this_object.searchClauseObj
Exit Function
End Function
Function method_SQLStatement_applyWhere(byref this_object,ByRef sql)
doAssignmentByRef method_SQLStatement_applyWhere,this_object.searchClauseObj.applyWhere_p3(sql,GetListOfFieldsByExprType(false,this_object.tName),GetListOfFieldsByExprType(true,this_object.tName))
Exit Function
End Function
Function method_SQLStatement_setOldAlgorithm(byref this_object,ByVal useOldAlgorithm)
Dim nCnt
nCnt = 0
do while IsLess(nCnt,asp_count(this_object.var_fields))
doClassAssignment ArrayElement(this_object.var_fields,nCnt),"var_oldAlgorithm",useOldAlgorithm
nCnt = CSmartDbl(nCnt)+1
loop
doClassAssignment this_object,"var_oldAlgorithm",useOldAlgorithm
End Function
'------ Class Summarable ------
Class Summarable
Public var_summary
Public tName
Public shortTName
Public repGroupFieldsCount
Public repPageSummary
Public repGlobalSummary
Public repLayout
Public showGroupSummaryCount
Public repShowDet
Public repGroupFields
Public tKeyFields
Public isExistTotalFields
Public fieldsArr
Public Function init_Summarable_p1(ByRef params)
DoAssignmentByRef init_Summarable_p1,method_Summarable_Summarable(me,params)
End Function
Public Function init_p1(ByVal from)
DoAssignmentByRef init_p1,method_Summarable_init(me,from)
End Function
Public Function init()
DoAssignmentByRef init,method_Summarable_init(me,0)
End Function
Public Function writeGroup_p5(ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
DoAssignmentByRef writeGroup_p5,method_Summarable_writeGroup(me,begin,var_end,gkey,grp,nField)
End Function
Public Function addSummary_p4(ByVal recordsMode,ByRef summary,ByVal data,ByRef nTotalRecords)
DoAssignmentByRef addSummary_p4,method_Summarable_addSummary(me,recordsMode,summary,data,nTotalRecords)
End Function
Public Function func_makeSummary_p2(ByRef summary,ByVal deep)
DoAssignmentByRef func_makeSummary_p2,method_Summarable__makeSummary(me,summary,deep)
End Function
Public Function value2time_p1(ByVal value)
DoAssignmentByRef value2time_p1,method_Summarable_value2time(me,value)
End Function
Public Function time2printable_p1(ByVal time)
DoAssignmentByRef time2printable_p1,method_Summarable_time2printable(me,time)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_summary", var_summary
setArrElement out,"tName", tName
setArrElement out,"shortTName", shortTName
setArrElement out,"repGroupFieldsCount", repGroupFieldsCount
setArrElement out,"repPageSummary", repPageSummary
setArrElement out,"repGlobalSummary", repGlobalSummary
setArrElement out,"repLayout", repLayout
setArrElement out,"showGroupSummaryCount", showGroupSummaryCount
setArrElement out,"repShowDet", repShowDet
setArrElement out,"repGroupFields", repGroupFields
setArrElement out,"tKeyFields", tKeyFields
setArrElement out,"isExistTotalFields", isExistTotalFields
setArrElement out,"fieldsArr", fieldsArr
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_summary, dict("var_summary")
DoAssignment tName, dict("tName")
DoAssignment shortTName, dict("shortTName")
DoAssignment repGroupFieldsCount, dict("repGroupFieldsCount")
DoAssignment repPageSummary, dict("repPageSummary")
DoAssignment repGlobalSummary, dict("repGlobalSummary")
DoAssignment repLayout, dict("repLayout")
DoAssignment showGroupSummaryCount, dict("showGroupSummaryCount")
DoAssignment repShowDet, dict("repShowDet")
DoAssignment repGroupFields, dict("repGroupFields")
DoAssignment tKeyFields, dict("tKeyFields")
DoAssignment isExistTotalFields, dict("isExistTotalFields")
DoAssignment fieldsArr, dict("fieldsArr")
End Sub
' end serialize
End Class
' Summarable implementation
Function method_Summarable_Summarable(byref this_object,ByRef params)
doClassAssignment this_object,"var_summary",CreateDictionary()
this_object.tName = ""
this_object.shortTName = ""
this_object.repGroupFieldsCount = 0
this_object.repPageSummary = 0
this_object.repGlobalSummary = 0
this_object.repLayout = 0
this_object.showGroupSummaryCount = 0
this_object.repShowDet = 0
doClassAssignment this_object,"repGroupFields",CreateDictionary()
doClassAssignment this_object,"tKeyFields",CreateDictionary()
this_object.isExistTotalFields = false
doClassAssignment this_object,"fieldsArr",CreateDictionary()
Dim this
RunnerApply this_object,params
method_Summarable_init this_object,0
End Function
Function method_Summarable_init(byref this_object,ByVal from)
doClassAssignment this_object,"var_from",from
End Function
Function method_Summarable_writeGroup(byref this_object,ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
End Function
Function method_Summarable_addSummary(byref this_object,ByVal recordsMode,ByRef summary,ByVal data,ByRef nTotalRecords)
Dim countInGroup,s,i,avg_value,this
doAssignment countInGroup,IIF(not IsEmpty(ArrayElement(summary,"count")),ArrayElement(summary,"count"),0)
if bValue(this_object.isExistTotalFields) then
if not bValue(asp_is_array(ArrayElement(summary,"summary"))) then
setArrElement summary,"summary",CreateDictionary()
end if
doAssignmentByRef s,ArrayElement(summary,"summary")
end if
if bValue(recordsMode) then
i = 0
c_reportlib_exitLoop20=false
do while IsLess(i,asp_count(this_object.fieldsArr))
c_reportlib_exitLoop20=false
do
if ((not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin"))) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg"))) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
exit do
end if
if not IsNull(ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))) then
if not bValue(asp_is_array(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
setArrElement s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),CreateDictionary()
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
if not (not IsEmpty(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"))) or IsLess(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"),ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))) then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MAX"),ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
if not (not IsEmpty(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"))) or IsLess(ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN")) then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MIN"),ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),"Time") then
doAssignmentByRef avg_value,this_object.value2time_p1(ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))
else
doAssignment avg_value,ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))
end if
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))*CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+CSmartDbl(avg_value)
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"count"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+1
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))/CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),"Time") then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"SUM"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))+CSmartDbl(this_object.value2time_p1(ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))))
else
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"SUM"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))+CSmartDbl(ArrayElement(data,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))
end if
end if
end if
loop while false
if c_reportlib_exitLoop20 then _
exit do
i = CSmartDbl(i)+1
loop
nTotalRecords = CSmartDbl(nTotalRecords)+1
countInGroup = CSmartDbl(countInGroup)+1
else
i = 0
c_reportlib_exitLoop21=false
do while IsLess(i,asp_count(this_object.fieldsArr))
c_reportlib_exitLoop21=false
do
if ((not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin"))) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg"))) and not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
exit do
end if
if not bValue(asp_is_array(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
setArrElement s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),CreateDictionary()
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
if not IsNull(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MAX")) then
if not (not IsEmpty(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"))) or IsLess(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"),ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MAX")) then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MAX"),ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MAX")
end if
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
if not IsNull(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MIN")) then
if not (not IsEmpty(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"))) or IsLess(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MIN"),ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN")) then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MIN"),ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "MIN")
end if
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
if not IsNull(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "AVG")) then
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),"Time") then
doAssignmentByRef avg_value,this_object.value2time_p1(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "AVG"))
else
doAssignment avg_value,ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "AVG")
end if
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))*CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+CSmartDbl(avg_value)*CSmartDbl(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "NAVG"))
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"count"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+CSmartDbl(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "NAVG"))
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))/CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
if not IsNull(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "SUM")) then
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),"Time") then
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"SUM"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))+CSmartDbl(this_object.value2time_p1(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "SUM")))
else
setArrElementN s,CreateArray2(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"SUM"),CSmartDbl(ArrayElement(ArrayElement(s,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))+CSmartDbl(ArrayElement(data,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) & "SUM"))
end if
end if
end if
loop while false
if c_reportlib_exitLoop21 then _
exit do
i = CSmartDbl(i)+1
loop
nTotalRecords = CSmartDbl(nTotalRecords)+CSmartDbl(ArrayElement(data,"countField"))
countInGroup = CSmartDbl(countInGroup)+CSmartDbl(ArrayElement(data,"countField"))
end if
setArrElement summary,"count",countInGroup
End Function
Function method_Summarable__makeSummary(byref this_object,ByRef summary,ByVal deep)
Dim grp,gkey,this,i
if bValue(ArrayElement(summary,"values")) then
GetCollectionBounds ArrayElement(summary,"values"),c_reportlib_loopIdx22,c_reportlib_loopMax22
do while c_reportlib_loopIdx22<=c_reportlib_loopMax22
gkey = GetCollectionKey(ArrayElement(summary,"values"),c_reportlib_loopIdx22)
doAssignment group,ArrayElement(ArrayElement(summary,"values"),gkey)
doAssignmentByRef grp,ArrayElement(ArrayElement(summary,"values"),gkey)
if not IsEmpty(ArrayElement(grp,"values")) then
this_object.func_makeSummary_p2 grp,CSmartDbl(deep)+1
end if
if not IsEmpty(ArrayElement(grp,"_begin")) and not IsEmpty(ArrayElement(grp,"_end")) then
this_object.writeGroup_p5 ArrayElement(grp,"_begin"),ArrayElement(grp,"_end"),gkey,grp,deep
end if
if not bValue(asp_is_array(ArrayElement(summary,"summary"))) then
setArrElement summary,"summary",CreateDictionary()
end if
i = 0
do while IsLess(i,asp_count(this_object.fieldsArr))
if not bValue(asp_is_array(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
setArrElementN summary,CreateArray2("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),CreateDictionary()
end if
if bValue(asp_is_array(ArrayElement(grp,"summary"))) then
if bValue(asp_is_array(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
if not IsEmpty(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX")) then
if not (not IsEmpty(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"))) or IsLess(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"),ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX")) then
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MAX"),ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX")
end if
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
if not IsEmpty(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN")) then
if not (not IsEmpty(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"))) or IsLess(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"),ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN")) then
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"MIN"),ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN")
end if
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
if not IsEmpty(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG")) then
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))*CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+CSmartDbl(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))*CSmartDbl(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"count"),CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))+CSmartDbl(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"AVG"),CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"))/CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"count"))
end if
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
if bValue(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM")) then
setArrElementN summary,CreateArray3("summary",ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),"SUM"),CSmartDbl(ArrayElement(ArrayElement(ArrayElement(summary,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))+CSmartDbl(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"))
end if
end if
end if
end if
i = CSmartDbl(i)+1
loop
setArrElement summary,"count",CSmartDbl(ArrayElement(summary,"count"))+CSmartDbl(ArrayElement(grp,"count"))
c_reportlib_loopIdx22=c_reportlib_loopIdx22+1
loop
end if
End Function
Function method_Summarable_value2time(byref this_object,ByVal value)
Dim res,arr
res = 0
doAssignmentByRef arr,parsenumbers(value)
if not IsEmpty(ArrayElement(arr,0)) then
res = CSmartDbl(res)+(CSmartDbl(ArrayElement(arr,0))*60)*60
end if
if not IsEmpty(ArrayElement(arr,1)) then
res = CSmartDbl(res)+CSmartDbl(ArrayElement(arr,1))*60
end if
if not IsEmpty(ArrayElement(arr,2)) then
res = CSmartDbl(res)+CSmartDbl(ArrayElement(arr,2))
end if
doAssignmentByRef method_Summarable_value2time,res
Exit Function
End Function
Function method_Summarable_time2printable(byref this_object,ByVal time)
doAssignmentByRef method_Summarable_time2printable,CreateDictionary3(Empty,asp_intval(CSmartDbl(time)/(60*60)),Empty,asp_intval(CSmartDbl(time)/60),Empty,time mod 60)
Exit Function
End Function
'------ Class ReportGroups extends Summarable ------
Class ReportGroups
Public var_global
Public var_pagesize
Public var_totalRecords
Public var_maxpages
Public var_nGroup
Public var_oldFirst
Public var_from
Public var_sql
Public var_connection
Public var_allGroupsUsed
Public var_countGroups
Public var_summary
Public tName
Public shortTName
Public repGroupFieldsCount
Public repPageSummary
Public repGlobalSummary
Public repLayout
Public showGroupSummaryCount
Public repShowDet
Public repGroupFields
Public tKeyFields
Public isExistTotalFields
Public fieldsArr
Public Function init_ReportGroups_p4(ByRef sql,ByVal connection,ByVal pagesize,ByRef params)
DoAssignmentByRef init_ReportGroups_p4,method_ReportGroups_ReportGroups(me,sql,connection,pagesize,params)
End Function
Public Function init_p1(ByVal from)
DoAssignmentByRef init_p1,method_ReportGroups_init(me,from)
End Function
Public Function init()
DoAssignmentByRef init,method_ReportGroups_init(me,0)
End Function
Public Function setGlobalSummary_p2(ByVal recordsMode,ByVal data)
DoAssignmentByRef setGlobalSummary_p2,method_ReportGroups_setGlobalSummary(me,recordsMode,data)
End Function
Public Function setGroup_p1(ByVal data)
DoAssignmentByRef setGroup_p1,method_ReportGroups_setGroup(me,data)
End Function
Public Function isVisibleGroup()
DoAssignmentByRef isVisibleGroup,method_ReportGroups_isVisibleGroup(me)
End Function
Public Function getDisplayGroups_p1(ByVal from)
DoAssignmentByRef getDisplayGroups_p1,method_ReportGroups_getDisplayGroups(me,from)
End Function
Public Function getCountGroups_p1(ByVal fullRequest)
DoAssignmentByRef getCountGroups_p1,method_ReportGroups_getCountGroups(me,fullRequest)
End Function
Public Function getCountGroups()
DoAssignmentByRef getCountGroups,method_ReportGroups_getCountGroups(me,false)
End Function
Public Function getSummary()
DoAssignmentByRef getSummary,method_ReportGroups_getSummary(me)
End Function
Public Function allGroupsUsed()
DoAssignmentByRef allGroupsUsed,method_ReportGroups_allGroupsUsed(me)
End Function
Public Function writeGroup_p5(ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
DoAssignmentByRef writeGroup_p5,method_Summarable_writeGroup(me,begin,var_end,gkey,grp,nField)
End Function
Public Function addSummary_p4(ByVal recordsMode,ByRef summary,ByVal data,ByRef nTotalRecords)
DoAssignmentByRef addSummary_p4,method_Summarable_addSummary(me,recordsMode,summary,data,nTotalRecords)
End Function
Public Function func_makeSummary_p2(ByRef summary,ByVal deep)
DoAssignmentByRef func_makeSummary_p2,method_Summarable__makeSummary(me,summary,deep)
End Function
Public Function value2time_p1(ByVal value)
DoAssignmentByRef value2time_p1,method_Summarable_value2time(me,value)
End Function
Public Function time2printable_p1(ByVal time)
DoAssignmentByRef time2printable_p1,method_Summarable_time2printable(me,time)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_global", var_global
setArrElement out,"var_pagesize", var_pagesize
setArrElement out,"var_totalRecords", var_totalRecords
setArrElement out,"var_maxpages", var_maxpages
setArrElement out,"var_nGroup", var_nGroup
setArrElement out,"var_oldFirst", var_oldFirst
setArrElement out,"var_from", var_from
setArrElement out,"var_sql", var_sql
setArrElement out,"var_connection", var_connection
setArrElement out,"var_allGroupsUsed", var_allGroupsUsed
setArrElement out,"var_countGroups", var_countGroups
setArrElement out,"var_summary", var_summary
setArrElement out,"tName", tName
setArrElement out,"shortTName", shortTName
setArrElement out,"repGroupFieldsCount", repGroupFieldsCount
setArrElement out,"repPageSummary", repPageSummary
setArrElement out,"repGlobalSummary", repGlobalSummary
setArrElement out,"repLayout", repLayout
setArrElement out,"showGroupSummaryCount", showGroupSummaryCount
setArrElement out,"repShowDet", repShowDet
setArrElement out,"repGroupFields", repGroupFields
setArrElement out,"tKeyFields", tKeyFields
setArrElement out,"isExistTotalFields", isExistTotalFields
setArrElement out,"fieldsArr", fieldsArr
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_global, dict("var_global")
DoAssignment var_pagesize, dict("var_pagesize")
DoAssignment var_totalRecords, dict("var_totalRecords")
DoAssignment var_maxpages, dict("var_maxpages")
DoAssignment var_nGroup, dict("var_nGroup")
DoAssignment var_oldFirst, dict("var_oldFirst")
DoAssignment var_from, dict("var_from")
DoAssignment var_sql, dict("var_sql")
DoAssignment var_connection, dict("var_connection")
DoAssignment var_allGroupsUsed, dict("var_allGroupsUsed")
DoAssignment var_countGroups, dict("var_countGroups")
DoAssignment var_summary, dict("var_summary")
DoAssignment tName, dict("tName")
DoAssignment shortTName, dict("shortTName")
DoAssignment repGroupFieldsCount, dict("repGroupFieldsCount")
DoAssignment repPageSummary, dict("repPageSummary")
DoAssignment repGlobalSummary, dict("repGlobalSummary")
DoAssignment repLayout, dict("repLayout")
DoAssignment showGroupSummaryCount, dict("showGroupSummaryCount")
DoAssignment repShowDet, dict("repShowDet")
DoAssignment repGroupFields, dict("repGroupFields")
DoAssignment tKeyFields, dict("tKeyFields")
DoAssignment isExistTotalFields, dict("isExistTotalFields")
DoAssignment fieldsArr, dict("fieldsArr")
End Sub
' end serialize
End Class
' ReportGroups implementation
Function method_ReportGroups_ReportGroups(byref this_object,ByRef sql,ByVal connection,ByVal pagesize,ByRef params)
doClassAssignment this_object,"var_summary",CreateDictionary()
this_object.tName = ""
this_object.shortTName = ""
this_object.repGroupFieldsCount = 0
this_object.repPageSummary = 0
this_object.repGlobalSummary = 0
this_object.repLayout = 0
this_object.showGroupSummaryCount = 0
this_object.repShowDet = 0
doClassAssignment this_object,"repGroupFields",CreateDictionary()
doClassAssignment this_object,"tKeyFields",CreateDictionary()
this_object.isExistTotalFields = false
doClassAssignment this_object,"fieldsArr",CreateDictionary()
Dim this
RunnerApply this_object,params
method_Summarable_Summarable this_object,params
this_object.init
doClassAssignment this_object,"var_pagesize",pagesize
doClassAssignmentByRef this_object,"var_sql",sql
doClassAssignment this_object,"var_connection",connection
End Function
Function method_ReportGroups_init(byref this_object,ByVal from)
method_Summarable_init this_object,from
doClassAssignment this_object,"var_global",CreateDictionary()
this_object.var_totalRecords = 0
this_object.var_maxpages = -1
doClassAssignment this_object,"var_from",from
this_object.var_nGroup = -1
this_object.var_oldFirst = ""
this_object.var_allGroupsUsed = false
this_object.var_countGroups = 0
End Function
Function method_ReportGroups_setGlobalSummary(byref this_object,ByVal recordsMode,ByVal data)
Dim this
this_object.addSummary_p4 recordsMode,this_object.var_global,data,this_object.var_totalRecords
End Function
Function method_ReportGroups_setGroup(byref this_object,ByVal data)
Dim field,firstKey
doAssignmentByRef field,this_object.var_sql.field_p1(0)
doAssignmentByRef firstKey,field.getKey_p1(data)
if not IsEqual(firstKey,this_object.var_oldFirst) then
this_object.var_nGroup = CSmartDbl(this_object.var_nGroup)+1
doClassAssignment this_object,"var_oldFirst",firstKey
end if
End Function
Function method_ReportGroups_isVisibleGroup(byref this_object)
method_ReportGroups_isVisibleGroup = IsLessOrEqual(this_object.var_from,this_object.var_nGroup) and IsLess(this_object.var_nGroup,CSmartDbl(this_object.var_from)+CSmartDbl(this_object.var_pagesize))
Exit Function
End Function
Function method_ReportGroups_getDisplayGroups(byref this_object,ByVal from)
Dim this,groups,sql,cursor,data
this_object.init_p1 from
if IsEqual(this_object.var_pagesize,-1) then
doAssignmentByRef method_ReportGroups_getDisplayGroups,CreateDictionary()
Exit Function
else
Set groups = (CreateDictionary())
this_object.var_allGroupsUsed = false
if bValue(this_object.repGroupFieldsCount) then
doAssignmentByRef sql,this_object.var_sql.sqlg()
doAssignmentByRef cursor,db_query(sql,this_object.var_connection)
do while bValue(doAssignmentByRef(data,db_fetch_array(cursor)))
setArrElement groups,asp_count(groups),this_object.var_sql.getGroup_p1(data)
loop
if IsLess(asp_count(groups),this_object.var_pagesize) then
this_object.var_allGroupsUsed = true
end if
end if
if IsLess(0,this_object.var_sql.var_skipCount) then
asp_array_splice groups,0,this_object.var_sql.var_skipCount
this_object.var_allGroupsUsed = false
end if
if IsLess(0,from) then
this_object.var_allGroupsUsed = false
end if
doClassAssignment this_object,"var_countGroups",asp_count(groups)
doAssignmentByRef method_ReportGroups_getDisplayGroups,groups
Exit Function
end if
End Function
Function method_ReportGroups_getCountGroups(byref this_object,ByVal fullRequest)
Dim sql,cursor,data
if bValue(this_object.repGroupFieldsCount) then
if IsLessOrEqual(0,this_object.var_nGroup) and bValue(fullRequest) then
method_ReportGroups_getCountGroups = CSmartDbl(this_object.var_nGroup)+1
Exit Function
else
if bValue(this_object.var_allGroupsUsed) then
doAssignmentByRef method_ReportGroups_getCountGroups,this_object.var_countGroups
Exit Function
else
doAssignmentByRef sql,this_object.var_sql.sqlcg()
doAssignmentByRef cursor,db_query(sql,this_object.var_connection)
doAssignmentByRef data,db_fetch_array(cursor)
doAssignmentByRef method_ReportGroups_getCountGroups,ArrayElement(data,"c")
Exit Function
end if
end if
else
method_ReportGroups_getCountGroups = 0
Exit Function
end if
End Function
Function method_ReportGroups_getSummary(byref this_object)
doAssignmentByRef method_ReportGroups_getSummary,this_object.var_global
Exit Function
End Function
Function method_ReportGroups_allGroupsUsed(byref this_object)
doAssignmentByRef method_ReportGroups_allGroupsUsed,this_object.var_allGroupsUsed
Exit Function
End Function
'------ Class ReportLogic extends Summarable ------
Class ReportLogic
Public var_list
Public var_totalRecords
Public var_pages
Public var_pagesize
Public var_printpagesize
Public var_from
Public var_connection
Public var_sql
Public var_groups
Public var_groupKeys
Public var_fullRequest
Public var_recordBasedRequest
Public var_doPaging
Public var_lastPageNumber
Public var_pageSummary
Public var_printRecordCount
Public var_listedRows
Public var_oldLevels
Public searchClauseObj
Public var_summary
Public tName
Public shortTName
Public repGroupFieldsCount
Public repPageSummary
Public repGlobalSummary
Public repLayout
Public showGroupSummaryCount
Public repShowDet
Public repGroupFields
Public tKeyFields
Public isExistTotalFields
Public fieldsArr
Public Function init_ReportLogic_p7(ByVal sql,ByVal order,ByRef searchClauseObj,ByVal connection,ByVal pagesize,ByVal printpagesize,ByRef params)
DoAssignmentByRef init_ReportLogic_p7,method_ReportLogic_ReportLogic(me,sql,order,searchClauseObj,connection,pagesize,printpagesize,params)
End Function
Public Function init_p1(ByVal from)
DoAssignmentByRef init_p1,method_ReportLogic_init(me,from)
End Function
Public Function init()
DoAssignmentByRef init,method_ReportLogic_init(me,0)
End Function
Public Function getWhere()
DoAssignmentByRef getWhere,method_ReportLogic_getWhere(me)
End Function
Public Function getPages()
DoAssignmentByRef getPages,method_ReportLogic_getPages(me)
End Function
Public Function getFormattedRow_p1(ByVal value)
DoAssignmentByRef getFormattedRow_p1,method_ReportLogic_getFormattedRow(me,value)
End Function
Public Function writeGroup_p5(ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
DoAssignmentByRef writeGroup_p5,method_ReportLogic_writeGroup(me,begin,var_end,gkey,grp,nField)
End Function
Public Function func_writePage_p3(ByRef page,ByVal src,ByVal count)
DoAssignmentByRef func_writePage_p3,method_ReportLogic__writePage(me,page,src,count)
End Function
Public Function writeGlobalSummary_p1(ByVal source)
DoAssignmentByRef writeGlobalSummary_p1,method_ReportLogic_writeGlobalSummary(me,source)
End Function
Public Function writePageSummary()
DoAssignmentByRef writePageSummary,method_ReportLogic_writePageSummary(me)
End Function
Public Function makeSummary()
DoAssignmentByRef makeSummary,method_ReportLogic_makeSummary(me)
End Function
Public Function setSummary_p3(ByVal recordsMode,ByVal data,ByVal rowToAppend)
DoAssignmentByRef setSummary_p3,method_ReportLogic_setSummary(me,recordsMode,data,rowToAppend)
End Function
Public Function setSummary_p2(ByVal recordsMode,ByVal data)
DoAssignmentByRef setSummary_p2,method_ReportLogic_setSummary(me,recordsMode,data,null)
End Function
Public Function setFinish()
DoAssignmentByRef setFinish,method_ReportLogic_setFinish(me)
End Function
Public Function appendRow_p1(ByVal row)
DoAssignmentByRef appendRow_p1,method_ReportLogic_appendRow(me,row)
End Function
Public Function recordVisible_p1(ByVal nRecord)
DoAssignmentByRef recordVisible_p1,method_ReportLogic_recordVisible(me,nRecord)
End Function
Public Function getTotals()
DoAssignmentByRef getTotals,method_ReportLogic_getTotals(me)
End Function
Public Function getReport_p1(ByVal from)
DoAssignmentByRef getReport_p1,method_ReportLogic_getReport(me,from)
End Function
Public Function getReport()
DoAssignmentByRef getReport,method_ReportLogic_getReport(me,0)
End Function
Public Function addSummary_p4(ByVal recordsMode,ByRef summary,ByVal data,ByRef nTotalRecords)
DoAssignmentByRef addSummary_p4,method_Summarable_addSummary(me,recordsMode,summary,data,nTotalRecords)
End Function
Public Function func_makeSummary_p2(ByRef summary,ByVal deep)
DoAssignmentByRef func_makeSummary_p2,method_Summarable__makeSummary(me,summary,deep)
End Function
Public Function value2time_p1(ByVal value)
DoAssignmentByRef value2time_p1,method_Summarable_value2time(me,value)
End Function
Public Function time2printable_p1(ByVal time)
DoAssignmentByRef time2printable_p1,method_Summarable_time2printable(me,time)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"var_list", var_list
setArrElement out,"var_totalRecords", var_totalRecords
setArrElement out,"var_pages", var_pages
setArrElement out,"var_pagesize", var_pagesize
setArrElement out,"var_printpagesize", var_printpagesize
setArrElement out,"var_from", var_from
setArrElement out,"var_connection", var_connection
setArrElement out,"var_sql", var_sql
setArrElement out,"var_groups", var_groups
setArrElement out,"var_groupKeys", var_groupKeys
setArrElement out,"var_fullRequest", var_fullRequest
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_doPaging", var_doPaging
setArrElement out,"var_lastPageNumber", var_lastPageNumber
setArrElement out,"var_pageSummary", var_pageSummary
setArrElement out,"var_printRecordCount", var_printRecordCount
setArrElement out,"var_listedRows", var_listedRows
setArrElement out,"var_oldLevels", var_oldLevels
setArrElement out,"searchClauseObj", searchClauseObj
setArrElement out,"var_summary", var_summary
setArrElement out,"tName", tName
setArrElement out,"shortTName", shortTName
setArrElement out,"repGroupFieldsCount", repGroupFieldsCount
setArrElement out,"repPageSummary", repPageSummary
setArrElement out,"repGlobalSummary", repGlobalSummary
setArrElement out,"repLayout", repLayout
setArrElement out,"showGroupSummaryCount", showGroupSummaryCount
setArrElement out,"repShowDet", repShowDet
setArrElement out,"repGroupFields", repGroupFields
setArrElement out,"tKeyFields", tKeyFields
setArrElement out,"isExistTotalFields", isExistTotalFields
setArrElement out,"fieldsArr", fieldsArr
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment var_list, dict("var_list")
DoAssignment var_totalRecords, dict("var_totalRecords")
DoAssignment var_pages, dict("var_pages")
DoAssignment var_pagesize, dict("var_pagesize")
DoAssignment var_printpagesize, dict("var_printpagesize")
DoAssignment var_from, dict("var_from")
DoAssignment var_connection, dict("var_connection")
DoAssignment var_sql, dict("var_sql")
DoAssignment var_groups, dict("var_groups")
DoAssignment var_groupKeys, dict("var_groupKeys")
DoAssignment var_fullRequest, dict("var_fullRequest")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_doPaging, dict("var_doPaging")
DoAssignment var_lastPageNumber, dict("var_lastPageNumber")
DoAssignment var_pageSummary, dict("var_pageSummary")
DoAssignment var_printRecordCount, dict("var_printRecordCount")
DoAssignment var_listedRows, dict("var_listedRows")
DoAssignment var_oldLevels, dict("var_oldLevels")
DoAssignment searchClauseObj, dict("searchClauseObj")
DoAssignment var_summary, dict("var_summary")
DoAssignment tName, dict("tName")
DoAssignment shortTName, dict("shortTName")
DoAssignment repGroupFieldsCount, dict("repGroupFieldsCount")
DoAssignment repPageSummary, dict("repPageSummary")
DoAssignment repGlobalSummary, dict("repGlobalSummary")
DoAssignment repLayout, dict("repLayout")
DoAssignment showGroupSummaryCount, dict("showGroupSummaryCount")
DoAssignment repShowDet, dict("repShowDet")
DoAssignment repGroupFields, dict("repGroupFields")
DoAssignment tKeyFields, dict("tKeyFields")
DoAssignment isExistTotalFields, dict("isExistTotalFields")
DoAssignment fieldsArr, dict("fieldsArr")
End Sub
' end serialize
End Class
' ReportLogic implementation
Function method_ReportLogic_ReportLogic(byref this_object,ByVal sql,ByVal order,ByRef searchClauseObj,ByVal connection,ByVal pagesize,ByVal printpagesize,ByRef params)
this_object.var_from = 0
this_object.var_fullRequest = false
this_object.var_recordBasedRequest = false
this_object.var_doPaging = false
this_object.var_lastPageNumber = 0
this_object.var_printRecordCount = 0
this_object.var_listedRows = 0
this_object.searchClauseObj = null
doClassAssignment this_object,"var_summary",CreateDictionary()
this_object.tName = ""
this_object.shortTName = ""
this_object.repGroupFieldsCount = 0
this_object.repPageSummary = 0
this_object.repGlobalSummary = 0
this_object.repLayout = 0
this_object.showGroupSummaryCount = 0
this_object.repShowDet = 0
doClassAssignment this_object,"repGroupFields",CreateDictionary()
doClassAssignment this_object,"tKeyFields",CreateDictionary()
this_object.isExistTotalFields = false
doClassAssignment this_object,"fieldsArr",CreateDictionary()
Dim this
RunnerApply this_object,params
method_Summarable_Summarable this_object,params
doClassAssignment this_object,"var_connection",connection
doClassAssignment this_object,"searchClauseObj",searchClauseObj
doClassAssignment this_object,"var_sql",CreateClass("SQLStatement",6,sql,order,pagesize,connection,searchClauseObj,params,Empty)
doClassAssignment this_object,"var_groups",CreateClass("ReportGroups",4,this_object.var_sql,connection,pagesize,params,Empty,Empty,Empty)
doClassAssignment this_object,"var_pagesize",pagesize
doClassAssignment this_object,"var_printpagesize",IIF(IsLess(printpagesize,0),pagesize,printpagesize)
if bValue(this_object.searchClauseObj.isUsedSrch()) then
this_object.var_sql.initWhere
end if
this_object.init
End Function
Function method_ReportLogic_init(byref this_object,ByVal from)
method_Summarable_init this_object,from
doClassAssignment this_object.var_sql,"var_from",from
doClassAssignment this_object,"var_list",CreateDictionary()
this_object.var_totalRecords = 0
doClassAssignment this_object,"var_pages",CreateDictionary()
doClassAssignment this_object,"var_groupKeys",CreateDictionary()
this_object.var_lastPageNumber = 0
doClassAssignment this_object,"var_pageSummary",CreateDictionary()
this_object.var_printRecordCount = 0
this_object.var_listedRows = 0
doClassAssignment this_object,"var_oldLevels",CreateDictionary()
End Function
Function method_ReportLogic_getWhere(byref this_object)
doAssignmentByRef method_ReportLogic_getWhere,this_object.var_sql.getWhere()
Exit Function
End Function
Function method_ReportLogic_getPages(byref this_object)
doAssignmentByRef method_ReportLogic_getPages,this_object.var_pages
Exit Function
End Function
Function method_ReportLogic_getFormattedRow(byref this_object,ByVal value)
End Function
Function method_ReportLogic_writeGroup(byref this_object,ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
End Function
Function method_ReportLogic__writePage(byref this_object,ByRef page,ByVal src,ByVal count)
End Function
Function method_ReportLogic_writeGlobalSummary(byref this_object,ByVal source)
End Function
Function method_ReportLogic_writePageSummary(byref this_object)
Dim nCnt,result,page,this
if bValue(this_object.var_doPaging) then
nCnt = 0
do while IsLess(nCnt,asp_count(this_object.var_list))
if not (not IsEmpty(ArrayElement(this_object.var_pages,nCnt))) then
setArrElement this_object.var_pages,nCnt,CreateDictionary()
end if
doAssignmentByRef result,ArrayElement(this_object.var_pages,nCnt)
if not IsEmpty(ArrayElement(this_object.var_pageSummary,nCnt)) then
doAssignment page,ArrayElement(this_object.var_pageSummary,nCnt)
this_object.func_writePage_p3 result,IIF(not IsEmpty(ArrayElement(page,"summary")),ArrayElement(page,"summary"),CreateDictionary()),IIF(not IsEmpty(ArrayElement(page,"count")),ArrayElement(page,"count"),0)
else
this_object.func_writePage_p3 result,CreateDictionary(),0
end if
nCnt = CSmartDbl(nCnt)+1
loop
else
Set result = (CreateDictionary())
doAssignment page,this_object.var_summary
this_object.func_writePage_p3 result,IIF(not IsEmpty(ArrayElement(page,"summary")),ArrayElement(page,"summary"),CreateDictionary()),IIF(not IsEmpty(ArrayElement(page,"count")),ArrayElement(page,"count"),0)
doClassAssignment this_object,"var_summary",result
end if
if IsEqual(0,asp_count(this_object.var_pages)) and IsLess(0,asp_count(this_object.var_list)) then
setArrElement this_object.var_pages,asp_count(this_object.var_pages),this_object.var_summary
end if
End Function
Function method_ReportLogic_makeSummary(byref this_object)
Dim this
this_object.func_makeSummary_p2 this_object.var_summary,0
End Function
Function method_ReportLogic_setSummary(byref this_object,ByVal recordsMode,ByVal data,ByVal rowToAppend)
Dim level,setBegin,recordkeys,i,field,changed,nKey,nKey2,emptyRow,this,levels,added,nCnt,nPage
doAssignmentByRef level,this_object.var_summary
setBegin = false
if bValue(this_object.repGroupFieldsCount) then
Set recordkeys = (CreateDictionary())
i = 0
do while IsLess(i,asp_count(this_object.repGroupFields))
doAssignmentByRef field,this_object.var_sql.field_p1(CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1)
setArrElement recordkeys,CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1,field.getKey_p1(data)
i = CSmartDbl(i)+1
loop
if IsLess(0,asp_count(this_object.var_groupKeys)) then
changed = false
nKey = 0
do while IsLess(nKey,asp_count(recordkeys))
if not IsEqual(ArrayElement(recordkeys,nKey),ArrayElement(this_object.var_groupKeys,nKey)) then
changed = true
exit do
end if
nKey = CSmartDbl(nKey)+1
loop
if bValue(changed) then
nKey2 = CSmartDbl(asp_count(recordkeys))-1
do while IsLessOrEqual(nKey,nKey2)
doAssignmentByRef emptyRow,this_object.appendRow_p1(CreateDictionary())
doAssignmentByRef field,this_object.var_sql.field_p1(nKey2)
this_object.var_printRecordCount = CSmartDbl(this_object.var_printRecordCount)+CSmartDbl(field.var_rowsInSummary)
this_object.var_listedRows = CSmartDbl(this_object.var_listedRows)+1
setArrElementByRefN this_object.var_oldLevels,CreateArray2(nKey2,"_end"),emptyRow
nKey2 = CSmartDbl(nKey2)-1
loop
end if
end if
doClassAssignment this_object,"var_groupKeys",recordkeys
Set levels = (CreateDictionary())
i = 0
do while IsLess(i,asp_count(this_object.repGroupFields))
if not (not IsEmpty(ArrayElement(ArrayElement(level,"values"),ArrayElement(recordkeys,CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1)))) then
setArrElementN level,CreateArray2("values",ArrayElement(recordkeys,CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1)),CreateDictionary()
doAssignmentByRef level,ArrayElement(ArrayElement(level,"values"),ArrayElement(recordkeys,CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1))
doAssignmentByRef field,this_object.var_sql.field_p1(CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1)
this_object.var_printRecordCount = CSmartDbl(this_object.var_printRecordCount)+CSmartDbl(field.var_rowsInHeader)
setBegin = true
setArrElement level,"_first",data
else
doAssignmentByRef level,ArrayElement(ArrayElement(level,"values"),ArrayElement(recordkeys,CSmartDbl(ArrayElement(ArrayElement(this_object.repGroupFields,i),"groupOrder"))-1))
end if
setArrElementByRef levels,asp_count(levels),level
i = CSmartDbl(i)+1
loop
this_object.addSummary_p4 recordsMode,level,data,this_object.var_totalRecords
doClassAssignmentByRef this_object,"var_oldLevels",levels
else
this_object.addSummary_p4 recordsMode,level,data,this_object.var_totalRecords
end if
if bValue(rowToAppend) then
doAssignmentByRef added,this_object.appendRow_p1(rowToAppend)
this_object.var_printRecordCount = CSmartDbl(this_object.var_printRecordCount)+1
this_object.var_listedRows = CSmartDbl(this_object.var_listedRows)+1
if bValue(setBegin) and bValue(this_object.repGroupFieldsCount) then
nCnt = 0
do while IsLess(nCnt,asp_count(levels))
if not (not IsEmpty(ArrayElement(ArrayElement(levels,nCnt),"_begin"))) then
setArrElementByRefN levels,CreateArray2(nCnt,"_begin"),added
end if
nCnt = CSmartDbl(nCnt)+1
loop
end if
end if
if bValue(this_object.repPageSummary) then
if bValue(this_object.var_doPaging) and bValue(rowToAppend) then
nPage = CSmartDbl(asp_count(this_object.var_list))-1
if not (not IsEmpty(ArrayElement(this_object.var_pageSummary,nPage))) then
setArrElementN this_object.var_pageSummary,CreateArray2(nPage,"count"),0
end if
this_object.addSummary_p4 recordsMode,ArrayElement(this_object.var_pageSummary,nPage),data,ArrayElement(ArrayElement(this_object.var_pageSummary,nPage),"count")
end if
end if
End Function
Function method_ReportLogic_setFinish(byref this_object)
Dim nKey,field,emptyRow,this
if IsLess(0,asp_count(this_object.var_groupKeys)) then
nKey = CSmartDbl(asp_count(this_object.var_groupKeys))-1
do while IsLessOrEqual(0,nKey)
doAssignmentByRef field,this_object.var_sql.field_p1(nKey)
this_object.var_printRecordCount = CSmartDbl(this_object.var_printRecordCount)+CSmartDbl(field.var_rowsInSummary)
doAssignmentByRef emptyRow,this_object.appendRow_p1(CreateDictionary())
this_object.var_listedRows = CSmartDbl(this_object.var_listedRows)+1
setArrElementByRefN this_object.var_oldLevels,CreateArray2(nKey,"_end"),emptyRow
nKey = CSmartDbl(nKey)-1
loop
end if
End Function
Function method_ReportLogic_appendRow(byref this_object,ByVal row)
Dim page
if bValue(this_object.var_doPaging) then
doAssignmentByRef page,asp_intval(CSmartDbl(this_object.var_printRecordCount)/CSmartDbl(this_object.var_printpagesize))
if IsLess(0,page) and not (not IsEmpty(ArrayElement(this_object.var_list,CSmartDbl(page)-1))) then
Response.End
end if
setArrElementN this_object.var_list,CreateArray2(page,empty),row
doAssignmentByRef method_ReportLogic_appendRow,ArrayElement(ArrayElement(this_object.var_list,page),CSmartDbl(asp_count(ArrayElement(this_object.var_list,page)))-1)
Exit Function
else
setArrElement this_object.var_list,asp_count(this_object.var_list),row
doAssignmentByRef method_ReportLogic_appendRow,ArrayElement(this_object.var_list,CSmartDbl(asp_count(this_object.var_list))-1)
Exit Function
end if
End Function
Function method_ReportLogic_recordVisible(byref this_object,ByVal nRecord)
method_ReportLogic_recordVisible = (((bValue(this_object.var_doPaging) or IsEqual(this_object.var_sql.var_limitLevel,1)) or IsEqual(this_object.var_pagesize,-1)) or IsEqual(this_object.var_sql.var_limitLevel,2) and (IsLessOrEqual(0,CSmartDbl(nRecord)-CSmartDbl(this_object.var_sql.var_skipCount)) and IsLess(CSmartDbl(nRecord)-CSmartDbl(this_object.var_sql.var_skipCount),this_object.var_pagesize))) or IsEqual(this_object.var_sql.var_limitLevel,0) and (IsLessOrEqual(0,CSmartDbl(nRecord)-CSmartDbl(this_object.var_from)) and IsLess(CSmartDbl(nRecord)-CSmartDbl(this_object.var_sql.var_skipCount),CSmartDbl(this_object.var_from)+CSmartDbl(this_object.var_pagesize)))
Exit Function
End Function
Function method_ReportLogic_getTotals(byref this_object)
Dim totals,sql,totalRecords,cursor,data,this
if bValue(this_object.var_fullRequest) then
doAssignmentByRef method_ReportLogic_getTotals,this_object.var_groups.getSummary()
Exit Function
else
if bValue(this_object.var_groups.allGroupsUsed()) then
doAssignmentByRef method_ReportLogic_getTotals,this_object.var_summary
Exit Function
else
Set totals = (CreateDictionary())
doAssignmentByRef sql,this_object.var_sql.sqlt()
if not IsFalse(sql) then
totalRecords = 0
doAssignmentByRef cursor,db_query(sql,this_object.var_connection)
doAssignmentByRef data,db_fetch_array(cursor)
this_object.addSummary_p4 false,totals,data,totalRecords
end if
doAssignmentByRef method_ReportLogic_getTotals,totals
Exit Function
end if
end if
End Function
Function method_ReportLogic_getReport(byref this_object,ByVal from)
Dim this,isExistTimeFormatField,i,page,nRow,groups,hsql,hwhere,eventsObj,sql,cursor,data,visible,global_totals,globals,countrows,countGroups,maxpages,returnthis
this_object.init_p1 from
this_object.var_doPaging = IsEqual(from,-1)
isExistTimeFormatField = false
i = 0
do while IsLess(i,asp_count(this_object.fieldsArr))
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),"Time") then
isExistTimeFormatField = true
exit do
end if
i = CSmartDbl(i)+1
loop
this_object.var_fullRequest = bValue(this_object.var_doPaging) or bValue(this_object.repGlobalSummary) and bValue(isExistTimeFormatField)
if not bValue(bSubqueriesSupported) then
this_object.var_fullRequest = true
end if
doClassAssignment this_object,"var_recordBasedRequest",this_object.var_fullRequest
if not bValue(this_object.repGroupFieldsCount) then
this_object.var_recordBasedRequest = true
end if
this_object.var_sql.setRecordBasedRequest_p1 this_object.var_recordBasedRequest
if bValue(this_object.var_doPaging) or bValue(this_object.var_fullRequest) then
this_object.var_sql.var_limitLevel = 0
else
if not bValue(this_object.repGroupFieldsCount) then
this_object.var_sql.var_limitLevel = 2
else
this_object.var_sql.var_limitLevel = 1
end if
end if
page = -1
nRow = 0
if not bValue(this_object.var_recordBasedRequest) then
doAssignmentByRef groups,this_object.var_groups.getDisplayGroups_p1(from)
doAssignmentByRef hsql,this_object.var_sql.sql2_p1(groups)
if bValue(tableEventExists("BeforeQueryReport",this_object.tName)) then
doAssignment hwhere,ArrayElement(hsql,"where")
doAssignmentByRef eventsObj,getEventObject(this_object.tName)
eventsObj.BeforeQueryReport_p1 hwhere
setArrElement hsql,"where",hwhere
end if
doAssignmentByRef sql,this_object.var_sql.buildsql_p1(hsql)
doAssignmentByRef cursor,db_query(sql,this_object.var_connection)
do while bValue(doAssignmentByRef(data,db_fetch_array(cursor)))
this_object.setSummary_p3 this_object.repShowDet,data,IIF(this_object.recordVisible_p1(nRow),this_object.getFormattedRow_p1(data),null)
nRow = CSmartDbl(nRow)+1
loop
else
this_object.var_groups.init_p1 from
this_object.var_sql.setOldAlgorithm
doAssignmentByRef hsql,this_object.var_sql.sql2_p1(null)
doAssignmentByRef sql,this_object.var_sql.buildsql_p1(hsql)
doAssignmentByRef cursor,db_query(sql,this_object.var_connection)
do while bValue(doAssignmentByRef(data,db_fetch_array(cursor)))
if bValue(this_object.repGroupFieldsCount) then
this_object.var_groups.setGroup_p1 data
end if
if bValue(this_object.var_fullRequest) then
this_object.var_groups.setGlobalSummary_p2 true,data
end if
if bValue(this_object.repGroupFieldsCount) then
visible = (bValue(this_object.var_doPaging) or bValue(this_object.var_groups.isVisibleGroup())) or IsEqual(this_object.var_pagesize,-1)
else
doAssignmentByRef visible,this_object.recordVisible_p1(nRow)
end if
if bValue(visible) then
this_object.setSummary_p3 true,data,this_object.getFormattedRow_p1(data)
else
if not bValue(this_object.var_fullRequest) and IsLess(0,asp_count(this_object.var_list)) then
exit do
end if
end if
nRow = CSmartDbl(nRow)+1
loop
this_object.var_sql.setOldAlgorithm_p1 false
end if
this_object.setFinish
this_object.makeSummary
doAssignmentByRef global_totals,this_object.getTotals()
this_object.writePageSummary
doAssignmentByRef globals,this_object.writeGlobalSummary_p1(global_totals)
if bValue(this_object.repGroupFieldsCount) then
doAssignmentByRef countrows,this_object.var_groups.getCountGroups_p1(this_object.var_fullRequest)
doAssignment countGroups,countrows
else
doAssignment countrows,ArrayElement(global_totals,"count")
countGroups = 1
end if
maxpages = 1
if IsLess(0,this_object.var_pagesize) then
doAssignmentByRef maxpages,asp_ceil(CSmartDbl(countrows)/CSmartDbl(this_object.var_pagesize))
end if
Set returnthis = (CreateDictionary6("list",this_object.var_list,"global",globals,"page",this_object.var_summary,"maxpages",maxpages,"countRows",nRow,"countGroups",countGroups))
doAssignmentByRef method_ReportLogic_getReport,returnthis
Exit Function
End Function
'------ Class Report extends ReportLogic ------
Class Report
Public forExport
Public mode
Public var_list
Public var_totalRecords
Public var_pages
Public var_pagesize
Public var_printpagesize
Public var_from
Public var_connection
Public var_sql
Public var_groups
Public var_groupKeys
Public var_fullRequest
Public var_recordBasedRequest
Public var_doPaging
Public var_lastPageNumber
Public var_pageSummary
Public var_printRecordCount
Public var_listedRows
Public var_oldLevels
Public searchClauseObj
Public var_summary
Public tName
Public shortTName
Public repGroupFieldsCount
Public repPageSummary
Public repGlobalSummary
Public repLayout
Public showGroupSummaryCount
Public repShowDet
Public repGroupFields
Public tKeyFields
Public isExistTotalFields
Public fieldsArr
Public Function init_Report_p7(ByVal sql,ByVal order,ByRef searchClauseObj,ByVal connection,ByVal pagesize,ByVal printpagesize,ByRef params)
DoAssignmentByRef init_Report_p7,method_Report_Report(me,sql,order,searchClauseObj,connection,pagesize,printpagesize,params)
End Function
Public Function getFormattedRow_p1(ByVal value)
DoAssignmentByRef getFormattedRow_p1,method_Report_getFormattedRow(me,value)
End Function
Public Function writeGroup_p5(ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
DoAssignmentByRef writeGroup_p5,method_Report_writeGroup(me,begin,var_end,gkey,grp,nField)
End Function
Public Function func_writePage_p3(ByRef page,ByVal src,ByVal count)
DoAssignmentByRef func_writePage_p3,method_Report__writePage(me,page,src,count)
End Function
Public Function writeGlobalSummary_p1(ByVal source)
DoAssignmentByRef writeGlobalSummary_p1,method_Report_writeGlobalSummary(me,source)
End Function
Public Function init_p1(ByVal from)
DoAssignmentByRef init_p1,method_ReportLogic_init(me,from)
End Function
Public Function init()
DoAssignmentByRef init,method_ReportLogic_init(me,0)
End Function
Public Function getWhere()
DoAssignmentByRef getWhere,method_ReportLogic_getWhere(me)
End Function
Public Function getPages()
DoAssignmentByRef getPages,method_ReportLogic_getPages(me)
End Function
Public Function writePageSummary()
DoAssignmentByRef writePageSummary,method_ReportLogic_writePageSummary(me)
End Function
Public Function makeSummary()
DoAssignmentByRef makeSummary,method_ReportLogic_makeSummary(me)
End Function
Public Function setSummary_p3(ByVal recordsMode,ByVal data,ByVal rowToAppend)
DoAssignmentByRef setSummary_p3,method_ReportLogic_setSummary(me,recordsMode,data,rowToAppend)
End Function
Public Function setSummary_p2(ByVal recordsMode,ByVal data)
DoAssignmentByRef setSummary_p2,method_ReportLogic_setSummary(me,recordsMode,data,null)
End Function
Public Function setFinish()
DoAssignmentByRef setFinish,method_ReportLogic_setFinish(me)
End Function
Public Function appendRow_p1(ByVal row)
DoAssignmentByRef appendRow_p1,method_ReportLogic_appendRow(me,row)
End Function
Public Function recordVisible_p1(ByVal nRecord)
DoAssignmentByRef recordVisible_p1,method_ReportLogic_recordVisible(me,nRecord)
End Function
Public Function getTotals()
DoAssignmentByRef getTotals,method_ReportLogic_getTotals(me)
End Function
Public Function getReport_p1(ByVal from)
DoAssignmentByRef getReport_p1,method_ReportLogic_getReport(me,from)
End Function
Public Function getReport()
DoAssignmentByRef getReport,method_ReportLogic_getReport(me,0)
End Function
Public Function addSummary_p4(ByVal recordsMode,ByRef summary,ByVal data,ByRef nTotalRecords)
DoAssignmentByRef addSummary_p4,method_Summarable_addSummary(me,recordsMode,summary,data,nTotalRecords)
End Function
Public Function func_makeSummary_p2(ByRef summary,ByVal deep)
DoAssignmentByRef func_makeSummary_p2,method_Summarable__makeSummary(me,summary,deep)
End Function
Public Function value2time_p1(ByVal value)
DoAssignmentByRef value2time_p1,method_Summarable_value2time(me,value)
End Function
Public Function time2printable_p1(ByVal time)
DoAssignmentByRef time2printable_p1,method_Summarable_time2printable(me,time)
End Function
' serialize stuff
Public Function ASPserialize
dim out
set out=CreateDictionary()
setArrElement out,"forExport", forExport
setArrElement out,"mode", mode
setArrElement out,"var_list", var_list
setArrElement out,"var_totalRecords", var_totalRecords
setArrElement out,"var_pages", var_pages
setArrElement out,"var_pagesize", var_pagesize
setArrElement out,"var_printpagesize", var_printpagesize
setArrElement out,"var_from", var_from
setArrElement out,"var_connection", var_connection
setArrElement out,"var_sql", var_sql
setArrElement out,"var_groups", var_groups
setArrElement out,"var_groupKeys", var_groupKeys
setArrElement out,"var_fullRequest", var_fullRequest
setArrElement out,"var_recordBasedRequest", var_recordBasedRequest
setArrElement out,"var_doPaging", var_doPaging
setArrElement out,"var_lastPageNumber", var_lastPageNumber
setArrElement out,"var_pageSummary", var_pageSummary
setArrElement out,"var_printRecordCount", var_printRecordCount
setArrElement out,"var_listedRows", var_listedRows
setArrElement out,"var_oldLevels", var_oldLevels
setArrElement out,"searchClauseObj", searchClauseObj
setArrElement out,"var_summary", var_summary
setArrElement out,"tName", tName
setArrElement out,"shortTName", shortTName
setArrElement out,"repGroupFieldsCount", repGroupFieldsCount
setArrElement out,"repPageSummary", repPageSummary
setArrElement out,"repGlobalSummary", repGlobalSummary
setArrElement out,"repLayout", repLayout
setArrElement out,"showGroupSummaryCount", showGroupSummaryCount
setArrElement out,"repShowDet", repShowDet
setArrElement out,"repGroupFields", repGroupFields
setArrElement out,"tKeyFields", tKeyFields
setArrElement out,"isExistTotalFields", isExistTotalFields
setArrElement out,"fieldsArr", fieldsArr
set ASPserialize = out
End Function
Public Sub ASPunserialize(dict)
DoAssignment forExport, dict("forExport")
DoAssignment mode, dict("mode")
DoAssignment var_list, dict("var_list")
DoAssignment var_totalRecords, dict("var_totalRecords")
DoAssignment var_pages, dict("var_pages")
DoAssignment var_pagesize, dict("var_pagesize")
DoAssignment var_printpagesize, dict("var_printpagesize")
DoAssignment var_from, dict("var_from")
DoAssignment var_connection, dict("var_connection")
DoAssignment var_sql, dict("var_sql")
DoAssignment var_groups, dict("var_groups")
DoAssignment var_groupKeys, dict("var_groupKeys")
DoAssignment var_fullRequest, dict("var_fullRequest")
DoAssignment var_recordBasedRequest, dict("var_recordBasedRequest")
DoAssignment var_doPaging, dict("var_doPaging")
DoAssignment var_lastPageNumber, dict("var_lastPageNumber")
DoAssignment var_pageSummary, dict("var_pageSummary")
DoAssignment var_printRecordCount, dict("var_printRecordCount")
DoAssignment var_listedRows, dict("var_listedRows")
DoAssignment var_oldLevels, dict("var_oldLevels")
DoAssignment searchClauseObj, dict("searchClauseObj")
DoAssignment var_summary, dict("var_summary")
DoAssignment tName, dict("tName")
DoAssignment shortTName, dict("shortTName")
DoAssignment repGroupFieldsCount, dict("repGroupFieldsCount")
DoAssignment repPageSummary, dict("repPageSummary")
DoAssignment repGlobalSummary, dict("repGlobalSummary")
DoAssignment repLayout, dict("repLayout")
DoAssignment showGroupSummaryCount, dict("showGroupSummaryCount")
DoAssignment repShowDet, dict("repShowDet")
DoAssignment repGroupFields, dict("repGroupFields")
DoAssignment tKeyFields, dict("tKeyFields")
DoAssignment isExistTotalFields, dict("isExistTotalFields")
DoAssignment fieldsArr, dict("fieldsArr")
End Sub
' end serialize
End Class
' Report implementation
Function method_Report_Report(byref this_object,ByVal sql,ByVal order,ByRef searchClauseObj,ByVal connection,ByVal pagesize,ByVal printpagesize,ByRef params)
this_object.forExport = false
this_object.mode = MODE_LIST
this_object.var_from = 0
this_object.var_fullRequest = false
this_object.var_recordBasedRequest = false
this_object.var_doPaging = false
this_object.var_lastPageNumber = 0
this_object.var_printRecordCount = 0
this_object.var_listedRows = 0
this_object.searchClauseObj = null
doClassAssignment this_object,"var_summary",CreateDictionary()
this_object.tName = ""
this_object.shortTName = ""
this_object.repGroupFieldsCount = 0
this_object.repPageSummary = 0
this_object.repGlobalSummary = 0
this_object.repLayout = 0
this_object.showGroupSummaryCount = 0
this_object.repShowDet = 0
doClassAssignment this_object,"repGroupFields",CreateDictionary()
doClassAssignment this_object,"tKeyFields",CreateDictionary()
this_object.isExistTotalFields = false
doClassAssignment this_object,"fieldsArr",CreateDictionary()
Dim this
RunnerApply this_object,params
method_ReportLogic_ReportLogic this_object,sql,order,searchClauseObj,connection,pagesize,printpagesize,params
End Function
Function method_Report_getFormattedRow(byref this_object,ByVal value)
Dim row,keylink,i,pass,j,val,thumbname,filename
Set row = (CreateDictionary1("row_data",true))
keylink = ""
i = 0
do while IsLess(i,asp_count(this_object.tKeyFields))
keylink = CSmartStr(keylink) & ((("&key" & CSmartStr(CSmartDbl(i)+1)) & "=") & CSmartStr(htmlspecialchars(asp_rawurlencode(ArrayElement(value,ArrayElement(this_object.tKeyFields,i))))))
i = CSmartDbl(i)+1
loop
i = 0
c_reportlib_exitLoop36=false
do while IsLess(i,asp_count(this_object.fieldsArr))
c_reportlib_exitLoop36=false
do
pass = false
j = 0
do while IsLess(j,asp_count(this_object.repGroupFields))
if not bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"repPage")) or not (bValue(this_object.repShowDet) or IsEqual(ArrayElement(ArrayElement(this_object.repGroupFields,j),"strGroupField"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")) and IsIdentical(ArrayElement(ArrayElement(this_object.repGroupFields,j),"groupInterval"),0)) then
pass = true
end if
j = CSmartDbl(j)+1
loop
if bValue(pass) then
exit do
end if
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),FORMAT_DATABASE_IMAGE) then
if not bValue(this_object.forExport) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"showThumb")) then
val = CSmartStr(val) & "")
val = CSmartStr(val) & "
")
val = CSmartStr(val) & ""
else
val = "
")
end if
else
val = "LONG BINARY DATA - CANNOT BE DISPLAYED"
end if
else
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),FORMAT_FILE_IMAGE) then
if not bValue(this_object.forExport) then
if bValue(CheckImageExtension(ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"showThumb")) then
thumbname = CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"thumbnail")) & CSmartStr(ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))
if not IsEqual(asp_substr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"strhlPrefix"),0,7),"http://") and not bValue(myfile_exists(getabspath(CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"strhlPrefix")) & CSmartStr(thumbname)))) then
doAssignment thumbname,ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))
end if
val = "")
val = CSmartStr(val) & "
")
else
val = "
")
end if
end if
else
val = "LONG BINARY DATA - CANNOT BE DISPLAYED"
end if
else
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),FORMAT_DATABASE_FILE) then
if not bValue(this_object.forExport) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"fileName")) then
doAssignment filename,ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"fileName"))
if not bValue(filename) then
filename = "file.bin"
end if
else
filename = "file.bin"
end if
if bValue(asp_strlen(ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
val = ((((((""
val = CSmartStr(val) & CSmartStr(htmlspecialchars(filename))
val = CSmartStr(val) & ""
end if
else
val = "LONG BINARY DATA - CANNOT BE DISPLAYED"
end if
else
if (IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),EDIT_FORMAT_LOOKUP_WIZARD) or IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),EDIT_FORMAT_RADIO)) and IsEqual(GetLookupType(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),this_object.tName),LT_LOOKUPTABLE) then
doAssignmentByRef val,DisplayLookupWizard(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),value,keylink,this_object.mode)
else
if bValue(NeedEncode(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),this_object.tName)) then
doAssignmentByRef val,ProcessLargeText(GetData(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat")),("field=" & CSmartStr(asp_rawurlencode(htmlspecialchars(ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"))))) & CSmartStr(keylink),"",this_object.mode,"")
else
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),FORMAT_CHECKBOX) and bValue(this_object.forExport) then
doAssignmentByRef val,GetData(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),FORMAT_NONE)
else
doAssignmentByRef val,GetData(value,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"))
end if
end if
end if
end if
end if
end if
setArrElement row,CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName")) & "_value",val
loop while false
if c_reportlib_exitLoop36 then _
exit do
i = CSmartDbl(i)+1
loop
if IsEqual(this_object.repLayout,REPORT_BLOCK) then
setArrElement row,GoodFieldName("nonewgroup"),true
end if
doAssignmentByRef method_Report_getFormattedRow,row
Exit Function
End Function
Function method_Report_writeGroup(byref this_object,ByRef begin,ByRef var_end,ByVal gkey,ByVal grp,ByVal nField)
Dim field,gname,i,bFound,nG,gname2,j,gvalue,formattedValue
doAssignmentByRef field,this_object.var_sql.field_p1(nField)
doAssignmentByRef gname,field.name()
i = 0
do while IsLess(i,asp_count(this_object.repGroupFields))
if IsEqual(gname,ArrayElement(ArrayElement(this_object.repGroupFields,i),"strGroupField")) then
if IsEqual(this_object.repLayout,REPORT_BLOCK) then
bFound = false
nG = 0
do while IsLess(nG,this_object.repGroupFieldsCount)
doAssignmentByRef field,this_object.var_sql.field_p1(nG)
doAssignmentByRef gname2,field.name()
if IsLess(nG,nField) then
if not IsEmpty(ArrayElement(begin,GoodFieldName(CSmartStr(gname2) & "_firstnewgroup"))) then
bFound = true
end if
else
asp_unsetElement begin,GoodFieldName(CSmartStr(gname2) & "_firstnewgroup")
end if
nG = CSmartDbl(nG)+1
loop
if not bValue(bFound) then
setArrElement begin,GoodFieldName(CSmartStr(gname) & "_firstnewgroup"),true
end if
asp_unsetElement begin,GoodFieldName("nonewgroup")
else
setArrElement begin,GoodFieldName(CSmartStr(gname) & "_newgroup"),true
end if
setArrElement var_end,GoodFieldName(CSmartStr(gname) & "_endgroup"),true
if bValue(ArrayElement(ArrayElement(this_object.repGroupFields,i),"showGroupSummary")) then
setArrElement var_end,GoodFieldName(("group" & CSmartStr(gname)) & "_total_cnt"),ArrayElement(grp,"count")
end if
j = 0
do while IsLess(j,asp_count(this_object.fieldsArr))
if bValue(asp_is_array(ArrayElement(grp,"summary"))) then
if bValue(asp_is_array(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")))) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalMax")) then
setArrElement var_end,((("group" & CSmartStr(GoodFieldName(gname))) & "_total") & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,j),"goodName"))) & "_max",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")),"MAX"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalMin")) then
setArrElement var_end,((("group" & CSmartStr(GoodFieldName(gname))) & "_total") & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,j),"goodName"))) & "_min",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")),"MIN"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalAvg")) then
setArrElement var_end,((("group" & CSmartStr(GoodFieldName(gname))) & "_total") & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,j),"goodName"))) & "_avg",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")),"AVG"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,j),"totalSum")) then
setArrElement var_end,((("group" & CSmartStr(GoodFieldName(gname))) & "_total") & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,j),"goodName"))) & "_sum",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(grp,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name")),"SUM"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"editFormat"),this_object.mode)
end if
end if
end if
if IsEqual(ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.repGroupFields,i),"strGroupField")) then
doAssignmentByRef field,this_object.var_sql.field_p1(nField)
doAssignmentByRef gvalue,field.getFieldName_p2(gkey,ArrayElement(grp,"_first"))
if bValue(field.overrideFormat()) then
setArrElement begin,GoodFieldName(CSmartStr(GoodFieldName(gname)) & "_grval"),htmlspecialchars(gvalue)
if bValue(this_object.showGroupSummaryCount) then
setArrElement var_end,GoodFieldName(CSmartStr(GoodFieldName(gname)) & "_grval"),htmlspecialchars(gvalue)
end if
else
doAssignmentByRef formattedValue,getFormattedValue(gvalue,ArrayElement(ArrayElement(this_object.fieldsArr,j),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,j),"editFormat"),this_object.mode)
setArrElement begin,GoodFieldName(CSmartStr(gname) & "_grval"),htmlspecialchars(formattedValue)
if bValue(this_object.showGroupSummaryCount) then
setArrElement var_end,GoodFieldName(CSmartStr(gname) & "_grval"),htmlspecialchars(formattedValue)
end if
end if
end if
j = CSmartDbl(j)+1
loop
end if
i = CSmartDbl(i)+1
loop
End Function
Function method_Report__writePage(byref this_object,ByRef page,ByVal src,ByVal count)
Dim i
setArrElement page,"page_summary",true
if bValue(this_object.repPageSummary) then
i = 0
do while IsLess(i,asp_count(this_object.fieldsArr))
if bValue(asp_is_array(ArrayElement(src,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
setArrElement page,("page_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_sum",getFormattedValue(ArrayElement(ArrayElement(src,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
setArrElement page,("page_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_avg",getFormattedValue(ArrayElement(ArrayElement(src,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
setArrElement page,("page_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_min",getFormattedValue(ArrayElement(ArrayElement(src,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
setArrElement page,("page_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_max",getFormattedValue(ArrayElement(ArrayElement(src,ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
end if
i = CSmartDbl(i)+1
loop
setArrElement page,"page_total_cnt",count
end if
End Function
Function method_Report_writeGlobalSummary(byref this_object,ByVal source)
Dim result,i
Set result = (CreateDictionary())
if bValue(this_object.repGlobalSummary) then
if bValue(asp_is_array(ArrayElement(source,"summary"))) then
i = 0
do while IsLess(i,asp_count(this_object.fieldsArr))
if bValue(asp_is_array(ArrayElement(ArrayElement(source,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")))) then
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMax")) then
setArrElement result,("global_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_max",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(source,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MAX"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalMin")) then
setArrElement result,("global_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_min",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(source,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"MIN"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalAvg")) then
setArrElement result,("global_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_avg",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(source,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"AVG"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
if bValue(ArrayElement(ArrayElement(this_object.fieldsArr,i),"totalSum")) then
setArrElement result,("global_total" & CSmartStr(ArrayElement(ArrayElement(this_object.fieldsArr,i),"goodName"))) & "_sum",getFormattedValue(ArrayElement(ArrayElement(ArrayElement(source,"summary"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name")),"SUM"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"name"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"viewFormat"),ArrayElement(ArrayElement(this_object.fieldsArr,i),"editFormat"),this_object.mode)
end if
end if
i = CSmartDbl(i)+1
loop
end if
setArrElement result,"global_total_cnt",ArrayElement(source,"count")
end if
doAssignmentByRef method_Report_writeGlobalSummary,result
Exit Function
End Function
%>