• 締切済み

JScriptでDBへの書き込み方法

フォームの値をDBへ書き込みたいのですが、エラーになってしまいます。 tes.aspのフォームからw_com.aspで処理し、tes.aspへもどるということが やりたいのですが、どなたかご教授ください。 エラーは、w_com.aspのconn.Execute(sSQL);で落ちているようなのですが 書き方に問題があるのでしょうか? SQL文自体は平気でした。(クライアントで動かしたところ) また、Response.Redirect("tes.asp");というのは、使用できないのでしょうか?使用できないとしたら、どのような方法でしたらできるのでしょうか? 乱筆で申し訳ありませんが、ご教授願います。 宜しくお願い致します。 === tes.asp === <form name="frm2" method="post" action="w_com.asp"> <input type=hidden name="test1"> <input type=Button value=a onclick="a()"> </form> </body> </html> <script> function a(){ btn_onclick3(); document.frm2.submit(); } </script> === w_com.asp === <%@ language=JScript %> <% var sSQL = Request.Form("test1"); var conn = Server.CreateObject("ADODB.Connection"); var rs = Server.CreateObject("ADODB.Recordset"); conn.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ=" + Server.Mappath("tes.xls"); conn.Open; conn.Execute(sSQL); conn.Close; Response.Redirect("tes.asp"); %>

みんなの回答

  • Gimli
  • ベストアンサー率47% (9/19)
回答No.4

> アドバイスに対しての質問なのですが、 > 「データソースファイルをメモ帳などで開いて」の > 「データソースファイル」とは、何を指すのでしょうか? > この件の場合は、「エクセルファイル」のことでしょうか? ファイルDSN(データソース名)のつもりでした。 DSN を使ってるんじゃないんだったら、スルーして下さい。すみません。

tomsky
質問者

お礼

わかりました。 色々試してみたいと思います。 色々とアドバイスをありがとうございました。

  • Gimli
  • ベストアンサー率47% (9/19)
回答No.3

データソースファイルをメモ帳などで開いて、解析してみるのはどうでしょう。DSNでの設定とConnectionオブジェクトのデフォルトの設定で、何か差異があるかもしれませんよ。

tomsky
質問者

補足

アドバイスありがとうございます。 返事が遅くなり大変申し訳ありません。 アドバイスに対しての質問なのですが、 「データソースファイルをメモ帳などで開いて」の「データソースファイル」とは、何を指すのでしょうか? この件の場合は、「エクセルファイル」のことでしょうか? 教えて下さい。 宜しくお願いします。

  • Gimli
  • ベストアンサー率47% (9/19)
回答No.2

では、以下を参考にしてください。 http://support.microsoft.com/default.aspx?scid=kb;ja;175168

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;175168
tomsky
質問者

補足

ありがとうございます。 返事が遅くなり、申し訳ありません。 参考にして色々試してはいるのですが、 ODBC データソース名を指定して接続するとエラーは起こりませんでした。 DNS-LESS接続の指定の仕方が良くないのでしょうか? お忙しいところ調べて頂きありがとうございました。

  • Gimli
  • ベストアンサー率47% (9/19)
回答No.1

Execute でエラーが出てるとのことですが、エラー詳細も提示した方がいいと思いますよ。 あと、Redirect でもエラーが出てるのでしょうか?これもエラーの詳細を提示した方がいいですよ。

tomsky
質問者

補足

すみません。ありがとうございます。 エラー タイプは、 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Excel Driver] 更新可能なクエリであることが必要です。 とででいました。 Redirectの方は、エラーではなかったようです。(直接の原因ではありませんでした。) ご指摘ありがとうございました。

