⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customizingprocess.asp

📁 implementation of survey
💻 ASP
📖 第 1 页 / 共 2 页
字号:
		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 + -