Rev 5506 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'=====================================================' sdk_details_json.asp' Ajax support for table of SDK Content' Designed to be driven by the jquery tablescroller' Uses DataTables 1.10 format data'=====================================================%><%Option explicit' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)Response.ContentType = "text/html"Response.AddHeader "Content-Type", "text/html;charset=UTF-8"Response.CodePage = 65001Response.CharSet = "UTF-8"%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim result : result = -1Dim SqlQryDim rsQryDim sdktag_id : sdktag_id = Request("sdktag_id")Dim sdk_reftag_id : sdk_reftag_id = Request("sdk_reftag_id") : if sdk_reftag_id = "" Then sdk_reftag_id = 0Dim sdk_statefilter : sdk_statefilter = Request("sdk_statefilter")' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSON :Set oJSON = New aspJSONDim newitem'' Determine the size of the record set' Gives bad results when searchingDim MaxCount : MaxCount = 0SqlQry = "select count(*) as count from SDK_CONTENT skc where SDKTAG_ID = '" & sdktag_id &"'"If sdk_statefilter ThenSqlQry = SqlQry & " AND skc.sdkpkg_state in ('E')"End IfOn Error Resume NextobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) ThenMaxCount = rsQry("COUNT")End IfrsQry.CloseSet rsQry = Nothing' Basic Header' iTotalRecords = total records without any filtering/limits' iTotalDisplayRecords = filtered result countoJSON.data("draw") = CInt(Request.QueryString("draw"))oJSON.data("recordsTotal") = MaxCountoJSON.data("recordsFiltered") = MaxCountDim vNamefor each vName in Request.QueryStringoJSON.data("sReq_" & vName) = Request.QueryString(vName)next' Extract selected rangeresult = 0dim firstRow,lastRowfirstRow = CInt(Request.QueryString("start"))lastRow = firstRow + CInt(Request.QueryString("length"))'' Define array of colums to sort by' Must match user sort column requestDim sortCols: sortCols = Array ( _"pv_id", _"UPPER(pkg_name)", _"UPPER(pkg_version)", _"UPPER(ref_pkg_version)", _"UPPER(NVL(ref_sdkpkg_state,'-'))" , _"UPPER(NVL(sdkpkg_state,'-'))" )' Dim determine sorting options' Sort by specified colum' Then sort by package name' Default - sort by package nameDim sortStringDim sortJoin : sortJoin = " ORDER BY "If Request.QueryString("order[0][column]") <> "" ThenDim sortCol : sortCol = CInt(Request.QueryString("order[0][column]"))Dim sortDir : sortDir = " " & Request.QueryString("order[0][dir]")sortString = sortJoin & sortCols(sortCol)sortString = sortString & sortDirsortJoin = ","If sortCol <> 1 ThensortString = sortString &sortJoin & sortCols(CInt(1))& sortDirEnd IfElsesortString = sortJoin & sortCols(CInt(1)) & " asc"End If' Filter (search )' Filter by search string' Filter by stateDim searchJoin : searchJoin = " WHERE "Dim searchString : searchString = ""If Request.QueryString("search[value]") <> "" ThensearchString = searchJoin & "upper(pkg_name) || '_' || UPPER(pkg_version) LIKE upper('%" & Request.QueryString("search[value]") & "%')"searchJoin = " AND "End IfIf sdk_statefilter ThensearchString = searchString & searchJoin & "sdkpkg_state in ('E') OR REF_SDKPKG_STATE in ('E')"End IfDim BasicSqlBasicSql = "SELECT * from (" &_"SELECT " &_"A.PV_ID," &_"NVL(A.PKG_NAME, B.PKG_NAME) as PKG_NAME," &_"A.PKG_VERSION," &_"B.PKG_VERSION as REF_PKG_VERSION," &_"A.sdkpkg_state," &_"B.sdkpkg_state as REF_SDKPKG_STATE" &_" FROM " &_"(SELECT p.pkg_name || pv.v_ext as mname," &_" sc.pv_id," &_" p.pkg_name," &_" pv.pkg_version," &_" sc.sdkpkg_state" &_" FROM SDK_CONTENT SC ," &_" PACKAGE_VERSIONS pv," &_" PACKAGES p" &_" WHERE sc.sdktag_id = " & sdktag_id &_" AND pv.pv_id = sc.pv_id" &_" AND p.pkg_id = pv.pkg_id" &_") A" &_" FULL OUTER JOIN" &_"(" &_"SELECT p.pkg_name || pv.v_ext as mname," &_" sc.pv_id," &_" p.pkg_name," &_" pv.pkg_version," &_" sc.sdkpkg_state" &_" FROM SDK_CONTENT SC ," &_" PACKAGE_VERSIONS pv," &_" PACKAGES p" &_" WHERE sc.sdktag_id = " & sdk_reftag_id &_" AND pv.pv_id = sc.pv_id" &_" AND p.pkg_id = pv.pkg_id" &_" ) B" &_" ON A.mname = B.mname)" &_searchString &_sortStringSqlQry = "select * from ( "&_"select a.*, ROWNUM rnum from (" & BasicSql &_") a where ROWNUM <= " & lastRow &_") where rnum >= " & firstRow' Assist in debugoJSON.data("BasicSql") = BasicSql'oJSON.data("SqlQry") = SqlQry' Perform the database querySet oJSON.data("aaData") = oJSON.Collection()On Error Resume NextobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )objEH.CatchORA ( OraSession )' Process each row and return required fields to the userIf objEH.Finally ThenOn Error goto 0While (NOT rsQry.BOF) AND (NOT rsQry.EOF)Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))Dim iifor ii = 0 to rsQry.Fields.Count - 2newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)'newitem (ii) = rsQry.Fields(ii)NextrsQry.MoveNextWendEnd IFrsQry.CloseSet rsQry = Nothing'' SQL error detection and reporting' The content of 'error' will be dsplayed to the user.If objEH.LastOraFailed ThenoJSON.data("error") = objEH.MessageSummaryoJSON.data("emsgDetails") = objEH.MessageDetailsoJSON.data("SqlQry") = SqlQryEnd If'Return the objectResponse.Write oJSON.JSONoutput()Set oJSON = NothingCall Destroy_All_Objects%>