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

ボタンが押されたらDB処理したい   もりもりさん [2005/08/22 11:22:01] [5196]
  Re:ボタンが押されたらDB処理したい   YasNet(管理人)さん [2005/08/22 12:45:57] [5198]
    Re:ボタンが押されたらDB処理したい   もりもりさん [2005/08/22 13:17:27] [5199]
      Re:ボタンが押されたらDB処理したい   もりもりさん [2005/08/22 15:10:51] [5202]
        Re:ボタンが押されたらDB処理したい   morさん [2005/08/22 16:20:44] [5204]
          発言者により削除されました!! 食事睡眠ありなみん?さん [2005/08/22 16:46:05] [5205]
          Re:ボタンが押されたらDB処理したい   もりもりさん [2005/08/22 16:51:56] [5206]
            Re:ボタンが押されたらDB処理したい   もりもりさん [2005/08/22 16:59:33] [5207]
              Re:ボタンが押されたらDB処理したい   morさん [2005/08/23 9:56:08] [5211]
                Re:ボタンが押されたらDB処理したい   もりもりさん [2005/08/23 11:09:15] [5212]

[5196] ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/22 11:22:01
初めて投稿するASP歴1ヶ月程度の者です、お願いします。

「ボタンが押されたらDB処理をする」ということを実現したいのですが
うまくいきません。ソースは以下の通りです。

<%@ LANGUAGE=vbscript LCID=1041 %>
<% Option Explicit %>
<!--#INCLUDE FILE="TestFunc.asp"-->

<HTML>
<BODY>
省略
</BODY>
</HTML>
<SCRIPT LANGUAGE="VBScript" EVENT = "onClick" FOR = "Button">
<!--
  Dim sqlTxt,rs

  sqlTxt = "select * from 在庫 "
  set rs = RSOpen(sqlTxt) ※ここでエラーになります
-->
</SCRIPT>

+++++++++以下はTestFunc.aspにある関数++++++++
Function RSOpen(mySQL)
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

rs.open mySQL,DBConn(0)
Set RSOpen = rs
End Function

Function DBConn(num)
  Dim objConn2,strConn

strConn = "Provider=SQLOLEDB.1;Password=sa;Persist  Security Info=True;User ID=sa;" & _
"Initial Catalog=" & "Test" & ";Data Source=" & "testserver"

Set objConn2 = Server.CreateObject ("ADODB.Connection")
objConn2.ConnectionString = strConn
objConn2.Open
Set DBConn2 = objConn2

End Function

BODY内部に<%%>でset rs = RSOpen(sqlTxt)を書き込めば
問題なく動作しますが、VBScruptすると駄目みたいです。
ボタンが押されたらリセットするというような機能を実現したく、
onClickをやってみたのですが…。
教えて下さい、お願いします。

[5198] Re:ボタンが押されたらDB処理したい
投稿者:YasNet(管理人)さん 2005/08/22 12:45:57
こんにちは YasNet(管理人)です。

以下は、クライアント処理とサーバー処理を考えると理解できると思うのですが
混同しておられないでしょうか?

エラーの箇所は、クライアントで動作していませんか?

あとエラーが発生と有りますが、どんなエラーが出たのでしょうか

出先で時間が無いので、冷たい文面で失礼します。

それでは 失礼致します。

> 初めて投稿するASP歴1ヶ月程度の者です、お願いします。
>
> 「ボタンが押されたらDB処理をする」ということを実現したいのですが
> うまくいきません。ソースは以下の通りです。
>
> <%@ LANGUAGE=vbscript LCID=1041 %>
> <% Option Explicit %>
> <!--#INCLUDE FILE="TestFunc.asp"-->
>
> <HTML>
> <BODY>
> 省略
> </BODY>
> </HTML>
> <SCRIPT LANGUAGE="VBScript" EVENT = "onClick" FOR = "Button">
> <!--
>   Dim sqlTxt,rs
>
>   sqlTxt = "select * from 在庫 "
>   set rs = RSOpen(sqlTxt) ※ここでエラーになります
> -->
> </SCRIPT>
>
> +++++++++以下はTestFunc.aspにある関数++++++++
> Function RSOpen(mySQL)
> Dim rs
> Set rs = Server.CreateObject("ADODB.Recordset")
>
> rs.open mySQL,DBConn(0)
> Set RSOpen = rs
> End Function
>
> Function DBConn(num)
>   Dim objConn2,strConn
>
> strConn = "Provider=SQLOLEDB.1;Password=sa;Persist  Security Info=True;User ID=sa;" & _
> "Initial Catalog=" & "Test" & ";Data Source=" & "testserver"
>
> Set objConn2 = Server.CreateObject ("ADODB.Connection")
> objConn2.ConnectionString = strConn
> objConn2.Open
> Set DBConn2 = objConn2
>
> End Function
>
> BODY内部に<%%>でset rs = RSOpen(sqlTxt)を書き込めば
> 問題なく動作しますが、VBScruptすると駄目みたいです。
> ボタンが押されたらリセットするというような機能を実現したく、
> onClickをやってみたのですが…。
> 教えて下さい、お願いします。

[5199] Re:ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/22 13:17:27
管理人さん、ありがとうございます。
クライアント処理とサーバー処理と聞いて調べました。
スクリプトはクライアント側とサーバー側で動作するという
ことに気が付いていませんでした。

<SCRIPT LANGUAGE="VBScript" EVENT = "onClick" FOR = "Button" RUNAT = "Server">

このように「RUNAT = "Server"」を追加し、
サーバー側で動作するように
修正したところ、正常に動作しました。
あっ、<!-- -->は不要でした。
非常に助かりました!本当にありがとうございます!!
また教えて下さい。

> こんにちは YasNet(管理人)です。
>
> 以下は、クライアント処理とサーバー処理を考えると理解できると思うのですが
> 混同しておられないでしょうか?
>
> エラーの箇所は、クライアントで動作していませんか?
>
> あとエラーが発生と有りますが、どんなエラーが出たのでしょうか
>
> 出先で時間が無いので、冷たい文面で失礼します。
>
> それでは 失礼致します。
>
> > 初めて投稿するASP歴1ヶ月程度の者です、お願いします。
> >
> > 「ボタンが押されたらDB処理をする」ということを実現したいのですが
> > うまくいきません。ソースは以下の通りです。
> >
> > <%@ LANGUAGE=vbscript LCID=1041 %>
> > <% Option Explicit %>
> > <!--#INCLUDE FILE="TestFunc.asp"-->
> >
> > <HTML>
> > <BODY>
> > 省略
> > </BODY>
> > </HTML>
> > <SCRIPT LANGUAGE="VBScript" EVENT = "onClick" FOR = "Button">
> > <!--
> >   Dim sqlTxt,rs
> >
> >   sqlTxt = "select * from 在庫 "
> >   set rs = RSOpen(sqlTxt) ※ここでエラーになります
> > -->
> > </SCRIPT>
> >
> > +++++++++以下はTestFunc.aspにある関数++++++++
> > Function RSOpen(mySQL)
> > Dim rs
> > Set rs = Server.CreateObject("ADODB.Recordset")
> >
> > rs.open mySQL,DBConn(0)
> > Set RSOpen = rs
> > End Function
> >
> > Function DBConn(num)
> >   Dim objConn2,strConn
> >
> > strConn = "Provider=SQLOLEDB.1;Password=sa;Persist  Security Info=True;User ID=sa;" & _
> > "Initial Catalog=" & "Test" & ";Data Source=" & "testserver"
> >
> > Set objConn2 = Server.CreateObject ("ADODB.Connection")
> > objConn2.ConnectionString = strConn
> > objConn2.Open
> > Set DBConn2 = objConn2
> >
> > End Function
> >
> > BODY内部に<%%>でset rs = RSOpen(sqlTxt)を書き込めば
> > 問題なく動作しますが、VBScruptすると駄目みたいです。
> > ボタンが押されたらリセットするというような機能を実現したく、
> > onClickをやってみたのですが…。
> > 教えて下さい、お願いします。

