📄 report.asp
字号:
End If
End If
<!--##
End If
##-->
sSqlMaster = ewBuildSql(ewSqlMasterSelect, ewSqlMasterWhere, ewSqlMasterGroupBy, ewSqlMasterHaving, ewSqlMasterOrderBy, sDbWhereMaster, "")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = <!--##=ewCursorLocation##-->
rs.Open sSqlMaster, conn
bMasterRecordExist = (Not rs.Eof)
If Not bMasterRecordExist Then
Session(ewSessionTblMasterWhere) = ""
Session(ewSessionTblDetailWhere) = ""
Session(ewSessionMessage) = "<!--##@NoRecord##-->"
conn.Close ' Close Connection
Set conn = Nothing
Response.Redirect "<!--##=fn_list##-->"
End If
rs.Close
Set rs = Nothing
End If
%>
<!--##
' Restore Current Table
Set TABLE = DETAILTABLE
End If
##-->
<!--##/session##-->
<!--##session reportcontent##-->
<!--##
If bMasterTableExist Then
sTblVar = TABLE.TblVar ' Get detail table var
Set DETAILTABLE = TABLE ' Save current table
Set TABLE = MASTERTABLE
If bExportHtml Or bExportWord Or bExportExcel Then
sExpStart = "<% If sExport = """" Then %>"
sExpEnd = "<% End If %>"
Else
sExpStart = ""
sExpEnd = ""
End If
##-->
<% If sDbWhereMaster <> "" Then %>
<!--##=sExpStart##-->
<p><span class="aspmaker"><a href="<!--##=fn_list##-->"><!--##@BackToMasterPage##--></a></span></p>
<!--##=sExpEnd##-->
<% End If %>
<!--##
' Restore Current Table
Set TABLE = DETAILTABLE
End If
##-->
<p><span class="aspmaker"><!--##@Report##-->: <!--##=TABLE.TblCaption##-->
<!--## If bExportHtml Or bExportWord Or bExportExcel Then ##-->
<% If sExport = "" Then %>
<!--## If bExportHtml Then ##-->
<a href="<!--##=fn_report##-->?export=html"><!--##@PrinterFriendly##--></a>
<!--## End If ##-->
<!--## If bExportExcel Then ##-->
<a href="<!--##=fn_report##-->?export=excel"><!--##@ExportToExcel##--></a>
<!--## End If ##-->
<!--## If bExportWord Then ##-->
<a href="<!--##=fn_report##-->?export=word"><!--##@ExportToWord##--></a>
<!--## End If ##-->
<% End If %>
<!--## End If ##-->
</span></p>
<form method="post">
<table class="ewReportTable" cellspacing="-1">
<%
<!--##
If nGroups = 0 Then
##-->
nRecCount = 1 ' No Grouping
<!--##
Else
' Process Group Level
##-->
sFilter = <!--##=Table_DefaultFilter##-->
<!--## If bUserLevel Then ##-->
If (ewCurSec And ewAllowList) <> ewAllowList Then
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & "(0=1)"
End If
<!--## End If ##-->
<!--##
If bTableHasUserIDFld Or bMasterTableHasUserIDFld Then
##-->
If CurrentUserID <> "-1" And CurrentUserID <> "" Then ' Non system admin
<!--##
If bTableHasUserIDFld Then
Set FIELD = TABLE.Fields(TABLE.TblUserIDFld)
sFldName = ewFieldName()
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
<!--## If bParentUserID Then ##-->
sParentUserIDQuery = GetParentUserIDQuery(CurrentUserID)
If sParentUserIDQuery <> "" Then
sFilter = sFilter & "((" & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID)) & ") OR (" & sParentUserIDQuery & "))"
Else
sFilter = sFilter & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID))
End If
<!--## Else ##-->
sFilter = sFilter & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID))
<!--##
End If
End If
If bMasterTableHasUserIDFld Then
##-->
sMasterUserIDQuery = GetMasterUserIDQuery(CurrentUserID)
If sMasterUserIDQuery <> "" Then
<!--##
If Not bUseSubQuery Then
##-->
sTmpQuery = sMasterUserIDQuery
<!--##
For i = 0 to UBound(arMasterFldNames)
##-->
sTmpQuery = Replace(sTmpQuery, "#Key<!--##=i##-->", "<!--##=arDetailFldNames(i)##-->")
<!--##
Next
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & sTmpQuery
<!--##
Else
For i = 0 to UBound(arMasterFldNames)
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
sTmpQuery = sMasterUserIDQuery
sTmpQuery = Replace(sTmpQuery, "#MasterKey", "<!--##=arMasterFldNames(i)##-->")
sTmpQuery = Replace(sTmpQuery, "#Key", "<!--##=arDetailFldNames(i)##-->")
sFilter = sFilter & sTmpQuery
<!--##
Next
End If
##-->
End If
<!--##
End If
##-->
End If
<!--##
End If
##-->
If sDbWhereDetail <> "" Then
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & "(" & sDbWhereDetail & ")"
End If
' Set up SQL
sSql = ewBuildSql(ewSqlGrpSelect, ewSqlGrpWhere, ewSqlGrpGroupBy, ewSqlGrpHaving, ewSqlGrpOrderBy, sFilter, "")
'Response.Write sSql
' Set up Record Set
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = <!--##=ewCursorLocation##-->
rs.Open sSql, conn, 1, 2
' Get First Row
If Not rs.Eof Then
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGroupBy > 0 Then
##-->
<!--##=FIELD.FldVar##--> = rs("<!--##=FIELD.FldName##-->")
<!--## If FIELD.FldType = 18 Or FIELD.FldType = 19 Then ##-->
<!--##=FIELD.FldVar##--> = ewConv(<!--##=FIELD.FldVar##-->, <!--##=FIELD.FldType##-->) ' Convert adUnsignedSmallInt/adUnsignedInt
<!--## End If ##-->
grp_<!--##=FIELD.FldVar##--> = <!--##=FIELD.FldVar##-->
<!--##
End If
Next
##-->
End If
nRecCount = 0
nCntRecs(0) = 0
Call ChkLvlBreak()
Do While (Not rs.Eof)
' Show Group Headers
<!--##
arrGroups = split(sGroupFldNames,",")
For i = 0 to ubound(arrGroups)
grpID = i + 1
sTDIndent = ""
If sIndent <> "" Then
For j = 1 to i
sTDIndent = sTDIndent & sIndent
Next
nColSpan = nGroups - i
nFldSpan = nFlds
Else
nColspan = 1
If bAggregate Then
nFldSpan = nFlds
Else
nFldSpan = nFlds - 1
End If
End If
If nColSpan > 1 Then
sTDSpan = " colspan=" & nColSpan
Else
sTDSpan = ""
End If
SET FIELD = TABLE.Fields(arrGroups(i))
##-->
If bLvlBreak(<!--##=grpID##-->) Then ' Reset Counter and Aggregation
%>
<tr><!--##=sTDIndent##--><td<!--##=sTDSpan##--><!--##=ewCSSGroupField##-->><span class="aspmaker"><!--##=FIELD.FldCaption##--></span></td>
<td colspan=<!--##=nFldSpan##--><!--##=ewCSSGroupName##-->><span class="aspmaker"><!--##=FieldView##--></span></td></tr>
<%
End If
<!--##
Next
End If
' Process Detail Level
sDetailWhere = ""
sOrderBy = sOrderFldSrcs
##-->
' Get Detail Records
sFilter = <!--##=Table_DefaultFilter##-->
<!--##
If sGroupFldNames <> "" Then
arrGroups = split(sGroupFldNames,",")
For i = 0 to ubound(arrGroups)
Set FIELD = TABLE.Fields(arrGroups(i))
sFldVar = FIELD.FldVar
sFldName = ewFieldName()
If ewGetFieldType(FIELD.FldType) = 2 And _
FIELD.FldViewTag = "FORMATTED TEXT" And FIELD.FldFmtType = "Date/Time" Then
sFilterFld = "EW_UnFormatDateTime(EW_FormatDateTime(" & sFldVar & "," & FIELD.FldDtFormat & ")," & FIELD.FldDtFormat & ")"
Else
sFilterFld = sFldVar
End If
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
If IsNull(<!--##=sFldVar##-->) Then
sFilter = sFilter & "(<!--##=Quote(sFldName)##--> IS NULL)"
Else
sFilter = sFilter & "(<!--##=Quote(sFldName)##--> = <!--##=FIELD.FldQuoteS##-->" & AdjustSql(<!--##=sFilterFld##-->) & "<!--##=FIELD.FldQuoteE##-->)"
End If
<!--##
Next
End If
##-->
If sDbWhereDetail <> "" Then
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & "(" & sDbWhereDetail & ")"
End If
<!--## If bUserLevel Then ##-->
If (ewCurSec And ewAllowList) <> ewAllowList Then
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & "(0=1)"
End If
<!--## End If ##-->
<!--##
If bTableHasUserIDFld Or bMasterTableHasUserIDFld Then
##-->
If CurrentUserID <> "-1" And CurrentUserID <> "" Then ' Non system admin
<!--##
If bTableHasUserIDFld Then
Set FIELD = TABLE.Fields(TABLE.TblUserIDFld)
sFldName = ewFieldName()
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
<!--## If bParentUserID Then ##-->
sParentUserIDQuery = GetParentUserIDQuery(CurrentUserID)
If sParentUserIDQuery <> "" Then
sFilter = sFilter & "((" & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID)) & ") OR (" & sParentUserIDQuery & "))"
Else
sFilter = sFilter & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID))
End If
<!--## Else ##-->
sFilter = sFilter & Replace(ewSqlUserIDFilter, "#UserID", AdjustSql(CurrentUserID))
<!--##
End If
End If
If bMasterTableHasUserIDFld Then
##-->
sMasterUserIDQuery = GetMasterUserIDQuery(CurrentUserID)
If sMasterUserIDQuery <> "" Then
<!--##
If Not bUseSubQuery Then
##-->
sTmpQuery = sMasterUserIDQuery
<!--##
For i = 0 to UBound(arMasterFldNames)
##-->
sTmpQuery = Replace(sTmpQuery, "#Key<!--##=i##-->", "<!--##=arDetailFldNames(i)##-->")
<!--##
Next
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & sTmpQuery
<!--##
Else
For i = 0 to UBound(arMasterFldNames)
##-->
If sFilter <> "" Then sFilter = sFilter & " AND "
sTmpQuery = sMasterUserIDQuery
sTmpQuery = Replace(sTmpQuery, "#MasterKey", "<!--##=arMasterFldNames(i)##-->")
sTmpQuery = Replace(sTmpQuery, "#Key", "<!--##=arDetailFldNames(i)##-->")
sFilter = sFilter & sTmpQuery
<!--##
Next
End If
##-->
End If
<!--##
End If
##-->
End If
<!--##
End If
##-->
' Set up SQL
sSql = ewBuildSql(ewSqlDtlSelect, ewSqlDtlWhere, ewSqlDtlGroupBy, ewSqlDtlHaving, ewSqlDtlOrderBy, sFilter, "")
' Set up Record Set
Set rsdtl = Server.CreateObject("ADODB.Recordset")
rsdtl.CursorLocation = <!--##=ewCursorLocation##-->
rsdtl.Open sSql, conn, 1, 2
nDtlRecs = rsdtl.RecordCount
' Initialize Aggregate
If not rsdtl.eof Then
nRecCount = nRecCount + 1
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldList And FIELD.FldGroupBy <= 0 And FIELD.FldGenerate And FIELD.FldHtmlTag <> "FILE" And _
(FIELD.FldRptAggSum Or FIELD.FldRptAggAvg Or FIELD.FldRptAggMin Or FIELD.FldRptAggMax) Then
##-->
<!--##=FIELD.FldVar##--> = rsdtl("<!--##=FIELD.FldName##-->")
<!--## If FIELD.FldType = 18 Or FIELD.FldType = 19 Then ##-->
<!--##=FIELD.FldVar##--> = ewConv(<!--##=FIELD.FldVar##-->, <!--##=FIELD.FldType##-->) ' Convert adUnsignedSmallInt/adUnsignedInt
<!--## End If ##-->
<!--##
End If
Next
##-->
End If
If nRecCount = 1 Then
nCntRecs(0) = 0
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldList And FIELD.FldGroupBy <= 0 And FIELD.FldGenerate And FIELD.FldHtmlTag <> "FILE" Then
sFldVar = FIELD.FldVar
If FIELD.FldRptAggSum Or FIELD.FldRptAggAvg Then
##-->
s<!--##=sFldVar##-->(0) = 0
<!--##
End If
If FIELD.FldRptAggMin Then
##-->
If not rsdtl.eof Then
n<!--##=sFldVar##-->(0) = <!--##=sFldVar##-->
Else
n<!--##=sFldVar##-->(0) = 0
End If
<!--##
End If
If FIELD.FldRptAggMax Then
##-->
If not rsdtl.eof Then
m<!--##=sFldVar##-->(0) = <!--##=sFldVar##-->
Else
m<!--##=sFldVar##-->(0) = 0
End If
<!--##
End If
End If
Next
##-->
End If
<!--##
If nGroups > 0 Then
##-->
For i = 1 to <!--##=nGroups##-->
If bLvlBreak(i) Then ' Reset Counter and Aggregation
nCntRecs(i) = 0
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldList And FIELD.FldGroupBy <= 0 And FIELD.FldGenerate And FIELD.FldHtmlTag <> "FILE" Then
sFldVar = FIELD.FldVar
If FIELD.FldRptAggSum Or FIELD.FldRptAggAvg Then
##-->
s<!--##=sFldVar##-->(i) = 0
<!--##
End If
If FIELD.FldRptAggMin Then
##-->
If not rsdtl.eof Then
n<!--##=sFldVar##-->(i) = <!--##=sFldVar##-->
Else
n<!--##=sFldVar##-->(i) = 0
End If
<!--##
End If
If FIELD.FldRptAggMax Then
##-->
If not rsdtl.eof Then
m<!--##=sFldVar##-->(i) = <!--##=sFldVar##-->
Else
m<!--##=sFldVar##-->(i) = 0
End If
<!--##
End If
End If
Next
##-->
End If
Next
<!--##
End If
##-->
<!--##
For i = 0 to nGroups
##-->
nCntRecs(<!--##=i##-->) = nCntRecs(<!--##=i##-->) + nDtlRecs
<!--##
Next
##-->
%>
<tr>
<!--##
If sIndent <> "" Then
For i = 1 to nGroups
##-->
<!--##=sIndent##-->
<!--##
Next
Else
If bAggregate Then
##-->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -