

步骤一:设计数据库中表的字段,保证字段名与相应的对象名一致。比如字段为“a1”则相对应的表单中的对象名也需设置为“a1”;
步骤二:通过下例程序将A组所有对象的名(name)组成一个串,并将所对应的值(value)也组成一个串。(省略了数据库连接操作)
nameString="(" ‘insert 语句的字段列表
valueString="(" ‘insert语句与字段相对应的值的列表
for i=1 to N ‘N为A组对象的个数
nameString = nameString &"a"&i&","
if len(request.form("a"&i))>0 then ‘A组的变量名均a开头
valueString=valueString&"'"&request.form("a"&i)&"'," ‘填写或选择了的值为实际值
else
valueString=valueString&"'/'," ‘没有填或选的均存为”/”记号
end if
next
以上程序需注意两个问题:一、数据库的字段类型均设为字符型或文本型,否则会程序因为数据类型不匹配而出错;二、对字串变量valueString最后的”,”要进行处理。
步骤三:在与数据库实现连接后,利用RecordSet对象将记录存储到临时表temp中:
sqlstr="insert into temp "&nameString&" values "&valueString ‘temp为临时表
set rs=db.execute(sqlstr)
步骤四:根据第二步设置可知,凡值为“/”的便是缺失数据。我们只需利用VBScript对临时数据库的各数据项进行判断并作出相应处理即可。
3新的算法:利用Fields集合进行优化
以上方法虽可行,但仍很烦琐。下面我们讨论一种更简洁、更灵活、更通用的方法,即利用Recordset对象中Fields集合的字段名(Fields().Name)与网络问卷表单的对象名(Name)进行关联来实现。
步骤一:建立表单和数据库,将表单的对象名(name或ID)与数据库中表的字段名一一对应(和上面的步骤一相同)。凡要求进行缺失数据校验的变量(有些对象充许缺失,比如复选对象)和相应的字段名其首字母均设置为“a”,如a1,a2等,无须判断的对象所对应的变量和字段名的首字母则为其它,如b1,b2等。
步骤二:编写缺失数据校验程序
<%’ 连接数据库并建立Recordset对象实例rs ‘省略
ok=1 ‘无缺失数据为1,否则为0
a="a" ‘凡要求检测的变量其首字母为a
for i=1 to rs.fields.count-1 ‘字段个数决定判断次数
c=mid(rs.fields(i).name,1,1) ‘取每个字段名的首字母
if len(trim(request(rs.fields(i).name)))=0 and strcomp(c,a)=0 then ‘字段名即表单对象名,建立关联
‘如果首字母为”a”且有缺失数据
response.write "第"&cstr(i)&"项没有填数据!<br>" ‘显示缺失数据的题号
ok=0 ‘标识为缺失状态
end if
next
if ok=0 then ‘如果有非法缺失数据
response.write "<br><input type=button value=返回 ‘显示返回
onclick=history.go(-1)>"
else ‘如果无非法缺失数据,校验成功
'正常处理程序 ‘正常处理随后程序
end if
%>
程序中标识了下划线那条语句是整个程序的核心,不仅解决了漏填所造成的缺失数据而且还避免了文本对象中仅填空格所引起的空缺数据。其极强的通用性,满足了各种形式和各种规模的网络问卷的要求。
4结束语
以上程序均在实际调查研究中得以应用,并将Fields集合优化的程序成功地进行了移植,从而优化了网络问卷校验程序,提高了“问卷有效率”。
参考文献
1李克东编著.教育技术学研究方法[M]. 北京:北京师范大学出版社,2003:118
2薛薇.SPSS统计分析方法及应用[M].北京:电子工业出版社,2004:22
3 满孝.用ASP建立调查引擎[J].计算机世界,2000
4 王骏.用ASP开发网络调查系统[J].合肥学院学报,2005
5 郭强.网络调查手册[M].北京:中国时代经济出版社,2004
6 何清林.基于ASP.NET实现“网络问卷调查分析系统”的动态生成[J].计算机系统应用,2005.12
7 尚俊杰.网络程序设计-ASP[M].北京:清华大学出版社,2003.8