• ベストアンサー

ASPへのデータの受け渡しについて

以下のようなリンクが自動生成されるHTMLをつくりました。 http://**********/****/zzz.asp?A=5,B=nande zzz.aspの内部で A=request.querystring("A") B=request.querystring("B") と記述して、受け渡しを完了しているのですが、 Aについては数値として扱いたいのですが、 チェックをしていると、どうも文字列として変数の中に格納されているようです。 ここで質問です。 (1)requestオブジェクトを使って値の受け渡しをした場合 すべて受け渡し後は文字列としてしか扱えないのでしょうか? (2)文字列としてしか扱えない場合、数値として受け渡し後に 扱いたい場合の対処方法はあるのでしょうか? ちなみに受け渡しの時のMethodはGetを使っています。 よろしくお願いします。

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

  • ベストアンサー
  • sawagani
  • ベストアンサー率73% (19/26)
回答No.5

>>>ところで、「zzz.asp?A=5,B=nande」の部分ですが、「zzz.asp?A=5&B=nande」ではないですか? > >ご指摘の通りです。 実は、ここが間違っているせいかと思ってたんですが、そうではないのですね。 「型が一致しません。: 'cint'」というエラーですが、引数部分が空文字列であったり、数値に変換できない文字列を指定した場合に発生します。 Request.QueryStringでパラメータ自体が(文字列としても)正しく取得できていないような気がするのですが・・・。 次の点、もう一度確認してみて下さい。 (1).zzz.aspへのパラメータが正しく行われているか?   zzz.aspが開かれている状態(エラーメッセージが出ててもかまいません)の画面を右クリックし、プロパティを表示。   この時にアドレスが「http://**********/****/zzz.asp?A=5&B=nande」になっていなければ、呼び出し元のプログラムも疑ってみてください (2).QueryStringでパラメータが正しく取得できているか?   Response.Write "A: """ & Request.QueryString("A") & """<br>"   Response.Write "B: """ & Request.QueryString("B") & """<br>"   のようなコードを埋め込んで、A, Bのパラメータがどのようになっているか確認   Aに数字が入っていますか? それと、 >ちなみに受け渡しの時のMethodはGetを使っています。 とありますが、呼び出し元では <form action="http://**********/****/zzz.asp?A=5&B=nande" method="get"> <input type="submit"> </form> というような記述をしてはいませんか?この場合、正しくパラメータが渡らないかもしれません。 とりあえず、思いついたことを書いてみました(^^;

ultra-daddy
質問者

お礼

再びの回答ありがとうございます。 (1)については問題ありませんでした。 (2)は、質問をアップしたあとに何度かチェックしてみたのですが、 見た目上は変数の中に入っていました。 ただ、5と見えても それが数値なのか、文字列なのかは表示させるだけでは判断できなかったので 最初は全く訳がわからなかったのです。 #4のお礼にも書きましたが、 気まぐれで書いたコードは動いたので かなり不思議です。 ただ、動いてしまったので もう、逆に怖くてさわれません・・・(笑) どちらにしてもCintという関数を知らなかったので 非常に助かりました。 ご丁寧にありがとうございました。

その他の回答 (4)

回答No.4

以下の方法でいかがでしょうか。 こちらでは、一応動いたのですが。。 Dim test test = CLng(Request("A"))

ultra-daddy
質問者

お礼

再びの回答ありがとうございます。 どうも直接Requestオブジェクトを関数の中へ 入れるとエラーが出るみたいです。 気まぐれで、 A=request.querystring("A") A=cint(A) と書いてみたら、なぜか動きました。 理由はわかりません。 でも、とても参考になりました。 ご丁寧にありがとうございました。

  • sawagani
  • ベストアンサー率73% (19/26)
回答No.3

CInt関数などで変換できます。 A = CInt(request.querystring("A")) ところで、「zzz.asp?A=5,B=nande」の部分ですが、「zzz.asp?A=5&B=nande」ではないですか?

ultra-daddy
質問者

お礼

どうもありがとうございます。 >>ところで、「zzz.asp?A=5,B=nande」の部分ですが、「zzz.asp?A=5&B=nande」ではないですか? ご指摘の通りです。 すみません・・・m(_ _)m

ultra-daddy
質問者

補足

#2と#3で同じ回答でしたので、テスト後のご報告を・・・ A = CInt(request.querystring("A")) を記述して実際にテストしてみたのですが 以下のようなエラーが出ました。 ------------- エラー タイプ Microsoft VBScript 実行時エラー (0x800A000D) 型が一致しません。: 'cint' /test5.asp, line 20 ------------- ちなみに作成したASPファイルの中身の 頭の部分は・・・ <HTML> <head> <TITLE>簡単な例</TITLE> </head> <body> <% A = CInt(request.querystring("A")) (中略) </HTML> マイクロソフトのHPでリファレンスを調べると 使い方はあっているようなのですが・・・ なぜエラーになってしまうのでしょうか・・・

回答No.2

CInt関数で、数値型に変換するのはだめでしょうか?

ultra-daddy
質問者

お礼

どうもありがとうございます。 テストしてみます。

  • gesotoku
  • ベストアンサー率28% (77/271)
回答No.1

Integer宣言した変数にrequest.querystring("A") を渡すのはダメですか? 数値として評価可能であればそのまま代入できるはずです。

ultra-daddy
質問者

補足

早速の回答ありがとうございます。 以下の内容が間違っていたら、指摘お願いします。 私の知る限りでは、 aspの中のVBScriptでは すべての変数がバリアント型らしく Integer宣言をできないという認識なのですが・・・ ちなみにInt関数を通してInt(A)という形にすると 数値の足し算の結果は正常に出るようですが なぜか、Int(A)の形のままでもIf文が 正常に動いていないようです。 それと、大変失礼しましたが、 aspの中のプログラムはVBScriptで書いています。 質問に含まれていなくて、すみませんでした。

関連するQ&A

専門家に質問してみよう