• ベストアンサー
  • 困ってます

SQL文が実行できません

単純なSQLの実行命令なのですが、 下記のエラーメッセージが出て実行できません。 解消方法をご存知の方がいらっしゃいましたら、 教えてください。よろしくお願いします。 エラーメッセージ: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。1 を指定してください。 /x_db/1.asp, line 12 (Set RS = db.Execute(SQL)のラインがエラーです) ソースです。 <% Set db = Server.CreateObject"ADODB.Connection") db.Open "x_db" SQL = "select * from x_db where w_xpc ='" & Request.Form("F01") &"'" Set RS = db.Execute(SQL) Response.Write(RS.Fields("氏名")) RS.close set RS = nothing db.close set db = nothing %> 環境:WIN200server IIS5.0 access97

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1625
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
noname#4564

> パラメータが少なすぎます。1 を指定してください。 ・・・(略)・・・ > SQL = "select * from x_db where w_xpc ='" & Request.Form("F01") &"'" (1) x_db というテーブルが存在しない。 (2) w_xpc という列が x_db テーブルに存在しない。 (3) w_xpc 列は文字列ではない。 (4) Request.Form("F01")に特殊な文字(シングルクォートなど)が含まれている。 のどれかだと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のアドバイスをありがとうございます。 (1)~(4)の指示をじっくり見てみると。。。 その通りでした! 出来ないと思ってパニックになっていたので、基本的な所を見落としていました。 ホントに、恥ずかしいです。(赤面) わからなくなったら「頭を冷やして、基本に戻れ」ですね。 ありがとうございました!

関連するQ&A

  • aspのファイルからAccessを参照させるとエラーが出たり出なかったり

    WinXP Proに IISを使って ASPのファイルから ACCESSのDBを表示させたいのですが、 ******************************** Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 ******************************** と言うエラーメッセージが出てしまいます。 昨日までは普通に表示していたのです。 ソース ******************************* <% Dim Rs Set Rs=Server.CreateObject("ADODB.Recordset") Rs.open"SELECT * FROM TABLES ", "DSN=yihua" Response.Write Rs("NAME") Rs.close set Rs=Nothing %> ******************************* です。 更にこの見えていたファイルをコピーしてリネームして別の名前でaspファイルとして保存しても 同じエラーメッセージがでてしまいます。 何が原因なのでしょうか? 見えたり見えなかったりするのが、理解できなく 苦しんでいます。 ASP勉強中でかなり初心者です。 よろしくお願いします。

  • ストアドプロシージャの実行で...

    Test_Pro、というストアドプロシージャを実行させたいんですが、 Microsoft OLE DB Provider for SQL Server エラー '80040e14' ストアド プロシージャ 'Test_Pro' が見つかりませんでした。 というエラーが出てしまいます。どうして??? 実行させる為に書いたソースは、 set cmd = Server.CreateObject("ADODB.command") Set cmd.ActiveConnection = conn cmd.CommandText = "Test_Pro" cmd.CommandType = 4 Set rs = cmd.Execute("@a", a) です。

  • mdbを直接開いてもasp側に影響を与えない方法について

    お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。 サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから 接続しております。 メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。 ======================================================== HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。 ======================================================== mdbファイルを直接開いても、ASP側でもエラー表示されないように するにはどうしたらよいでしょうか? ソースは以下のようにしております。 Set cnn=Server.CreateObject("ADODB.Connection") cnn.open "dummy" cnn.close cnn.open "testdb"  '// ODBCをtestdbにしています。 SQL = "SELECT * FROM M_USER ORDER BY USERID" Set rs1 = cnn.Execute(SQL) よろしくお願いいたします。

その他の回答 (1)

  • 回答No.2
  • taknt
  • ベストアンサー率19% (1556/7783)

SQL = "select * from x_db where w_xpc ='" & Request.Form("F01") &"'" この行の最後に セミコロンを付け加えてみたらどうでしょうか? SQL = "select * from x_db where w_xpc ='" & Request.Form("F01") &"';"

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のアドバイスをありがとうございます! #1の方のアドバイスで解決できました。 パニックになったら、頭を冷やさないと駄目ですね。 お騒がせしました。

