1.6受信データのチェックと再入力要求

■未記入アンケートの送信

 図1.16のように、全く未記入の状態や、必ず回答してほしい設問が未回答のまま「OK」ボタンをクリックされる場合があります。そのようなことがないようにアンケートの回答データをチェックし、必要に応じて再入力を要求する方法について述べます。

図1.16

 例として、図1.16で設問1(Q1)の回答は必須とし、設問1が未記入の場合には、再度アンケートページを表示し入力を要求することとします。

 再度アンケートページを表示する場合は、すでに入力済みの回答欄は規定値として表示し、再入力の手間を省くようにします。

 具体的には、設問1が未記入の場合は、「再入力」ボタンをクリックし、add5.aspファイルからform3.aspファイルを起動するようにします。

 そのとき、add5.aspファイルからform3.aspファイルに入力済みのデータの値を引き継ぐ必要があります。これには、FORMタグの"\hidden"属性を使います。

リスト1.11 add5.asp

<%@ LANGUAGE="VBScript" %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>add5.asp</TITLE>
</HEAD>
<BODY>
<%
'定数を定義します
Const FOR_DEBUG = "<BR>Debug(add5.asp): "
Const DATASOURCE = "aspZADO"

'変数を定義します
Dim intQ1,intQ21,intQ22,intQ23,intQ24,strQ24,strQ3
Dim objConn,objRst
Dim strWarnMess

'アンケート回答データを受信します
intQ1 = Request("Q1")
intQ21 = Request("Q21")
intQ22 = Request("Q22")
intQ23 = Request("Q23")
intQ24 = Request("Q24")
strQ24 = Request("Q24txt")
strQ3 = Request("Q3")

If intQ1 <> "" and strQ3 <> "" Then

'データベースにデータを格納する
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open DATASOURCE

Set objRst = Server.CreateObject("ADODB.Recordset")
objRst.Open "tblQuestion", objConn, 3,2
objRst.AddNew
objRst("Q1") =intQ1
objRst("Q21") =intQ21
objRst("Q22") =intQ22
objRst("Q23") =intQ23
objRst("Q24") =intQ24
If Len(strQ24) > 0 Then objRst("Q24txt") = strQ24
If Len(strQ3) > 0 Then objRst("Q3") = strQ3
objRst.UpDate
%>
アンケート回答を正常に受け取りました<BR>
ご協力ありがとうございました<BR>
<A HREF="form3.asp">アンケート・ページへ</A>
<%
objRst.Close
objConn.Close

Else
'Q1とQ3のいずれかが未回答のため、再入力を要求します
strWarnMess = "Q1とQ3に回答してください<BR>"

'form3.aspファイルへの引継ぎデータを設定します
%>
<FORM ACTION="form3.asp" METHOD="post">
<INPUT TYPE="hidden" NAME="strWarnMess"
VALUE="<%=strWarnMess%>">
<INPUT TYPE="hidden" NAME="Q1"
VALUE="<%=intQ1%>">
<INPUT TYPE="hidden" NAME="Q21"
VALUE="<%=intQ21%>">
<INPUT TYPE="hidden" NAME="Q22"
VALUE="<%=intQ22%>">
<INPUT TYPE="hidden" NAME="Q23"
VALUE="<%=intQ23%>">
<INPUT TYPE="hidden" NAME="Q24"
VALUE="<%=intQ24%>">
<INPUT TYPE="hidden" NAME="Q24txt"
VALUE="<%=strQ24%>">
<INPUT TYPE="hidden" NAME="Q3"
VALUE="<%=strQ3%>">
一部の回答が未記入です<BR>
「再入力」ボタンをクリックし、すべての設問に回答願います<BR>
<INPUT TYPE="submit" VALUE="再入力">
</FORM>
<%
End If
%>
</BODY>
</HTML>

リスト1.12 form3.asp

<%@ LANGUAGE="VBScript" %>
<% Option Explicit %>
<%
Function InitInt(ByVal int)
'整数の変数がEmptyあるいはNullの場合、0に初期化します
'また、長さ0の文字列の場合も0に初期化します
If VarType(int) < 2 Then
InitInt = 0
ElseIf int = "" Then
InitInt = 0
Else
InitInt = int
End If
End Function
%>
<HTML>
<HEAD>
<TITLE>form3.asp</TITLE>
</HEAD>
<BODY>
<%
'変数を定義します
Dim intQ1,intQ21,intQ22,intQ23,intQ24,strQ24,strQ3
Dim strWarnMess,strChecked

'アンケート回答データを受信します
strWarnMess = Request("strWarnMess")
intQ1 = InitInt(Request("Q1"))
intQ21 = InitInt(Request("Q21"))
intQ22 = InitInt(Request("Q22"))
intQ23 = InitInt(Request("Q23"))
intQ24 = InitInt(Request("Q24"))
strQ24 = Request("Q24txt")
strQ3 = Request("Q3")
%>
以下のアンケートにお答え下さい。<BR>
<FONT COLOR="red"><%=strWarnMess%></FONT>
<FORM ACTION="add5.asp" METHOD="post">
Q1.あなたの性別は?<BR>
<TABLE BORDER=1>
<TR><TD>
<%
strChecked = ""
If intQ1 = 1 Then strChecked = "CHECKED"
%>
<INPUT TYPE="radio" NAME="Q1" VALUE="1" <%=strChecked%>>1.男性
<%
strChecked = ""
If intQ1 = 2 Then strChecked = "CHECKED"
%>
<INPUT TYPE="radio" NAME="Q1" VALUE="2" <%=strChecked%>>2.女性
</TR></TD>
</TABLE><BR>
Q2.あなたの自宅にはどのような情報機器がありますか?(複数回答可能)<BR>
<TABLE BORDER=1>
<TR><TD>
<%
strChecked = ""
If intQ21 = 1 Then strChecked = "CHECKED"
%>
<INPUT TYPE="checkbox" NAME="Q21" VALUE="1" <%=strChecked%>>1.携帯電話
<%
strChecked = ""
If intQ22 = 1 Then strChecked = "CHECKED"
%>
<INPUT TYPE="checkbox" NAME="Q22" VALUE="1" <%=strChecked%>>2.パソコン
<%
strChecked = ""
If intQ23 = 1 Then strChecked = "CHECKED"
%>
<INPUT TYPE="checkbox" NAME="Q23" VALUE="1"
<%=strChecked%>>3.ディジタルカメラ<BR>
<%
strChecked = ""
If intQ24 = 1 Then strChecked = "CHECKED"
%>
<INPUT TYPE="checkbox" NAME="Q24" VALUE="1" <%=strChecked%>>4.その他
<INPUT NAME="Q24txt" SIZE=30 VALUE="<%=strQ24%>">
</TR></TD>
</TABLE><BR>
Q3.今後どのような情報機器をお望みですか(自由回答)<BR>
<TEXTAREA NAME="Q3" COLS=40 ROWS=4><%=strQ3%></TEXTAREA><BR>

<INPUT TYPE="submit" VALUE=" OK "><BR>
</FORM>
ご協力ありがとうございました。<BR> 
</BODY>
</HTML>

図1.17

図1.18

図1.19

 


目次