関連するQ&A

  • JScriptでDBへの接続方法について

    JScriptを使用してDBへの接続方法を教えて下さい。 var conn = Server.CreateObject("ADODB.Connection"); var rs = Server.CreateObject("ADODB.Recordset"); conn.Open; rs.Open("sheet2", "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ =" + Server.Mappath("tes.xls")); sSQL = "SELECT * FROM sheet2"; からの接続がうまくいきません。 どこがいけないのでしょうか? それとも、全てがいけないのでしょうか? よろしければ、どなたかご教授下さい。 お願いします。

  • ソートの設定

    ASPでアクセス97を使って品番、納期という順番に表示させたいのですが うまくいきません。 SQL文を使って品番順にはならんだのですが、納期がばらばらになってしまいます。どうしたら品番、納期順という並びになるか教えて下さい。 Dim Conn,SQL,RS xxxx=server.mappath("*****.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & xxxx Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from ******" SQL = SQL & " order by 品番 asc" set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3

  • ASPでORACLEのエラーが発生するのですが、対処方法をお教えください。

    Win2000(IIS) + ORACLE8.1.6 でASPを使ったWEBサーバを構築しようとしています。 まず手始めに、単純にデータを登録するような簡単なASPを作成しようとしているのですが、 下記処理が、133行目でエラーになってしまいます。 ※当然の事ながら、ODBC接続の設定は正常に行えていることを確認しております。  (Accessでリンクテーブルを使って、ODBC経由でテーブルにデータを追加できます。) <処理内容 (/Oracle/newtoroku.asp の一部)> 126行目 Dim Conn,SQL,RS 127行目 DBName="Provider=msdaora;Data Source=xxxxx;User ID=xxxxx;Password=xxxxx" 128行目 Set Conn = Server.CreateObject("ADODB.Connection") 129行目 Conn.open DBName 130行目 SQL = "select * from XXテーブル" 131行目 Set RS = Server.CreateObject("ADODB.Recordset") 132行目 RS.Open SQL, Conn,3,2 133行目 rs.AddNew <エラー内容> ADODB.Recordset (0x800A0CB3) 現在の Recordset は更新をサポートしていません。 プロバイダか、選択されたロックタイプの限界の可能性があります。 /Oracle/newtoroku.asp, line 133

  • アクセスからのデータ読み込み

    初めて質問します。  現在ホームページで、アクセスDBからデータを読んで、 それに対して更新する処理を作ってますが、 どうもSQL文を発行するとエラーになってしまいます。  その処理自体は今まで動いてたのですが、サーバを新しいのにしたら動かなくなってしまいました。(-_-;) 以前この処理を作った人が消えてしまい、誰に聞いても 分かりません・・。  どこがいけないのか分からないので、皆さん助けて下さい!!m(__)m 一応ロジック書いときます。 ************************* Set Con1 = Server.CreateObject("ADODB.Connection") Con1.Open "****" Set CTemp = Server.CreateObject("ADODB.Command") Set Rec1 = Server.CreateObject("ADODB.Recordset") sSql="SQL文" CTemp.CommandText = sSql CTemp.CommandType = 1 Set cmdTemp.ActiveConnection = Con1 Rec1.Open CTemp, , 0, 1 *************************  エラーは、[Set cmdTemp.ActiveConnection = Con1] で起こります。 以下がエラーメッセージです。 ************************* 予期しないエラーです /mente/menu/A.asp 外部オブジェクトでトラップできるエラーが発生しました。スクリプトの実行を続行できません。 ************************* 誰か助けて下さい!!(T_T)

  • DBの更新??

    ソースは下記です。 Set db=Server.CreateObject("ADODB.Connection") db.Provider="Microsoft.Jet.OLEDB.4.0" db.Mode=2 db.ConnectionString=Server.MapPath("../../script/db_dat/crv_haken.mdb") db.Open Set rs=db.Execute("select * from control " ) rs("day-upd") = Request.Form("編集担当") rs("tanto-upd") = date rs.update rs.Close db.Close Set db=Nothing で・・・実行しますと エラー タイプ ADODB.Recordset (0x800A0CB3) 現在の Recordset は更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。 のメッセージがでます。 何が原因でしょうか?お教えください。

  • MSアクセスの、サーバーでの設定について

    よろしくお願いします。 マイクロソフトアクセスのデータベースを対応したサーバーにアップロードしたところ、ローカルでは動いていたのですが、サーバー上では、動かなくなりました。その時のJavascriptファイルを書きます。 var database; onload = init; onunload = dbClose; function init() { document.getElementById("txtPrefCd").onblur = function (){blur(this);} document.getElementById("txtPrefCd").onfocus = function (){focus(this);} document.getElementById("txtPrefName").onblur = function (){blur(this);} document.getElementById("txtPrefName").onfocus = function (){focus(this);} dbConnect(); dataDisp(); } //データベースに接続 function dbConnect() { database = new ActiveXObject("ADODB.Connection"); database.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/hogehoge/db/SampleDB010.mdb"); alert("データベースに接続しました。"); } //データベースを切断 function dbClose() { database.Close(); database = null; alert("データベースを切断しました。"); } function focus(obj){ obj.style.backgroundColor = "#ffff00"; } function blur(obj){ obj.style.backgroundColor = "#ffffff"; } //データ表示 function dataDisp() { var mySql = "select * from T01Prefecture order by PREF_CD"; var recordSet = database.Execute(mySql); var tempHtml=""; document.getElementById("disp").innerHTML = ""; while (!recordSet.EOF){ tempHtml = tempHtml + recordSet(0) + ":" + recordSet(1) + "<br />"; recordSet.MoveNext(); } document.getElementById("disp").innerHTML = tempHtml; recordSet.Close(); recordSet = null; /**/ } 以上です。 どうも、データベースに接続のところがうまくいきません。 Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") strConnection = "DRIVER=Microsoft Access Driver(*.mdb);DBQ=" & Server.MapPath("/USERNAME/db/yourdatabase.mdb") Conn.Open(strConnection) としても、 Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Server.MapPath ("/YourUSERNAME/db/yourdatabase.mdb") & ";" Conn.Open としても、ダメでした。 どうすればよいのか分からないので、どこをどうすればよいのか、どなたかご教授願います。 よろしくお願いします。

  • 更新処理の進行状況

    VB6.0 SQL SERVER WINXPです。 下のSQLの更新処理の進行状況を表示したいのです。 Form1にCommand1とPicture1,Picture2を貼り付けたのですがこの後が分かりません。教えてください。 sSQL = " UPDATE m_zaiko SET " sSQL = sSQL & " 実在庫数=" & .CvtSQL(dblZaikoSuu, CVT_DBL) sSQL = sSQL & " WHERE " sSQL = sSQL & " 品番=" & .CvtSQL(strHinban, CVT_STR) gSvrADOActiveconnection.Execute sSQL, Affected, adExecuteNoRecords + adCmdText

  • Global.asaxで Server.CreateObject("ADODB.Connection")が出来ない

    ASP→ASP.netへ移行作業をしています。 Global.asaで、 set Application("DB") = Server.CreateObject("ADODB.Connection") を、 Global.asaxで、 Application("DB") = Server.CreateObject("ADODB.Connection") としたのですが、エラーで、 「コンポーネント 'ADODB.Connection' を作成できません。アパートメント スレッド コンポーネントは、<%@ Page aspcompat=true %> ページ ディレクティブを含むページでのみ作成できます。 」 となってしまします。 <%@ Page aspcompat=true %>を記述すればよいのかと思い、Global.asax中に記述しましたが、エラーになってしまいました。 'ADODB.Connection'を作成するには、どうすればよいでしょうか?

  • VBSの中で書くSQL文の記述方法

    よろしくお願いします。 select * from db1 into id,password,date,name where db1_id = **** and db1_password = **** and db1_date = 99999999; (db1_id,db1_password,db1_dateがプライマリキー) db1という表からプライマリキーに該当したデータを取り出し、 変数に格納したいと思っています。 このSQL文をASPのVBSの中で実現する方法を教えてください。 <% Dim Conn,SQL,RS Dim id Dim password Dim date Dim name db1=server.mappath("db1.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from db1" INTO = "into id,password,date,name" WHERE = "where db1_id = **** and db1_password = **** _ and db1_date = 99999999" SQL = SQL & INTO & WHERE & ";" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3 %> これでうまくいくかな~と思ったのですが・・・。

  • 物理的に離れたDBに同時に値を記録するには?

    ASPを使用して、物理的に離れているDBサーバーに、 フォームで入力された値、あるいはSession変数などに格納された値を、同時に記録したいのですが、 どうすれば良いのでしょうか? LAN内部に存在する二つのDBサーバーの場合は Server.CreateObject("ADODB.Connection") を使用してそれぞれのDBサーバーのコネクションを 作成すれば大丈夫なのですが、同じLAN内部に 存在しない二つのDB(東京・大阪など)に全く同じ データーを記録したいのですが。。。 一つ目のDBサーバーの存在するASPファイルの処理の中で、 もう一つのDBサーバーにデーターを記録する為には、どのようなコマンドを使用すれば、二つ目の DBサーバー内に用意してあるデータ記録用ASPファイル を実行して、そのデーターを二つ目のDBサーバーに 記録できるのでしょうか?

専門家に質問してみよう