関連するQ&A

  • LAN上の他サーバにあるDBを参照したい

    以前に同じ内容の質問があったのですが、私には理解でなかったので、教えてください。よろしくお願いします。 LAN上にある他DBサーバーのACCESSのテーブルを参照しようとるすと下記のエラーメッセージが出ます。システムDNSの設定はしてあります。フォルダもEVERYONEフルコントロールになっています。 以前の回答では、「「IUSR_xxxx」というアカウントからネットワークパスを参照できるようにしてあげて下さい。」とありましたが、これはどのように設定してやればいいのでしょうか? *ソース* Set DBObj = Server.CreateObject("ADODB.Connection") DBObj.mode=1 DBObj.Open "oadb2" SQL="SELECT OA_MEMBER.* FROM OA_MEMBER;” Set RS=DBObj.Execute(SQL) *エラーメッセージ* Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] パス '(不明)' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。 環境は下記の通りです。 WEBサーバー:Windows2000 Professional IIS 5.0(ASPのプログラムはこちら)システムDNSの設定済み 参照DBサーバー:WindowsNT4.0  クライアント:Windows98

  • 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の更新??

    ソースは下記です。 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 は更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。 のメッセージがでます。 何が原因でしょうか?お教えください。

  • 実行したSQLの結果を返す方法

    VBでSQLを発行、及び実行をし、 MDBを更新する処理を作成しています。 各SQLの実行(SELECT、INSERT、DELETE等)が 成功or失敗したかどうかを判定するには どのようにすれば良いのでしょうか? ソースのイメージとしては↓のような感じです。 Dim db As DAO.Database 'DB設定 Set db = OpenDatabase(DB名) 'SQL実行 db.Execute (DB内で作成したSQL) 【実行したSQLの正常終了の判定】 【実行メッセージ(成功or失敗)出力】

  • ACCESSでSQL文を実行した結果を参照したいのですが。

    どなたか助けてください。 環境はWin98 ACCESS2000です。 画面で入力されたコードをもとに、そのコードがテーブルに存在した場合とない場合で次画面のフォームで処理を分けたいと考えています。そのため、SQLを実行した結果の別のコードを参照したいのですが、参照の仕方がわかりません。 コードの検索画面のクリック時のイベントプロシジャ内で Private Sub Cmd_Find_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim mySql As String Set db = CurrentDb() mySql = "SELECT T_Name FROM T_テーブル " _ & "WHERE T_Code = " & Frm_Code Set rs = db.OpenRecordset(mySql) If rs.EOF Then     ・・・ない場合の処理 Else Set Me.Recordset = rs →   ココでSELECT文で実行したT_Nameを参照したい End If Set rs = Nothing Set db = Nothing End Sub T_テーブル内にT_NameとT_Codeがあり フォームのテキストボックスの値のFrm_Codeを条件に検索した結果のT_Nameを参照したいのです。 フォームは非連結で処理を行いたいのですが、どのように参照すればいいのでしょうか。本で調べたところ、普通にT_Nameを使っているのですがうまくいきません。 どなたか下手な説明で申し訳ありませんがお願いします。

  • ASPで,mdbファイルへのinsert文のエラー

    ASPで,guestbook.mdbファイルへ接続,はOK, そしてinsert文で新規レコードを追加しようとすると エラーが出てしまいます。 select文は使えるのですが。 エラーの内容は, エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /asp_server/toda/guestbook.asp, line 24 です。 dbへの接続方法は, '***** データベース(guestbook.mdb)に接続 ***** Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _ Server.Mappath("guestbook.mdb") です。 問題は, '***** 名前とメッセージが空白でないときはデータ追加SQLを実行 ***** StrSQL = "insert into T_Message (name, word, entrydate) " & _ "values ('" & name & "','" & word & "',#" & entrydate & "#)" ObjConn.Execute(StrSQL) ここの,ObjConn.Execute(StrSQL)でエラーが起こります。 なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか? 「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

  • [ACCESS/VBA]動的にSQL文をテーブルから抽出する方法?

    ボロボロです。知恵が足りずとても困っています。どなたか教えてください。 テーブル「T_SQL」の各レコードに、 クエリのSQL文(フィールド名=「strSQL」)と クエリ名(フィールド名=「QName」)と 通しNo.(フィールド名=「No」) をデータとして入力し、アクション等に応じて、「T_SQL」から 抽出したSQL文を、 マクロの「プロシージャの実行」の プロシージャ名 SetSQL("クエリー1",FindSQL(No)) により クエリ「クエリー1」に代入したいのです。 現在以下の通りに作りました。 'データベース定義 Public db As Database 'レコードセット定義 Public rs As Recordset Public Function SetSQL(QName As String, strSQL As String) CurrentDb.QueryDefs("QName").SQL = strSQL End Function Public Function FindSQL(No As String) Set db = CurrentDb() Set rs = db.OpenRecordset("T_SQL", dbopendynaset) strcriteria = "[No]='" & No & "'" rs.FindFirst strcriteria FindSQL = rs!strSQL rs.Close db.Close End Function これで実行すると、 「コンパイルエラー メソッドまたはデータメンバが 見つかりません」 というエラーメッセージが出ます。 ちょこちょこいろんなところを修正してみても、 このメッセージだけでなく他にもいろんな エラーメッセージが出ます。 冒頭に書いたような機能を可能にするには、 どのように記述すればよいのでしょうか?? ほんとにほんとに困っています。どなたか助けてください。

  • SQLで 全項目を追加したい

    ACCESS97を使用しています。 SQLを使用して、データの全件削除、全件追加を実施したいのです。 追加元(テーブルA)の項目と、追加先(テーブルB)の項目は同じです。 削除の方は下記の内容で上手くいきましたが 追加は実施できませんでした。 追加の時、*アスタリスクを使用する方法などないのでしょうか? Private Sub コマンド0_Click() Dim SQLstr As String Dim DB As Database Dim RS As Recordset Set DB = CurrentDb() SQLstr = "DELETE FROM テーブルB" DB.Execute SQLstr Set DB = Nothing SQLstr = "" SQLstr = "INSERT INTO テーブルB(*) VALUE (テーブルA*)" Set DB = CurrentDb() DB.Execute SQLstr Set DB = Nothing End Sub

  • うまく表示されません。

    MS SQL SERVERを使い始めた初心者です。 環境は XP、IIS6.0、SQL2000SERVER です。 エラーメッセージ> Microsoft OLE DB Provider for ODBC Drivers (0x80040E37) [Microsoft][ODBC SQL Server Driver][SQL Server]オブジェクト名 'tblMember'が間違っています。 /test/Connection_3.asp, line 12 ソース> 1:<html> 2:<head> 3:<title>Connect</title> 4:</head> 5:<body> 6: 7:<% 8:Set ConnDB = Server.CreateObject("ADODB.Connection") 9:ConnDB.Open = "DSN=dbMember;UID=sa;PWD=sa;" 10: 11:strSQL = "INSERT INTO tblMember(id,pwd,name,phone) VALUES('melon','4444','&#51068;&#51648;&#47588;','019-999-9999')" 12:Set objRs = ConnDB.Execute(strSQL) strSQL = "SELECT * FROM tblMember" Set objRs = ConnDB.Execute(strSQL) Do While objRs.EOF = False Response.Write objRs("name") & " " Response.Write objRs("phone") & "<BR>" objRs.MoveNext Loop objRs.Close ConnDB.Close Set objRs = Nothing Set ConnDB = Nothing %> </body> </html> これでソースでやるとうまく表示されません。 どうしてなのでしょか?ご教授のほどよろしくお願いいたします。

  • オブジェクト名 '<table>' が無効です

    システムの改修をしています。 新規テーブル、SERVER_CHECK を作成しました。 このテーブルにアクセスすると、下記エラーが発生します。 ===== Microsoft OLE DB Provider for ODBC Drivers エラー '80040e37' [Microsoft][ODBC SQL Server Driver][SQL Server]オブジェクト名 'SERVER_CHECK' が無効です。 ===== 既存のテーブルにはちゃんとアクセスできます。 'SERVER_CHECK' の名前も管理ツールからコピー&ペーストしたので、間違っていません。 SQL Server Management Studio からは結果を出力できます。 プログラムからアクセスするとエラーになります。 ===== Set conServer = ConnectDB() SQL = "SELECT * FROM SERVER_CHECK" 'SQL = "SELECT * FROM PLAN_DB" こちらは正しく出力を得られます。 Set dbServer = conServer.Execute(SQL) ===== どこかの設定が間違っていると思うのですが、見当がつきません。 どなたかご教示よろしくお願いします。