プロが教える店舗&オフィスのセキュリティ対策術

伝票入力する際、ACCESS等で作ると、例えば「得意先コード」を入力すると
「得意先名」が表示される。という画面がありますよね。
そこで先輩方にお伺いしたいのですが、
ASPを使って同様のことをやる場合、どんな手法があるのでしょうか?
私なりに考えた方法が2つほどあるのですが、これが正しいのでしょうか?
<案1>
・子ウインドウを表示し、そこでデータベースを参照し、親ウインドウに値を代入。
---親ウインドウ側---
<INPUT type="text" name="text1" onBlur="GetJTname()">
<INPUT type="text" name="text2">

<script language="JAVAScript">
function GetJTname(){
 Newwin=window.open("test1_1.asp?a=" + document.form1.text1.value,"sample","width=240,height=180");
}
</script>
---子ウインドウ側---
<form name="form2">
<INPUT type="text" id=text1 name=text1 value="<%=rs.Fields("name_inf").Value%>">
</form>
<script language="JAVAScript">
function action(){
 window.opener.document.form1.text2.value=document.form2.text1.value;
 window.close();
}
</script>

<案2>
・自分自身にデータを投げる
<INPUT type="text" name="text1" onBlur="GetJTname()">
<INPUT type="text" id=text2 name=text2
QS=Request.QueryString("B")
value="<%if QS <>"" then %><%=Tname(QS)%><%end if%>">
<%function Tname()
<script language="JAVAScript">
function GetJTname(){
 location.href ='test1.asp?B=' + document.form1.text1.value;
}
</script>
<%function Tname(code)
'... ADOの処理
end function%>

(案1)では、当然ながら一瞬ウインドウが開きます。
(案2)では、せっかく入力したTEXT1の内容が消えてしまいます。

A 回答 (2件)

> 新たな画面を開いている関係上、レスポンスが悪いのが気になっていました。



姑息な手段の域を出ていませんが、こっそりフレームを切ってしまう、という手もあります。

どこでも良いんですが、左端とかにほそーく、かつ、ボーダを無しにして、そこのフレームで
処理を動かしちゃう。

あと、処理をするイベントは onBlur よりは onChange の方が良いでしょう。

onChange もフォーカスを失ったときにしか出てこないのですが、値が変わったときにだけ
出てきたはずです。


どちらにしても、Web ってこういう処理は厳しいですよね。件数が少なければ、
全ての得意先を埋め込んで、JavaScript で検索の処理を書いてしまうという手も
ありますけど。
    • good
    • 0
この回答へのお礼

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

>処理をするイベントは onBlur よりは onChange の方が良いでしょう。
まだ、JavaScriptに慣れていないので、"onChange"イベントをリファレンス書より見つけだすことができていませんでした。
"DHTML","JavaScript","VBScript","ASP","SQL"のリファレンス本を5冊並べながら試行錯誤しています。

>どちらにしても、Web ってこういう処理は厳しいですよね
じつは、このお言葉を待っていたような気がします。
専門家の方が、簡単ではないという認識であれば、別の方法も検討に入れなくてはいけないと思ったしだいです。

>全ての得意先を埋め込んで...
確かに件数が少なければ良いと思いますが、今回は3000件以上のデータがあるのと、
常に変化している情報のため、難しいと思います。

お礼日時:2002/01/28 13:55

> (案1)では、当然ながら一瞬ウインドウが開きます。



スクリーン(画面)の外に表示してはいかが?

ブラウザが表示されているスクリーンの大きさは、window.screen オブジェクトの
width、height プロパティで、それぞれ幅、高さが取得できます。


> (案2)では、せっかく入力したTEXT1の内容が消えてしまいます。

パラメータとして text1 を渡しているのだから、値を設定すれば良いんじゃないですか?

<INPUT type="text" name="text1" onBlur="GetJTname()" value="<%=○○○%>">

って。

# 私、ASPはやったことが無いので、パラメータの取得をどうやるのか分かりません m(_ _)m
# request みたいなオブジェクトがありませんか?
    • good
    • 0
この回答へのお礼

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

>スクリーン(画面)の外に表示してはいかが?
なるほど。やってみます。
新たな画面を開いている関係上、レスポンスが悪いのが気になっていました。
本当は「onBlur」ではなく「AfterUpdate」の様なイベントがあればいいのにと思っているしだいです。
参照ボタン→子ウインドウ→選択→代入 のプロセスの方がいいような気もしてきました。

>パラメータとして text1 を渡しているのだから、値を設定すれば良いんじゃないですか?
まさにご指摘の通りですが、ほかにもいっぱいコントロールがあるのです。
中でも100文字ぐらいのテキストエリアが複数ありますので、
あまりでかいパラメータを渡すのもどうか?と思っています。

余談ですが、私はACCESS育ちで、HTMLはリファレンスを見ながら試行錯誤しています。

お礼日時:2002/01/25 21:35

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