[5202] Re:ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/22 15:10:51
再び参上です。
先程解決できたと思ったのですが、「ボタンが押されたら処理する」
という肝心なところができていませんでした。
先程のままですと、ボタンを押す前に(ページ表示時に)処理が
実行されてしまいます。(涙)

今、実現したいことは、

1.ページ表示(下のDB処理は実行しないこと)
2.「リセット」ボタンを押す
3.サーバー側でDB処理(リセット処理)を行う

ということです。サーバー側ということなので
RUNAT = "Server"を追加しましたが、
そうするとボタンのOnClickで動作しなくなります。
ボタンのOnClickというイベントでサーバー側の処理を
行うことはできないのでしょうか?
ちょっと混乱しています。
どうか宜しくお願いします。

[5204] Re:ボタンが押されたらDB処理したい
投稿者:morさん 2005/08/22 16:20:44
こんにちは。

とりあえず、DB処理のところを関数化(サブプロシージャ?)してください。
で、その関数をボタンの onClickイベントなどで呼んであげれば目的の動作ができそうです。

[5205] Re:ボタンが押されたらDB処理したい
投稿者:食事睡眠ありなみん?さん 2005/08/22 16:46:05
発言者により削除されました!!

[5206] Re:ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/22 16:51:56
morさん、ありがとうございます。
アドバイスの通り、関数ResetJobを作成し、以下のようにしました。

<input name="Button1" type="BUTTON" OnClick='ResetJob()' value="リセット")>
<SCRIPT LANGUAGE="VBScript" runat="server">
Sub ResetJob()
 省略
End Sub
</SCRIPT>

これでもうまくいきません。
onClickイベントでResetJob関数を呼び出したいです(涙)


> こんにちは。
>
> とりあえず、DB処理のところを関数化(サブプロシージャ?)してください。
> で、その関数をボタンの onClickイベントなどで呼んであげれば目的の動作ができそうです。
>

[5207] Re:ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/22 16:59:33
追記です。
ステータスバーに「ページでエラーが発生しました。」と
表示されますが、これはクライアント側、サーバー側を混同している
ことが原因ですね。ResetJobの中にMsgBoxとResponse.Writeを
配置して片方を有効にしたりしてテストしています。
今回の場合、サーバー側でDB処理を行いたいので
ResetJobの中でResponse.Writeが正常に動作すれば良いと
解釈していますが間違いでしょうか?
何でも構いませんのでアドバイスお願いします。
色々テストしてみます。


[5211] Re:ボタンが押されたらDB処理したい
投稿者:morさん 2005/08/23 9:56:08
こんにちは。

> <input name="Button1" type="BUTTON" OnClick='ResetJob()' value="リセット")>
これは、OnClick="VBScript:ResetJob" かな?

その後のコメントを見て思ったのですが、やりたい処理を行うには、素直に Submit させたほうがいいかもしれません。
Scriptの処理ではなく、Submitさせて ASPで処理させたほうが何かと便利かと思います。

[5212] Re:ボタンが押されたらDB処理したい
投稿者:もりもりさん 2005/08/23 11:09:15
おはようございます。
morさんに教えて頂いたようにtype = "submit"してASPで処理
するように修正したところ、思い通りに実現できました!!
本当にありがとうございます。
また質問したいと思いますので宜しくお願いします。

> こんにちは。
>
> > <input name="Button1" type="BUTTON" OnClick='ResetJob()' value="リセット")>
> これは、OnClick="VBScript:ResetJob" かな?
>
> その後のコメントを見て思ったのですが、やりたい処理を行うには、素直に Submit させたほうがいいかもしれません。
> Scriptの処理ではなく、Submitさせて ASPで処理させたほうが何かと便利かと思います。
>



TreeBBS For ASP V.0.1.3
Program By YasNet