• ベストアンサー

「型が一致しません」のエラーが出るのですが

htmlファイルのformに入力されたものを、aspで処理したいのですが、 エラーが出て困っています。 html内には   <INPUT TYPE=text NAME=year VALUE="" SIZE=3>年   <INPUT TYPE=text NAME=month VALUE="" SIZE=3>月   <INPUT TYPE=text NAME=day VALUE="" SIZE=3>日 があり、 aspでは  YEAR=Request.Form("year")  MONTH=Request.Form("month")  DAY=Request.Form("day") ここで、フォームの"month"に6が入力されているときのみ、 YEARに+1925し、ほかの時には+1988したいんです。そこで Dim NEN NEN=YEAR     If month="6" Then       NEN=DateAdd("yyyy",NEN,1925)      Else     NEN=DateAdd("yyyy",NEN,1988)     End If としてみたのですが、「型が一致しません」というエラーが出てしまいます。 おそらく最初にYEARに入っている(フォームから戻ってくる)値が文字列なので、それでほかの代数?に入れても文字列として処理されてしまって、1925などの数字を足すことができないのだろうと思うんですが…それであっていますでしょうか。だとしたら、型を一致させたいんですがどうしたらいいでしょうか? ものすごく醜い感じになってしまっていると思います…すみませんが、 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ducati
  • ベストアンサー率29% (308/1062)
回答No.2

6のときにNENが1931という結果になればいいんですか? でも、日付形式で出てきますから 結果は"1931/01/01" となると思いますが・・・。 If month="6" Then NEN=DateAdd("yyyy",NEN,"1925/1/1") Else NEN=DateAdd("yyyy",NEN,"1968/1/1") End If 単純に足し算したいなら NEN = CInt(YEAR) + 1925 でいいんじゃないですか?

analogy
質問者

お礼

あ、そうか…"yyyy"の部分だけ算出されるわけじゃないのですね。 CInt(YEAR)というのは初めて聞きました。授業でちょっとかじっただけなものですから…またやってみてわからなければ、質問させていただきます。どうもありがとうございました。

analogy
質問者

補足

型が~のエラーはわたしが誕生日のフォームで数値をいれないまま実行ボタンを押していたため発生したものでした。こんなことに時間をとらせてしまって申し訳ありません。どうもありがとうございました!

その他の回答 (1)

  • tocci_pc
  • ベストアンサー率14% (19/130)
回答No.1

DateAddの引数に入れる値(順番)が違うのでは? VB.NET2003の場合ですが、 dateAdd(DateInterval.Year , 10 , dt) の形式だと思うのですが。

analogy
質問者

お礼

そうなんですか…一度、順序を変えてやってみます!どうもありがとうございます。

analogy
質問者

補足

すみません、型がどうこうのエラーはわたしが誕生日のフォームのところに数値をいれないまま実行ボタンを押していたため発生したものでした。こんなことに時間をとらせてしまって申し訳ありません。どうもありがとうございました!

関連するQ&A

  • 九星を求めるプログラム

    こんにちは、いつもお世話になっています 練習で次のようなプログラムを作ったのですがうまく値が帰ってきません。何を入れても、「あなたは九紫火星です」が戻ってきます。どこが間違っているのか教えていただけますと非常に助かります… 九星の計算はここを見てください http://homepage1.nifty.com/luck/newpage41.htm htmlにはフォームがあって、生年月日を入力するようになっています。 誕生日 <INPUT TYPE=radio NAME=nengo VALUE=showa CHECKED>昭和 <INPUT TYPE=radio NAME=nengo VALUE=heisei >平成 <INPUT TYPE=text NAME=nen VALUE="" SIZE=3>年 <INPUT TYPE=text NAME=gatu VALUE="" SIZE=3>月 <INPUT TYPE=text NAME=hi VALUE="" SIZE=3>日 で、aspでは、 NENGO=Request.Form("nengo") NEN=Request.Form("nen") GATU=Request.Form("gatu") HI=Request.Form("hi") HIKAKU1=DateSerial(1985,GATU,HI) HIKAKU2=DateSerial(1985,2,3) If HIKAKU1<=HIKAKU2 Then NEN=NEN-1 End If Kyu1=Mid(NEN,1,1) Kyu2=Mid(NEN,2,1) Kyu=Kyu1+Kyu2 If Kyu>10 Then Kyu=Kyu+1 End If Select Case Kyu Case 1 Response.Write "あなたは一白水星です" Case 2 Response.Write "あなたは二黒土星です" Case 3      (略) Case 8 Response.Write "あなたは八白土星です" Case Else Response.Write "あなたは九紫火星です" End Select      ・      ・      ・     (続きは関係ないので省略) すみませんがよろしくお願いします。

  • <?php

    <?php if (isset($_POST['reg']) && isset($_POST['reg'])) { $ErrFlg = false; // 氏名欄をチェック $first_name = $_REQUEST['first_name']; $last_name = $_REQUEST['last_name']; if (!trim($first_name) || trim($last_name) == '') { $_POST['err_name_req'] = '氏名が入力されておりません。<br />'; $error = TRUE; } else { unset($_POST['err_name_req']); } // 生年月日欄をチェック $b_year = $_REQUEST['b_year']; $b_month = $_REQUEST['b_month']; $b_day = $_REQUEST['b_day']; if (!trim($b_year) || trim($b_month) || trim($b_day) == '') { $_POST['err_birthday_req'] = '生年月日が入力されておりません。<br />'; $error = TRUE; } else { unset($_POST['err_birthday_req']); } if (checkdate($b_month, $b_day, $b_year) === false) { $_POST['err_birth_ereg'] = '生年月日が正しくありません。<br />'; $error = TRUE; } else { unset($_POST['err_birth_ereg']); } } ?> <html> <body> <form action="<?php $_SERVER["PHP_SELF"]; ?>" method="POST"> 氏名<br /> <?php print $_POST['err_name_req']; ?><br /> <input type="text" name="first_name" value="<?php print $first_name; ?>" /><input type="text" name="last_name" value="<?php print $last_name; ?>" /><br /> 生年月日<br /> <?php print $_POST['err_birth_req'].$_POST['err_birth_ereg']; ?><br /> <input type="text" name="b_year" value="<?php print $b_year; ?>" size="5" />年 <input type="text" name="b_month" value="<?php print $b_month; ?>" size="2" />月 <input type="text" name="b_day" value="<?php print $b_day; ?>" size="2" />日 <br /> <input type="submit" name="reg" value="登録" /> </form> </body> </html> としています。 登録ボタンを押した際に入力チェックされることがなければデータベースに登録したいのですが、どこに記述してよいのか困っています。 また、どのように記述したらよろしいでしょうか? イメージとしては登録ボタンを押したら、「登録しました。」というコメントだけが表示されるようにしたいのですが・・・ javascriptの使用は考えておりませんので、できればPHPでお願いいたします。 もしお分かりの方がいらっしゃいましたらご教授いただけないでしょうか? また上記の内容でおかしいところがありましたらご指摘いただけないでしょうか?

    • ベストアンサー
    • PHP
  • PHPでFormリクエスト

    ASPで以下実行したことをPHPで同じことはできるでしょうか? <form action=”Sample.asp” method=”post”> <input type=”text” name=”Name” value=”あ”><br> <input type=”text” name=”Name” value=”い”><br> <input type=”text” name=”Name” value=”う”><br> </form> Request.Form(“Name”)(1)  →あ Request.Form(“Name”)(2)  →い Request.Form(“Name”)(3)  →う

    • ベストアンサー
    • PHP
  • PHP初心者です。

    PHP初心者です。カレンダースケジュールを作りたいのですが、以下について質問させていただきます。 selectボタンで2010~2020までのカレンダーを表示させることは出来たのですが、スケジュール欄にテキストボックスを作り、スケジュールを保存したいのですが、この部分でつまづいています。 PHPを勉強し始めて日が浅いのですが、宜しくお願い致します。 どなたかご教授下さい。 <html> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <body> <form method="post" action="<? print($PHP_SELF); ?>"> <select name="year"> <? for($nen=2010 ; $nen<2020; $nen++){ $kotosi=date("Y"); if($kotosi==$nen){ print("<option value='".$nen."' selected>".$nen."</option>"); }else{ print("<option value='".$nen."'>".$nen."</option>"); } } ?> </select> 年 <select name="month"> <? for($tuki=1 ; $tuki<13; $tuki++){ $kongetu=date("n"); if($kongetu==$tuki){ print("<option value='".$tuki."' selected>".$tuki."</option>"); }else{ print("<option value='".$tuki."'>".$tuki."</option>"); } } ?> </select> 月 <input type="submit" value="表示"> </form> <table border> <tr><th>日付</th><th>曜日</th><th>スケジュール</th></tr> <? $year=$_POST["year"]; $month=$_POST["month"]; $wstr=array('日','月','火','水','木','金','土'); for($i=1;checkdate($month,$i,$year);$i++){ $t=mktime(0,0,0,$month,$i,$year); $w=date("w",$t); print("<tr><td>".$i."</td><td>".$wstr[$w]."</td><td><input type='text' size='30'><input type='submit' value='Buttom'></td></tr>"); } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • 再度読み込みは出来ないのでしょうか?

    各テキストボックスに値を入れて、 C11 = a11 * b11 + a12 * b21 + a13 * b31、 c12 = a11 * b12 + a12 * b22 + a13 * b32、 : : c21 = a21 * b11 + a22 * b21 + a23 * b31 c22 = a21 * b12 + a22 * b22 + a23 * b32・・・ としたいのですが、うまくロジックが思いつきません。 単純に式をずらずら書いたのですが、c12以降の欄がすべてゼロになってしまいます。 いい方法を教えてください。お願いします。 <head> <script> function kei(){ var form_a=document.getElementById('A'); var form_b=document.getElementById('B'); var form_c=document.getElementById('C'); var keic11 = 0; var keic12 = 0; : : keic11=parseInt(form_a.a11.value) * parseInt(form_b.b11.value) * parseInt(form_a.a12.value) * parseInt(form_b.b21.value) + parseInt(form_a.a13.value) * parseInt(form_b.b31.value); form_c.c11.value = keic11; keic12=parseInt(form_a.a11.value) * parseInt(form_b.b12.value) + parseInt(form_a.a12.value) * parseInt(form_b.b22.value) + parseInt(form_a.a13.value) * parseInt(form_b.b32.value); form_c.c12.value = keic12;     :     : } </script> </head> <body> <table border = 1> <form id = "A"> <tr> <td> <input type = "text" size = 5 name = "a11"></input> </td> <td> <input type = "text" size = 5 name = "a12"></input> </td> <td> <input type = "text" size = 5 name = "a13"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a21"></input> </td> <td> <input type = "text" size = 5 name = "a22"></input> </td> <td> <input type = "text" size = 5 name = "a23"></input> </td> </tr> </form> </table> <table boeder = 1> <tr> <input type = "button" onClick="kei()" value = "×"></input> </tr> </table> <table border = 1> <form id = "B"> <tr> <td> <input type = "text" size = 5 name = "b11"></input> </td> <td> <input type = "text" size = 5 name = "b12"></input> </td> <td> <input type = "text" size = 5 name = "b13"></input> </td> <td> <input type = "text" size = 5 name = "b14"></input> </td> <td> <input type = "text" size = 5 name = "b15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b21"></input> </td> <td> <input type = "text" size = 5 name = "b22"></input> </td> <td> <input type = "text" size = 5 name = "b23"></input> </td> <td> <input type = "text" size = 5 name = "b24"></input> </td> <td> <input type = "text" size = 5 name = "b25"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b31"></input> </td> <td> <input type = "text" size = 5 name = "b32"></input> </td> <td> <input type = "text" size = 5 name = "b33"></input> </td> <td> <input type = "text" size = 5 name = "b34"></input> </td> <td> <input type = "text" size = 5 name = "b35"></input> </td> </tr> </form> </table> 答え <table border = 1> <form id = "C"> <tr> <td> <input type = "text" size = 5 name = "c11"></input> </td> <td> <input type = "text" size = 5 name = "c12"></input> </td> <td> <input type = "text" size = 5 name = "c13"></input> </td> <td> <input type = "text" size = 5 name = "c14"></input> </td> <td> <input type = "text" size = 5 name = "c15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c21"></input> </td> <td> <input type = "text" size = 5 name = "c22"></input> </td> <td> <input type = "text" size = 5 name = "c23"></input> </td> <td> <input type = "text" size = 5 name = "c24"></input> </td> <td> <input type = "text" size = 5 name = "c25"></input> </td> </tr> </form> </table> </body>

  • javascript 関数についての質問

    javascriptで 入力された日付を元に30日後、40日後、60日後、90日後の日付を表示したいのですが、 作った関数が1回しか使えませんTT(?)何回も使えるようにしたいです! 初歩的な質問ですみませんが、どうすればよいでしょうか? <html> <head> <title>ねこ</title> <script> function Kekka(days){ Yobi = new Array("日","月","火","水","木","金","土"); Date = new Date(document.form.y.value, document.form.m.value -1, document.form.d.value); d = Date.getDate(); Date.setDate(d+days); y = Date.getFullYear(); m = Date.getMonth()+1; d = Date.getDate(); w = Date.getDay(); str1 = y+"年"+m+"月"+d+"日("+Yobi[w]+"曜日)"; //土曜日か日曜日だったら次の月曜の日付もとる if(w == 0){ w = 1; Date.setDate(d+days+1); d = Date.getDate(); } else if(w == 6){ w = 1; Date.setDate(d+days+2); d = Date.getDate(); } str2 = y+"年"+m+"月"+d+"日("+Yobi[w]+"曜日)"; return str1,str2; } function CLR(){ document.form.y.value="";document.form.m.value="";document.form.d.value=""; document.form.v1.value="";document.form.v1_2.value=""; document.form.v2.value="";document.form.v2_2.value=""; document.form.v3.value="";document.form.v3_2.value=""; document.form.v4.value="";document.form.v4_2.value=""; document.form.v5.value="";document.form.v5_2.value=""; } function Test(){ Kekka(30); document.form.v1.value = str1; document.form.v1_2.value = str2; Kekka(40); document.form.v2.value = str1; document.form.v2_2.value = str2; } </script> </head> <body> てすとなう<br><br> <form name="form"> <input type="text" name="y" size="4">年 <input type="text" name="m" size="2">月 <input type="text" name="d" size="2">日 <input type="button" value="start" onclick="Test()"> <input type="button" value="CLR" onclick="CLR()"> <br><br> 30日後:<input type="text" name="v1" size="27">→<input type="text" name="v1_2" size="27"><br> 40日後:<input type="text" name="v2" size="27">→<input type="text" name="v2_2" size="27"><br> 60日後:<input type="text" name="v3" size="27">→<input type="text" name="v3_2" size="27"><br> 90日後:<input type="text" name="v4" size="27">→<input type="text" name="v4_2" size="27"><br> 3ヶ月後:<input type="text" name="v5" size="27">→<input type="text" name="v5_2" size="27"><br> <br><br> </form> </body> </html>

  • formタグ

    HTMLで、formを使用し、CGIへテキストエリアのデータをpostしたいと 考えております。 テキストエリアを3つ、ボタンを1つ設けるならば 通常以下のようにすると思います。(必要部分の抜粋) <form action="foo1.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行"> </form> こうすると、実行ボタンをクリックすると、text1、text2、text3のテキストエリアに 記述されているテキストが送信されますが、ここにボタンをもう一つ設け、 上記3つのデータを別のCGIに送信したいのですが、 この場合どのようにHTMLを記述したらよいでしょうか? 新たに下記のようにformタグを設けると、テキストエリアは6つになってしまいますし。。。 <form action="foo2.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行2"> </form> どなたか分かる方情報頂けますか。

    • ベストアンサー
    • HTML
  • 値の取得

    先日と同じ問題を出してしまい、申し訳ございません。 iの値を取得したいですが、どうしてもservlet側を取得が出来ないです。 教えてください。 <%@page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.util.*" %> <%@ page import="blog.*" %> <html> <body> <script type="text/javascript"> <!-- function check(){ if(window.confirm('本当に削除してよろしいでしょうか?')){ // 確認ダイアログを表示 var element = document.getElementById("i") request.setAttribute("id", element);// return true; // 「OK」時は送信を実行 } else{ // 「キャンセル」時の処理 window.alert('キャンセルされました'); // 警告ダイアログを表示 return false; // 送信を中止 } } //--> </script> <center> <table> <form action="SeachServlet" method="POST"> <tr> <td>名前:<input type="text" name="name" size="40" value="<%if(request.getAttribute("name")!=null){%> <%=request.getAttribute("name")%><%}%>"></td></tr> <tr><td>日付: <select name="year"> <option><%if(request.getAttribute("year")!=null){%> <%=request.getAttribute("year")%> <%}%></option> <%Calendar cl=Calendar.getInstance(); int year = cl.get(Calendar.YEAR); for(int i=year-7; i<=year+3;i++){ %> <option value="<%=i %>"> <%=i %></option> <%} %> </select>年 <select name="month"> <option><%if(request.getAttribute("month")!=null){%> <%=request.getAttribute("month")%> <%}%></option> <% for(int i=1; i<=12;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>月 <select name="day"> <option><%if(request.getAttribute("day")!=null){%> <%=request.getAttribute("day")%> <%}%></option> <% for(int i=1; i<=31;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>日</td> </tr> <tr><td><input type="button" value=" 印刷 "></td> <td><input type="submit" name="seach" value=" 検索 "></td> </form> </tr> </table> <hr> <FORM> <div><input type="button" value=" 戻る " onClick="history.back()"></div> </FORM> <form action="SeachServlet" method="POST"> <% List<Loginbeans> list = (List<Loginbeans>)request.getAttribute("productlist"); if(list.isEmpty()){ out.print("該当のデータはありません。"); }else{ %> <table border="1"> <tr><th>ユーザID</th><th>名前</th><th>日付</th></tr> <% int i=0; for (Loginbeans bn : list) { i++;//この値を取得したいです %> <tr><td><%=bn.getUser_id()%><input name="use_id" type="hidden" value="<%=bn.getUser_id() %>"/></td> <td><%=bn.getName()%><input name="name" type="hidden" value="<%=bn.getName()%>"/></td> <td><%=bn.getTotal()%><input name="total" type="hidden" value="<%=bn.getTotal()%>"/></td> <td><input id="<%=i%>" type="submit" value=" 削除 " name="delete" onClick="return check()"></td> </tr> <%}}%> <input type="hidden" name ="number" value ="element"> </form> </table> </center> </body> </html> selvet側で String id = (String)request.getAttribute("id"); String ida = request.getParameter("number"); 取得できないですが・・

  • PHPで日付の範囲検索

    PHPを使って日付の範囲検索を実装しています。日付をセレクトフォームで選択し、該当する日時をSELECT文で記述するという流れです。イメージは以下のような感じですが、大体合っていますか? <? php if (!empty(filter_input(INPUT_POST, 'day'))) { $day = filter_input(INPUT_POST, 'day'); ・・・・ SELECT 文   ・・・・ ?> <html> <div class="search"> <form method="post"> <select name="year"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> </select> <select name="month"> <?php for ($i=1; $i <= 12; $i++) { $month .= '<option value="'.$i.'">'.$i.'月</option>'; } ?> </select> <select name="day"> <?php for ($i=1; $i <= 31; $i++) { $day .= '<option value="'.$i.'">'.$i.'日</option>'; } ?> </select> <input type="hidden" name="search" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> <input type="submit" value="検索"> </form> </div> </html>

    • ベストアンサー
    • PHP
  • フォームへの前回入力値をクリアーする方法は?

    以下のコードでフォームへの前回入力値を保持しています。 送信前は"RESET"ボタンで入力値をクリアーできますが、送信後は入力値をクリアーできません。(RESETボタンをクリックしても送信済$_POSTが表示されます)おそらくブラウザのキャッシュで$_POSTの値が保持されているためと思われますが、何らかのボタンクリックでこれらの$_POST値をクリアする方法をご存知に方、是非ご教授ください。 <?php $yyyy=$_POST[Y]; $mm=$_POST[M]; $dd=$_POST[D]; ?> <FORM action="<?=$_SERVER[PHP_SELF]; ?>" method="post" > <P>YYYY<INPUT size="10" type="text" name="Y" value="<?= $yyyy;?>"></P> <P>MM<INPUT size="10" type="text" name="M" value="<?= $mm;?>"></P> <P>DD<INPUT size="10" type="text" name="D" value="<?= $dd;?>"></P> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="reset"> </FORM>

    • ベストアンサー
    • PHP