出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

メッセージ確認後レコードを更新したい   NOBAうさぎさん [2003/01/29 11:07:04] [3157]
  Re:メッセージ確認後レコードを更新したい   NOBAうさぎさん [2003/01/29 13:54:27] [3158]
  Re:メッセージ確認後レコードを更新したい   ぽこぷぅさん [2003/01/30 9:20:41] [3160]
    Re:メッセージ確認後レコードを更新したい   NOBAうさぎさん [2003/01/31 17:25:44] [3161]

[3157] メッセージ確認後レコードを更新したい
投稿者:NOBAうさぎさん 2003/01/29 11:07:04
こんにちは、まみです。

確認ダイアログボックス(Javascript:confirm)の
後処理が上手く行かないので投稿致しました。

処理としては
1.テーブル個人情報から就業ステータスが「就業中」で該当する
 「個人情報id」のレコードをSELECTする。
2.Javascriptのconfirmで、1のレコードの就業ステータスを
 「退社」にするかの確認ダイアログを表示する。
3.2で「はい」をクリックした場合は、1のレコードの
  就業ステータスを「退社」にし、Updateする。
ということをしたいと思っています。
この処理は、ループ処理させているのですが、
「confirm」を「true」にした場合のみ、SQLしてUpdateと
していますが、「キャンセル」クリックでも、「true」処理の
方にいってしまい、レコードをUpdateさせてしまいます。
ASP+Javascriptで、こういう書き方するとマズいのでしょうか?

本来なら、別ASPファイルに飛んで処理を行なうという
形が妥当だと思いますが、下記ソース後に別の処理を
書いているので、なるべくなら1つのファイルでの処理を
希望しています。

ご教授の程宜しくお願い致します!


***ソース***
<SCRIPT LANGUAGE="Javascript">
var result;
var Gaitou;
<%
Dim oCon,sConStr,oRZai,oRKozin1,oRKozin2
Dim Kozin_ID,Oboe_ID,Kei_ID
Dim oRKazu1,oRKazu2,Gaitosu,DelKozin,Kazu,Shimei

Set oCon = Server.CreateObject("ADODB.Connection")
sConStr = Application.Contents("ConCustomer")
oCon.Open sConStr

Kozin_ID = Request("Name_ID")
Kozin_ID = oRZai("個人情報id")
set oRKozin1 = oCon.Execute("SELECT * FROM 個人情報 WHERE 個人情報id='" & Kozin_ID & "' AND 就業ステータス='就業中'")
%>
Gaitou = "<%=oRKozin1("氏名")%>";
result=confirm(Gaitou + "の就業ステータスを「退社」にしますか?");
if (result==true){
<%
DelKozin = "SELECT * FROM 個人情報 WHERE 個人情報id='" & Kozin_ID & "'"
set oRKozin2 = Server.CreateObject("ADODB.Recordset")
oRKozin2.Open DelKozin,oCon,3,3

oRKozin2("就業ステータス") = "退社"
oRKozin2.Update
oRKozin2.Close
set oRKozin2 = Nothing
%>
}
</SCRIPT>

[3158] Re:メッセージ確認後レコードを更新したい
投稿者:NOBAうさぎさん 2003/01/29 13:54:27
こんにちは!
名前を「NOBAうさぎ」で投稿しましたが、
本当の名前は「まみ」です。
いつもお世話になっています。

名前を変えて投稿しましたが、他意はないです。
宜しくお願い致します。

[3160] Re:メッセージ確認後レコードを更新したい
投稿者:ぽこぷぅさん 2003/01/30 9:20:41
> 「confirm」を「true」にした場合のみ、SQLしてUpdateと
> していますが、「キャンセル」クリックでも、「true」処理の
> 方にいってしまい、レコードをUpdateさせてしまいます。
> ASP+Javascriptで、こういう書き方するとマズいのでしょうか?

まずいというか、考え方が間違っています

ASPはサーバサイド処理され
JavaScriptはクライアントサイドスクリプトです

ASPで、すべての処理が行われた後
クライアント側にデータ(HTML等)が送信され
クライアントの操作にあわせてJavaScriptが動きます

if文以下の<%%>は、
このページが表示される前にサーバ側で実行されてしまっています。
どちらのボタンを押してもUPDATEされているのではなく、
ダイアログのボタンを押す前に、すでにDBがUPDATEされています。

このダイアログが表示されるページが表示された時点で
ブラウザからソースを表示させてみていただくと分かると思うのですが

見た所、退社ステータスを変更する際の
確認ダイアログを出したいだけだと思うので、
入力ページで「退社」を選んだ際に
JavaScriptで確認ダイアログを表示して
「はい」だったらUPDATEを行うASPページに飛べば良いのでは?

[3161] Re:メッセージ確認後レコードを更新したい
投稿者:NOBAうさぎさん 2003/01/31 17:25:44
ぽこぷぅさん、レスありがとうございました。

そうですよね〜。間違っていますよね。
あれから検証して、ぽこぷぅさんのおっしゃる通り
自分の考え方&プログラミングが間違っていた事が分かって、
メッセージ表示ではなく、サブウィンドウに該当社員を
全部表示させて、チェックボックスにチェックすると
ステータスが変更になる、という方法に変更しました。
だいぶ苦労しましたが、1名ずつメッセージが出るのも
まどろっこしいこともあってこの方法にしました。

適切なアドバイスを頂き、ありがとうございました。
これからも宜しくお願い致します。



TreeBBS For ASP V.0.1.3
Program By YasNet