アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなリンクが自動生成されるHTMLをつくりました。


http://**********/****/zzz.asp?A=5,B=nande

zzz.aspの内部で

A=request.querystring("A")
B=request.querystring("B")

と記述して、受け渡しを完了しているのですが、
Aについては数値として扱いたいのですが、
チェックをしていると、どうも文字列として変数の中に格納されているようです。

ここで質問です。


(1)requestオブジェクトを使って値の受け渡しをした場合
すべて受け渡し後は文字列としてしか扱えないのでしょうか?

(2)文字列としてしか扱えない場合、数値として受け渡し後に
扱いたい場合の対処方法はあるのでしょうか?

ちなみに受け渡しの時のMethodはGetを使っています。

よろしくお願いします。

A 回答 (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>

というような記述をしてはいませんか?この場合、正しくパラメータが渡らないかもしれません。

とりあえず、思いついたことを書いてみました(^^;
    • good
    • 1
この回答へのお礼

再びの回答ありがとうございます。

(1)については問題ありませんでした。

(2)は、質問をアップしたあとに何度かチェックしてみたのですが、
見た目上は変数の中に入っていました。
ただ、5と見えても
それが数値なのか、文字列なのかは表示させるだけでは判断できなかったので
最初は全く訳がわからなかったのです。

#4のお礼にも書きましたが、
気まぐれで書いたコードは動いたので
かなり不思議です。
ただ、動いてしまったので
もう、逆に怖くてさわれません・・・(笑)

どちらにしてもCintという関数を知らなかったので
非常に助かりました。

ご丁寧にありがとうございました。

お礼日時:2005/04/01 18:30

以下の方法でいかがでしょうか。


こちらでは、一応動いたのですが。。

Dim test

test = CLng(Request("A"))
    • good
    • 0
この回答へのお礼

再びの回答ありがとうございます。

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

でも、とても参考になりました。

ご丁寧にありがとうございました。

お礼日時:2005/04/01 18:24

CInt関数などで変換できます。


A = CInt(request.querystring("A"))

ところで、「zzz.asp?A=5,B=nande」の部分ですが、「zzz.asp?A=5&B=nande」ではないですか?

この回答への補足

#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でリファレンスを調べると
使い方はあっているようなのですが・・・

なぜエラーになってしまうのでしょうか・・・

補足日時:2005/03/31 08:49
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

>>ところで、「zzz.asp?A=5,B=nande」の部分ですが、「zzz.asp?A=5&B=nande」ではないですか?

ご指摘の通りです。
すみません・・・m(_ _)m

お礼日時:2005/03/31 08:49

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

    • good
    • 0
この回答へのお礼

どうもありがとうございます。

テストしてみます。

お礼日時:2005/03/31 08:48

Integer宣言した変数にrequest.querystring("A")


を渡すのはダメですか?
数値として評価可能であればそのまま代入できるはずです。

この回答への補足

早速の回答ありがとうございます。

以下の内容が間違っていたら、指摘お願いします。

私の知る限りでは、
aspの中のVBScriptでは
すべての変数がバリアント型らしく
Integer宣言をできないという認識なのですが・・・

ちなみにInt関数を通してInt(A)という形にすると
数値の足し算の結果は正常に出るようですが
なぜか、Int(A)の形のままでもIf文が
正常に動いていないようです。

それと、大変失礼しましたが、
aspの中のプログラムはVBScriptで書いています。
質問に含まれていなくて、すみませんでした。

補足日時:2005/03/30 18:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!