- ベストアンサー
VBSで大小関係の比較処理
- 帳票を電子データ化するに当たり、作成したデータファイルをカスタマイズすることになりました。言語はVBScriptです。(ASPです。)まったくの初心者です。
- テキストボックス1とテキストボックス2と申請ボタンがあり、テキストボックス1に入力された値よりテキストボックス2に入力された値のほうが小さいときに申請ボタンを押すとエラーボックスが表示され、エラーボックスのOKボタンを押すとテキストボックス2の値を消して、テキストボックス2にカーソルを移動して入力を促す。
- VBSで大小関係の比較処理を行いたい場合、VBScriptの条件分岐文を使用することで実現することができます。まず、テキストボックス1とテキストボックス2の値を取得し、比較します。テキストボックス1の値がテキストボックス2の値よりも大きい場合はエラーボックスを表示し、テキストボックス2の値を消去して入力を促します。この処理は、申請ボタンのクリックイベントで行われます。VBScriptの条件分岐文やテキストボックスの値の取得方法などについて学習し、実装してみてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下はHTMLの記述です。 === 前略 === <INPUT TYPE='TEXT' ID='T1'> <INPUT TYPE='TEXT' ID='T2'> <INPUT TYPE='BUTTON' ONCLICK='Check()' VALUE='申請'> === 中略 === <SCRIPT LANGUAGE='VBScript'> Sub Check() Dim T1, T2 Set T1 = document.getElementById("T1") Set T2 = document.getElementById("T2") If T1.value > T2.value Then MsgBox "T1>T2です", vbCritical, "エラー" T2.focus Exit Sub End If 'TODO 正常時の処理をここから記述 End Sub </SCRIPT> === 後略 === 何がどう大きいか小さいかは分かりませんが、上記コードは単に文字列同士の比較になっています。もし、日付や数値の場合は変換してから比較しないと正常な結果になりません。 このScriptはクライアント側で動作するので、IE以外のブラウザではVBScriptが動作しないため無効です。できればこの部分はJavaScriptの方が良いでしょう。 尚、この処理をサーバ側Scriptで実現する方法もあります(もっと複雑な制御になる)が、手間をかける割に応答が遅く(サーバ往復のため) 効果的ではありません。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
T1.Valueとはテキストボックス内の文字列です。 数値に変換する場合はCDbl(倍精度実数)かCLng(長整数)を使います。数値の限界や丸めは実験してみてください。 日付の場合はCDate(お勧め)、DateValue、TimeValueを使います。 とりあえず、VBSやるなら以下のサイトを見てみてください。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/vtorifunctions.asp
お礼
ありがとうございました。 No.1のソースも含め、とても参考になりました。 教えていただいたサイトを参考に、もっと勉強したいと思います。 本当にありがとうございました!!
補足
>何がどう大きいか小さいかは分かりませんが、上記コードは単に文字列同士の比較になっています。もし、日付や数値の場合は変換してから比較しないと正常な結果になりません。 日付や数値の場合はどのように変換すればいいのでしょうか? 丸投げで申し訳ありません。