Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'====================================================='| |'| DIFF |'| |'=====================================================%><%Option explicit' Good idea to set when using redirectResponse.Expires = 0 ' always load the page, dont store%><%'To enable the script timeout to 5 minsServer.ScriptTimeout=600%><!--#include file="common/config.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/formating.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/common_dbedit.asp"--><!--#include file="common/_form_window_common.asp"--><!--#include file="common/_rtree_common.asp"--><%'------------ ACCESS CONTROL ------------------%><!--#include file="_access_control_general.asp"--><%'------------ Variable Definition -------------Dim rsQryDim objRelCollectorADim objRelCollectorBDim parRtagADim parRtagBDim parSBOMADim parSBOMBDim dDiffFilterDim colorA, colorB, ChangeTypeIconDim btnMerge, btnRemoveDim rowIdDim FSODim NewTextFileDim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, sqlstrC, counterBDim SSsql, retVal, rsCQ, DEVIiss, TDSEiss, VT5DMiss, VTSUPissDim a, b, c, d, pkgversion, errormsg, source_changeDim VersionListDim fileName, pathName'------------ Variable Init -------------------Set rsCQ = Server.CreateObject("ADODB.Recordset")parRtagA = Request("rtagA")parRtagB = Request("rtagB")parSBOMA = Request("sbomA")parSBOMB = Request("sbomB")Set objRelCollectorA = CreateObject("Scripting.Dictionary")Set objRelCollectorB = CreateObject("Scripting.Dictionary")Set dDiffFilter = CreateObject("Scripting.Dictionary")'--------------------------------------------------------------------------------------------------------------------------Sub Javascript()NewTextFile.WriteLine("<script language=""JavaScript"" type=""text/javascript"">")NewTextFile.WriteLine("function MM_findObj(n, d) { //v4.0")NewTextFile.WriteLine(" var p,i,x;")NewTextFile.WriteLine(" if(!d) d=document; ")NewTextFile.WriteLine(" if((p=n.indexOf(""?""))>0&&parent.frames.length) {")NewTextFile.WriteLine(" d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);")NewTextFile.WriteLine(" }")NewTextFile.WriteLine(" if(!(x=d[n])&&d.all) x=d.all[n]; ")NewTextFile.WriteLine(" for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];")NewTextFile.WriteLine(" for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);")NewTextFile.WriteLine(" if(!x && document.getElementById) x=document.getElementById(n); ")NewTextFile.WriteLine(" return x;")NewTextFile.WriteLine("}")NewTextFile.WriteLine("function DisplaySPAN(show, x) {")NewTextFile.WriteLine(" if (show) {")NewTextFile.WriteLine(" MM_findObj(""spanHideDetails"" + x).style.display = ""block"";")NewTextFile.WriteLine(" MM_findObj(""spanPkgInfo"" + x).style.display = ""block"";")NewTextFile.WriteLine(" MM_findObj(""spanShowDetails"" + x).style.display = ""none"";")NewTextFile.WriteLine(" } else {")NewTextFile.WriteLine(" MM_findObj(""spanHideDetails"" + x).style.display = ""none"";")NewTextFile.WriteLine(" MM_findObj(""spanPkgInfo"" + x).style.display = ""none"";")NewTextFile.WriteLine(" MM_findObj(""spanShowDetails"" + x).style.display = ""block"";")NewTextFile.WriteLine(" }")NewTextFile.WriteLine("}")NewTextFile.WriteLine("</script>")End Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetFixedIssues(pv_id)Set sqlstrC = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& pv_id &" AND iss_db="& CInt(enumCLEARQUEST_VTSUP_ID) &" AND iss_state = "& enumISSUES_STATE_FIXED, cint(0))If sqlstrC.RecordCount <> 0 ThenNewTextFile.WriteLine()NewTextFile.WriteLine("<blockquote><blockquote>Fixed Issues:</blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote><blockquote><table class='fixed_issues' >")NewTextFile.WriteLine("<tr>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Id</td>")NewTextFile.WriteLine("<td width='55%' class='form_field'>Summary</td>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Issue Type</td>")NewTextFile.WriteLine("<td width='15%' class='form_field'>Priority</td>")NewTextFile.WriteLine("<td width='10%' class='form_field'>Status</td>")NewTextFile.WriteLine("</tr>")While ((NOT sqlstrC.BOF) AND (NOT sqlstrC.EOF))DEVIiss = "-1"TDSEiss = "-1"VT5DMiss = "-1"VTSUPiss = "-1"If CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) ThenDEVIiss = DEVIiss &","& sqlstrC("iss_id")ElseIf CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_TDSE_ID) ThenTDSEiss = TDSEiss &","& sqlstrC("iss_id")ElseIf CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_VT5DM_ID) ThenVT5DMiss = VT5DMiss &","& sqlstrC("iss_id")ElseIf CInt(sqlstrC("iss_db")) = CInt(enumCLEARQUEST_VTSUP_ID) ThenVTSUPiss = VTSUPiss &","& sqlstrC("iss_id")End IfSSsql = ReadFile( QUERIES_PATH & "\cq_issues.sql" )SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)SSsql = Replace( SSsql, "/*enumCLEARQUEST_TDSE_ID*/", enumCLEARQUEST_TDSE_ID)SSsql = Replace( SSsql, "/*enumCLEARQUEST_VT5DM_ID*/", enumCLEARQUEST_VT5DM_ID)SSsql = Replace( SSsql, "/*enumCLEARQUEST_VTSUP_ID*/", enumCLEARQUEST_VTSUP_ID)SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)SSsql = Replace( SSsql, "/*TDSEiss*/", TDSEiss)SSsql = Replace( SSsql, "/*VT5DMiss*/", VT5DMiss)SSsql = Replace( SSsql, "/*VTSUPiss*/", VTSUPiss)retVal = Get_CQ_Issues ( SSsql, rsCQ )NewTextFile.WriteLine("<tr>")NewTextFile.WriteLine("<td nowrap class='form_item'>"&rsCQ("iss_num")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("issue_type")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("priority")&"</td>")NewTextFile.WriteLine("<td class='form_item'>"&rsCQ("Status")&"</td>")NewTextFile.WriteLine("</tr>")' sqlstrC.MoveNextWendNewTextFile.WriteLine( " </table></blockquote></blockquote></blockquote> ")End IfsqlstrC.Close()Set sqlstrC = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Function LastPvId(pvId)Dim qryASet qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&pvId , cint(0))LastPvId = pvIdIf pvId <> qryA("last_pv_id") ThenLastPvId = qryA("last_pv_id")Elseerrormsg = trueEnd IfqryA.Close()Set qryA = NothingEnd Function'--------------------------------------------------------------------------------------------------------------------------Sub PreviousVersions(a, b, versionA, versionB)NewTextFile.WriteLine()NewTextFile.WriteLine("<b>Versions Between: "&versionA&" and "&versionB&"</b>")If CLng(a) < CLng(b) ThenWhile CLng(a) < CLng(b)b = LastPvId(b)If CLng(a) < CLng(b) ThenVersionList = VersionList + ","& b &""Call Comments(b)Call GetFixedIssues(b)End IfWendEnd IfIf CLng(b) < CLng(a) ThenWhile CLng(b) < CLng(a)a = LastPvId(a)If CLng(b) < CLng(a) ThenVersionList = VersionList + ","& a &""Call Comments(a)Call GetFixedIssues(a)End IfWendEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub GetDependencies(pv_id_a, pv_id_b, versionA, versionB)On Error Resume NextSet sqlstrA = OraDatabase.DbCreateDynaset("select distinct dpv_id from package_dependencies where pv_id IN ("& pv_id_b &") and dpv_id NOT IN (SELECT dpv_id from package_dependencies where pv_id ="& pv_id_a &" ) order by dpv_id desc", cint(0))If sqlstrA.RecordCount <> 0 ThenNewTextFile.WriteLine()NewTextFile.WriteLine("<b>Dependencies Changed Between "&versionA&" and "&versionB&":</b>")While ((NOT sqlstrA.BOF) AND (NOT sqlstrA.EOF))Call dependencyComments(sqlstrA("dpv_id"))Call GetFixedIssues(sqlstrA("dpv_id"))sqlstrA.MoveNextWendEnd IfsqlstrA.Close()Set sqlstrA = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub dependencyComments(pv_id)Set sqlstrB = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pkg.pkg_id = pv.pkg_id AND PV_ID ="&pv_id, cint(0))NewTextFile.WriteLine("<blockquote><blockquote><span class="&chr(34)&"highlight_text"&chr(34)&">"& sqlstrB("pkg_name") &" "& sqlstrB("pkg_version") &"</font></span></blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote>Comments:</blockquote></blockquote>")NewTextFile.Write("<blockquote><blockquote><blockquote>"& TextToHTML(sqlstrB("comments")) &"</blockquote></blockquote></blockquote>")sqlstrB.Close()Set sqlstrB = nothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub pkg_Version(pv)Dim qrySet qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv , cint(0))pkgversion = qry("pkg_version")qry.Close()Set qry = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Comments(Pv_Id)Dim commentsSet comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id , cint(0))If comments("comments") <> "Rippled Build." ThenNewTextFile.WriteLine("<blockquote><blockquote><span class="&chr(34)&"highlight_text"&chr(34)&">Version: "& comments("pkg_version")&"</span></blockquote></blockquote>")If comments("comments") <> "" ThenNewTextFile.WriteLine("<blockquote><blockquote>Comments: </blockquote></blockquote>")NewTextFile.WriteLine("<blockquote><blockquote><blockquote>"& TextToHTML(comments("comments")) &"</blockquote></blockquote></blockquote>")source_change = trueEnd IfEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Release(pvId)Dim releaseSet release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId , cint(0))If release("insert_stamp") <> "" ThenNewTextFile.Write(release("insert_stamp"))ElseNewTextFile.Write("Version Not Used.")End IfEnd Sub'--------------------------------------------------------------------------------------------------------------------------Sub Header( branchNameA, branchNameB, versionA, versionB )NewTextFile.WriteLine("<html>")NewTextFile.WriteLine("<head>")NewTextFile.WriteLine("<meta http-equiv="&chr(34)&"Pragma"&chr(34)&" content="&chr(34)&"no-cache"&chr(34)&">")NewTextFile.WriteLine("<meta http-equiv="&chr(34)&"Cache-Control"&chr(34)&" content="&chr(34)&"no-cache"&chr(34)&">")NewTextFile.WriteLine("<meta http-equiv="&chr(34)&"Expires"&chr(34)&" content="&chr(34)&"0"&chr(34)&">")NewTextFile.WriteLine("<title>Difference Report Between "& branchNameA &" "& versionA &" and "& branchNameB &" "& versionB &"</title>")Call Javascript()Call Styles()NewTextFile.WriteLine("</head>")End Sub'--------------------------------------------------------------------------------------------------------------------------Sub Styles()NewTextFile.WriteLine("<style type="&chr(34)&"text/css"&chr(34)&">")NewTextFile.WriteLine("body { font-family:Verdana,Arial,Helvetica,sans-serif; }")NewTextFile.WriteLine("table { border-collapse:collapse; }")NewTextFile.WriteLine("td { border-width:1; border-style:solid; border-color:black; padding:3 5 3 5; }")NewTextFile.WriteLine(".fixed_issues { border-width:1; border-style:solid; border-color:black; }")NewTextFile.WriteLine(".page_title { color:red; font-size:110%; text-align:center; }")NewTextFile.WriteLine(".highlight_text { color:blue; }")NewTextFile.WriteLine(".form_field { background-color:#EAE5D7; font:bold 70% Tahoma,sans-serif; }")NewTextFile.WriteLine(".form_item { background-color:#EAE5D7; color:red; font:bold 70% Tahoma,sans-serif; vertical-align:top; }")NewTextFile.WriteLine("</style>")End Sub'--------------------------------------------------------------------------------------------------------------------------Sub DeleteOldReports()Dim fileList, currentFileSet fileList = FSO.GetFolder(Server.MapPath(pathName)).FilesFor Each currentFile In fileList'--Force deletion of read-only files--If InStr(currentFile.Name, objAccessControl.UserName) = 1 ThenFSO.DeleteFile Server.MapPath(pathName & currentFile.Name), trueEnd If'--Don't delete read-only files--'If (NOT currentFile.Attributes AND 1) AND (InStr(currentFile.Name, objAccessControl.UserName) = 1) Then' FSO.DeleteFile Server.MapPath(pathName & currentFile.Name)'End IfNextEnd Sub'---------------------------------------------------------------------------------------------------------------------------Function Get_CQ_Issues ( SSsql, OOrsCQ )If OOrsCQ.State = 1 ThenOOrsCQ.CloseEnd IfOn Error Resume NextOOrsCQ.ActiveConnection = CQ_connOOrsCQ.Source = SSsqlOOrsCQ.CursorType = 0OOrsCQ.CursorLocation = 2OOrsCQ.LockType = 3OOrsCQ.Open()Get_CQ_Issues = Err.NumberEnd Function'--------------------------------------------------------------------------------------------------------------------------Public Function TextToHTML ( sString )Dim mStringIf (sString = "") OR IsNull(sString) Then Exit FunctionmString = Server.HTMLEncode( sString )mString = Replace(mString, VBNewLine, "<br>")TextToHTML = mStringEnd Function'--------------------------------------------------------------------------------------------------------------------------Public Function RandomString ()Dim char_count, intRnd, listRnd, min, maxchar_count = 0max = Asc("0")min = Asc("z")'generate a random string to create unique file namerandomizeWhile char_count < 10intRnd = Cint((max - min + 1) * Rnd() + min)'limit string to 0-9, a-z, A-ZIf (intRnd < Asc(":") OR intRnd > Asc("@")) AND (intRnd < Asc("[") OR intRnd > Asc("`")) ThenlistRnd = listRnd & Chr(intRnd)char_count = char_count + 1End IfWendRandomString = listRndEnd Function'--------------------------------------------------------------------------------------------------------------------------%><%'------------ RUN BEFORE PAGE RENDER ----------pathName = "docs/"fileName = objAccessControl.UserName &"_bom_report_"& RandomString() &".html"'----------------------------------------------%><html><head><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">p { font: bold 90% Verdana,Arial,Helvetica,sans-serif; }td { text-align: center; vertical-align: center; }table { width: 100%; height: 100%; }</style></head><body <%If objAccessControl.UserName <> "" Then Response.Write("onload="&chr(34)&"window.location='"& pathName & fileName &"'"&chr(34)) End If%>><table><tr><td><img src="images/throbber_large.gif" width="66px" height="66px"><br><p>Generating Report</p></td></tr></table><%OraDatabase.Parameters.Add "SBOM_A", parSBOMA, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SBOM_B", parSBOMB, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "NO_CHANGE", "", ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "ADDED", "", ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "UPDATED", "", ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "REMOVED", "", ORAPARM_INPUT, ORATYPE_VARCHAR2Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("BOMDiff.sql"), cint(0))OraDatabase.Parameters.Remove "SBOM_A"OraDatabase.Parameters.Remove "SBOM_B"OraDatabase.Parameters.Remove "NO_CHANGE"OraDatabase.Parameters.Remove "ADDED"OraDatabase.Parameters.Remove "UPDATED"OraDatabase.Parameters.Remove "REMOVED"Set rsQryA = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_" pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_" FROM BRANCHES br,"&_" BOMS b,"&_" DM_PROJECTS pr"&_" WHERE br.PROJ_ID = pr.PROJ_ID"&_" AND b.BRANCH_ID = br.BRANCH_ID"&_" AND b.BOM_ID ="&parSBOMA, cint(0))Set rsQryB = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE AS LOCATION, "&_" pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_" FROM BRANCHES br,"&_" BOMS b,"&_" DM_PROJECTS pr"&_" WHERE br.PROJ_ID = pr.PROJ_ID"&_" AND b.BRANCH_ID = br.BRANCH_ID"&_" AND b.BOM_ID ="&parSBOMB, cint(0))Set FSO=Server.CreateObject("Scripting.FileSystemObject")Call DeleteOldReports()Set NewTextFile=FSO.CreateTextFile(Server.MapPath(pathName & fileName), true)Call Header(rsQryA("branch_name"), rsQryB("branch_name"), rsQryA("location"), rsQryB("location"))NewTextFile.WriteLine("<body>")NewTextFile.WriteLine("<div class="&chr(34)&"page_title"&chr(34)&">Difference Report Between "&rsQryA("branch_name")&" "&rsQryA("location")&" and "&rsQryB("branch_name")&" "&rsQryB("location")&"</div><br><br>")While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))VersionList = "0"errormsg = falserowId = rsQry("pv_id_a") &"_"& rsQry("pv_id_b")If rsQry("pv_id_a") ThenSet rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0))End IfIf rsQry("pv_id_b") ThenSet rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))End IfpkgA = rsQry("pkg_name_a")pkgB = rsQry("pkg_name_b")If pkgA <> "" thenpkgname = pkgAElsepkgname = pkgBEnd IfIf rsQry("change_type") = "U" OR rsQry("change_type") = "UW" ThenNewTextFile.Write("<p><SPAN id=""spanShowDetails"& rowId &""" name=""spanShowDetails""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(true,'"& rowId &"');"">"& pkgname &"</a></SPAN>")NewTextFile.Write("<SPAN id=""spanHideDetails"& rowId &""" name=""spanHideDetails"" style=""display:none;""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(false,'"& rowId &"');"">"& pkgname &"</a></SPAN>")NewTextFile.WriteLine("<SPAN id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")NewTextFile.Write(rsQryA("location")&" uses: "&rsQry("pkg_version_a")&" ")NewTextFile.WriteLine("<br>")NewTextFile.Write(rsQryB("location")&" uses: "&rsQry("pkg_version_b")&" ")a = rsQry("pv_id_a")b = rsQry("pv_id_b")c = rsQry("pv_id_a")d = rsQry("pv_id_b")NewTextFile.WriteLine("<br><br>")NewTextFile.WriteLine()NewTextFile.WriteLine("<b>"&rsQryB("location")&"</b>")Call Comments(rsQry("pv_id_b"))Call GetFixedIssues(rsQry("pv_id_b"))Dim rsQryLastSet rsQryLast = OraDatabase.DbCreateDynaset( "SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0))If rsQryLast("last_pv_id") <> a ThenCall PreviousVersions(a, b, rsQry("pkg_version_a"), rsQry("pkg_version_b"))End Ifa = rsQry("pv_id_a")b = rsQry("pv_id_b")Call GetDependencies(a, VersionList + ","+ b, rsQry("pkg_version_a"), rsQry("pkg_version_b"))NewTextFile.WriteLine("</SPAN>")rsQryLast.Close()Set rsQryLast = NothingEnd IfIf rsQry("change_type") = "A" AND rsQry("patch_b") = "Y" ThenDim rsQryPatchOraDatabase.Parameters.Add "PV_ID", rsQry("pv_id_b"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQryPatch = OraDatabase.DbCreateDynaset( GetQuery("pd_patch.sql"), cint(0))OraDatabase.Parameters.Remove "PV_ID"If NOT IsNull(rsQryPatch("pv_id")) ThenNewTextFile.Write("<p><SPAN id=""spanShowDetails"& rowId &""" name=""spanShowDetails""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(true,'"& rowId &"');"">"& rsQryPatch("pkg_name") &" "& rsQryPatch("pkg_version") &"</a></SPAN>")NewTextFile.Write("<SPAN id=""spanHideDetails"& rowId &""" name=""spanHideDetails"" style=""display:none;""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(false,'"& rowId &"');"">"& rsQryPatch("pkg_name") &" "& rsQryPatch("pkg_version") &"</a></SPAN>")NewTextFile.WriteLine("<SPAN id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")Call Comments(rsQryPatch("pv_id"))Call GetFixedIssues(rsQryPatch("pv_id"))ElseNewTextFile.Write("<p><SPAN id=""spanShowDetails"& rowId &""" name=""spanShowDetails""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(true,'"& rowId &"');"">"& rsQry("pkg_name_b") &" "& rsQry("pkg_version_b") &"</a></SPAN>")NewTextFile.Write("<SPAN id=""spanHideDetails"& rowId &""" name=""spanHideDetails"" style=""display:none;""><a href=""javascript:;"" class=""body_scol"" onClick=""DisplaySPAN(false,'"& rowId &"');"">"& rsQry("pkg_name_b") &" "& rsQry("pkg_version_b") &"</a></SPAN>")NewTextFile.WriteLine("<SPAN id=""spanPkgInfo"& rowId &""" name=""spanPkgInfo"" style=""display:none;"">")Call Comments(rsQry("pv_id_b"))Call GetFixedIssues(rsQry("pv_id_b"))End IfNewTextFile.WriteLine("</SPAN>")rsQryPatch.CloseSet rsQryPatch = nothingEnd IfrsQry.MoveNextWEndrsQry.CloseSet rsQry = NothingNewTextFile.WriteLine("</body>")NewTextFile.WriteLine("</html>")NewTextFile.CloseSet NewTextFile=Nothing%></body></html><%Call Destroy_All_Objects%><!--#include file="common/globals_destructor.asp"-->