📄 customizingprocess.asp
字号:
dim questionRepliedTimes, answerRepliedTimes, answerId, ifView, newNode, typeString, gridAnswerCode
temp = ""
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
set questionsNode = questionXML.getElementsByTagName("question")
tableName = questionsNode.item(positionNum).getAttribute("id")
typeString = questionsNode.item(positionNum).childNodes.item(3).childNodes.item(0).Text
if isViewExist("tempView") then
rcs.open "DROP VIEW [tempView]", con, 1, 1
end if
sql = "CREATE VIEW [tempView] AS SELECT * FROM searchingQuery INNER JOIN " & tableName & " ON searchingQuery.IP = " & tableName & ".IP AND searchingQuery.surveyTime = " & tableName & ".surveyTime " & sqlTail(tableName, typeString)
rcs.open sql, con, 1, 1
rcs.open "select * from tempView", con, 1, 1
questionRepliedTimes = rcs.recordCount
rate = persentRate(questionRepliedTimes, totalRepliedTimes)
fieldsNum = rcs.Fields.Count
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", tableName
newNode.appendChild(tempXML.createTextNode(totalRepliedTimes))
tempXML.documentElement.appendChild(newNode)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", tableName & "RepliedTimes"
newNode.appendChild(tempXML.createTextNode(questionRepliedTimes))
tempXML.documentElement.appendChild(newNode)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", tableName & "RepliedRate"
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
subAnswerId="flag"
gridAnswerRepliedTimes = -1
for i = 5 to fieldsNum -1 step 1
answerId = rcs.fields.item(i).name
if inStr(1, LCase(typeString), "grid", 1 )<>0 then
if inStr(1, answerId, subAnswerId, 1 ) = 0 then
subAnswerId = left(answerId, inStr(answerId, "rank")-1)
gridAnswerRepliedTimes = getSubQuestionReplyTimes(subAnswerId, typeString)
rate = persentRate(gridAnswerRepliedTimes, questionRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", subAnswerId
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
end if
if inStr(1, Lcase(typeString), "text", 1 )>0 then
gridAnswerRepliedTimes = getTextCommentsNum(answerId)
rate = persentRate(gridAnswerRepliedTimes, questionRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
else
gridAnswerRepliedTimes = getCheckedCount(answerId)
rate = persentRate(gridAnswerRepliedTimes, questionRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
end if
else
if inStr(1, Lcase(typeString), "drop", 1 )<>0 then
gridAnswerRepliedTimes = getDropCount(answerId)
optionsNum = questionsNode.item(positionNum).childNodes.item(4).childNodes.length
for k = 1 to optionsNum-1 step 1
subAnswerId =questionsNode.item(positionNum).childNodes.item(4).childNodes.item(k).getAttribute("id")
selectedNum = getSelectedCount(tableName, k)
rate = persentRate(selectedNum, gridAnswerRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", subAnswerId & "RepliedTimes"
newNode.appendChild(tempXML.createTextNode(selectedNum))
tempXML.documentElement.appendChild(newNode)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", subAnswerId & "RepliedRate"
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
next
end if
if inStr(1, Lcase(typeString), "text", 1 )<>0 then
if inStr(1, answerId, subAnswerId, 1 ) = 0 then
currentQuestionId = left(answerId, inStr(answerId, "answer")-1)
questionRepliedTimes = getQuestionAnsweredTimes(currentQuestionId, typeString)
end if
answerRepliedTimes = getTextCommentsNum(answerId)
rate = persentRate(answerRepliedTimes, questionRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId &"RepliedTimes"
newNode.appendChild(tempXML.createTextNode(answerRepliedTimes))
tempXML.documentElement.appendChild(newNode)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId &"RepliedRate"
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
end if
if inStr(Lcase(typeString), "check")<>0 or inStr(Lcase(typeString), "radio")<>0 then
if inStr(1, answerId, subAnswerId, 1 ) = 0 then
currentQuestionId = left(answerId, inStr(answerId, "answer")-1)
questionRepliedTimes = getQuestionAnsweredTimes(currentQuestionId, typeString)
end if
answerRepliedTimes = getCheckedCount(answerId)
rate = persentRate(answerRepliedTimes, questionRepliedTimes)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId & "RepliedTimes"
newNode.appendChild(tempXML.createTextNode(answerRepliedTimes))
tempXML.documentElement.appendChild(newNode)
set newNode = tempXML.createNode(1, "data", "")
newNode.setAttribute "id", answerId & "RepliedRate"
newNode.appendChild(tempXML.createTextNode(rate))
tempXML.documentElement.appendChild(newNode)
end if
end if
next
' ''''''''''''' vbcrlf & vbcrlf
set questionsNode = nothing
rcs.close
set rcs = nothing
con.close
set con = nothing
if err.number<> 0 then
combineView = false
else
combineView = true
end if
end function
function getSubQuestionReplyTimes(gridAnswerId, questionType)
dim xmlsPath, answerDom, answersNode, answersNum, i, k, answerId, sql, condition, temp
xmlsPath = Server.MapPath("../xmls")
set answerDom = Server.CreateObject("Microsoft.XMLDOM")
answerDom.async = false
answerDom.load(xmlsPath & "/answerSheetModel.xml")
set answersNode = answerDom.getElementsByTagName("answer")
answersNum = answersNode.length
sql="SELECT * FROM tempView Where "
condition=""
for i = 0 to answersNum-1 step 1
answerId = answersNode.item(i).getAttribute("id")
if inStr(answerId, "rank")<>0 then
temp = left(answerId, inStr(answerId, "rank")-1)
if trim(Lcase(temp)) = trim(LCase(gridAnswerId)) then
if inStr(1, Lcase(questionType), "text", 1 )>0 then
condition =condition & answerId & " <>'' OR "
else
condition =condition & answerId & " <> 0 OR "
end if
end if
end if
next
condition =left(condition, len(condition)-3)
sql = sql & condition
set answerDom = nothing
set answersNode = nothing
dim databasePath, accessDB, con, rcs, answersSet, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set answersNode = nothing
set answerDom = nothing
set rcs = nothing
set con = nothing
getSubQuestionReplyTimes =num
end function
function persentRate(terminator, determinator)
dim temp
temp = 0.00
if (not terminator = 0) and (not determinator = 0) then
temp =FormatNumber(terminator*100 / determinator, 2, , ,0)
end if
persentRate = temp & " %"
end function
function getCheckedCount(columnName)
dim databasePath, accessDB, con, rcs, answersSet, sql, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
set answersSet = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
sql = "select * from tempView where " & columnName & " = -1 "
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set answersSet = nothing
set rcs = nothing
set con = nothing
getCheckedCount = num
end function
function getDropCount(columnId)
dim databasePath, accessDB, con, rcs, sql, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
set answersSet = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
sql = "select * from tempView where " & columnId & " <> 0"
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set answersSet = nothing
set rcs = nothing
con.close
set con = nothing
getDropCount = num
end function
function getTextCommentsNum(columnId)
dim databasePath, accessDB, con, rcs, answersSet, sql, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
set answersSet = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
sql = "select * from tempView where " & columnId & " <> '' "
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set answersSet = nothing
set rcs = nothing
set con = nothing
getTextCommentsNum = num
end function
function getSelectedCount(tableName, optionNum)
dim databasePath, accessDB, con, rcs, answersSet, sql, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
set answersSet = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
sql = "select * from tempView where " & tableName & " = " & optionNum
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set answersSet = nothing
set rcs = nothing
set con = nothing
getSelectedCount = num
end function
function getQuestionAnsweredTimes(questionId, questionType)
dim xmlsPath, answerDom, answersNode, answersNum, i, k, answerId, sql, condition, temp
xmlsPath = Server.MapPath("../xmls")
set answerDom = Server.CreateObject("Microsoft.XMLDOM")
answerDom.async = false
answerDom.load(xmlsPath & "/answerSheetModel.xml")
set answersNode = answerDom.getElementsByTagName("answer")
answersNum = answersNode.length
sql="SELECT * FROM tempView Where "
condition=""
for i = 0 to answersNum-1 step 1
answerId = answersNode.item(i).getAttribute("id")
if inStr(answerId, "answer") <> 0 then
temp = left(answerId, inStr(answerId, "answer")-1)
else
temp = answerId
end if
if trim(LCase(temp)) = trim(LCase(questionId)) then
if inStr(1, Lcase(questionType), "text", 1 )>0 then
condition =condition & answerId & " <>'' OR "
else
condition =condition & answerId & " <> 0 OR "
end if
end if
next
condition =left(condition, len(condition)-3)
sql = sql & condition
' response.Write(sql)
set answerDom = nothing
set answersNode = nothing
dim databasePath, accessDB, con, rcs, answersSet, num
databasePath = Server.MapPath("../database")
accessDB = databasePath & "/surveyData.mdb"
set con = server.createObject("ADODB.Connection")
set rcs = server.createObject("ADODB.Recordset")
con.provider = "Microsoft.Jet.OLEDB.4.0"
con.Open(accessDB)
rcs.open sql, con, 1, 1
num = rcs.RecordCount
set rcs = nothing
set con = nothing
getQuestionAnsweredTimes = num
end function
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -