• ベストアンサー

実行時エラー-2147217904

rs.CursorLocation = adUseClient rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic の部分で、 実行時エラー-2147217904 「1つ以上の必要なパラメータの値が設定されていません」 となるのですが、どういうことでしょうか? やはりSql文に問題があるのでしょうか?

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

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

SQL文のフィールド名などに間違いがあり、パラメータと見なされているのでは。 Debug.Print strSQL を挿入して、イミディエイトウィンドウに出力されたSQL文を、クエリのSQLビューに貼り付けて、開くことができるか確認してみては。

nsivnflqqiw
質問者

お礼

ありがとうございました。

関連するQ&A

  • 実行時エラー 3265「要求された名前、または序数

    ADOで rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic を過ぎようとすると 実行時エラー 3265「要求された名前、または序数に対応する項目がコレクションに見つかりません」 になるのですが、 strSQLの文字列をクエリのSQLビューに張り付けると、問題なくクエリが表示されます。 だから、 存在しないフィールド名を指定した訳ではないのですが なぜこの部分でエラーになるのでしょうか? オブジェクトが閉じてないのかと思い、 rs.Close: Set rs = Nothing をイミディエイトでやってみたら オブジェクトが閉じている場合は、操作は許可されません。 になります。

  • VB6+SQL サーバー 2000 で 実行時エラー '3704' がでます:

    VB6 + SQL サーバー 2000 でDB接続を行っていますが リストのように SELECT 文の後にInsert 文を実行しようとし Re.Closeを実行すると ------------------------------------------------------------- 実行時エラー '3704': オブジェクトが閉じている場合は、操作は許可されません -------------------------------------------------------------  とエラーになり、連続するSQL文を実行する場合のopen ,Close は どのように書けばよろしいのでしょうか。  ネット上で見つけた資料によるとメソッド RE.CancelUpdate を使うと ありましたがこれもエラーとなります。 どなたか 教えていただけないでしょうか。 --- sample ---------------------------------------- Dim Cn As New ADODB.Connection Dim Re As New ADODB.Recordset Connect = "" Connect = "Provider = SQLOLEDB;" _ & "Data Source = サーバー;" _ & "User ID = sa;" _ & "Password = パスワード;" _ & "initial Catalog = database;" ' Cn.Open Connect ' strSQL = "SELECT * from DBTBL WHERE CODE = '000001'" Re.Open strSQL, Cn, adOpenKeyset 'SQL文を実行 Re.Close ' strSQL = "Insert Into MAS1PF (CODE,NAME,TEL,FAX) Values('11111','名前','TEL,'FAX)" Re.Open strSQL, Cn, adOpenKeyset 'SQL文を実行 ' Re.Close Cn.Close

  • 【Excel】【VBA】実行時エラー メモリ不足

    【Excel】【VBA】実行時エラー -'-2147467259「メモリ不足です」 win8.1 エクセル2010 メモリ8Gのスペックで VBAコードを実行しているのですが たまに 実行時エラー -'-2147467259「メモリ不足です」 となり、マクロが中断されてしまいます。 今回、実行時エラー -'-2147467259「メモリ不足です」と出たコードは rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic です。 前後のコードは省略していますが 普段は問題なく通ります。 strSQLも、中身をクエリのSQLビューに張り付けて、クエリで見てみたけど 問題なく表示されます。 なぜメモリ不足ですとなるのでしょうか? スペックが低いのですか?

  • 実行時エラー-2147217900(80040e1

    アクセスVBAです。 Set cn = CurrentProject.Connection rs.Open "T_test", cn, adOpenKeyset, adLockOptimistic としたときに、T_testと言うテーブル名は存在するのに、 「実行時エラー-2147217900(80040e14) SQLステートメントが正しくありません Delete、Insert、Procedure、SelectまたはUpdateを使用して下さい。」 と言うエラーが発生します。 どうしてテーブルが存在するのにこのエラーが発生するのでしょうか?

  • E_FAIL状態とはどういう状態でしょうか?

    アクセスADOなのですが Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount を実行しようとすると 実行時エラー -2147467259(80004005) 「データプロバイダまたはほかのサービスがE_FAIL状態を返しました」 と言うエラーが発生します。 https://support.microsoft.com/ja-jp/kb/168336 を読んでみたのですが、よく意味がわかりません。 それに、同じコードで今まで動いてたのですが T_テーブルにデータを追加したら、 上記のエラーが発生するようになりました。

  • MSFlexGridでデータの追加の方法は?

    VB6.0 WINXP DB:Oracle10g  よろしくお願いします。 SELECT文でデータベースからデータを取ってきてMSFlexGridにデータを送ったのですが、そのデータに更に追加したいと思います。 ' ADOのオブジェクト変数を宣言する Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim STRSQL As String 'Oracleとの接続 cn.Open "Provider=MSDAORA;" & _ "Data Source=NT;", "scott", "tiger" ' SQLステートメントを指定してレコードセットを作成する re.Open STRSQL = "select * from TOKUI WHERE A01 = 100" rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic 'グリッドに送る Set MSFlexGrid1.DataSource = rs 'ここからのSELECT文を追加したいと思います。 STRSQL = "SELECT TOKUI FROM WHERE A01 = 200" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic よろしくお願いします。

  • WHERE レコードが抽出されない

    ADOでSQL文を作ってるのですが WHERE句がうまくできません。 rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "URL like '#*'" なら、うまくいくのですが、 Filterを使うのをやめて、WHEREに書きかえると、エラーにはならないのですが 取得レコードが0件になります。 rs.Open "T_テーブル WHERE [URL] like '#*';", cn, adOpenKeyset, adLockOptimistic も rs.Open "T_テーブル WHERE URL like '#*';", cn, adOpenKeyset, adLockOptimistic も、0件が返ります。 何がおかしいのでしょうか? URLフィールドで、#で始まるレコードを抽出したいです。

  • アクセス ADO

    Tテーブルと言うファイルは存在するのに、 Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient rs.Open "Tテーブル", cn, adOpenStatic, adLockPessimistic rs.Sort = "順番 ASC" を実行すると 「実行時エラー-2147217900(80040e14) SQLステートメントが正しくありません Delete、Insert、Procedure、SelectまたはUpdateを使用して下さい。」 が発生します。 rs.CursorLocation = adUseClient は問題なく通過する為、 Tテーブルと言うオブジェクトが存在しない為のエラーなのかなと思いましたが Tテーブルは存在します。 http://www.accessclub.jp/bbs2/0128/beginter38279.html を見たのですが 私の場合はクエリではなくテーブルなので パラメーターは関係ないと思っています。

  • ACCESS VBAについて

    初歩的な質問かと思いますが、よろしくお願いします。 strSQL = "SELECT shain_cd,shime_ym FROM 社員マスター" strSQL = strSQL & " WHERE shain_cd = '" & work_shain_cd & "'" strSQL = strSQL & " AND shime_ym = '" & Me.shime_ym & "'" Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic 上記を実行したところ、最終行にて エラーメッセージ: 「1つ以上の必要なパラメータの値が設定されていません。」 となります。 何が問題でしょうか? ※質問文に不足があれば、補足欄にて追記させていただきます。

  • アクセスのADO

    アクセスのADOで ウォッチ式にrsを登録してみていると rs.CursorLocation = adUseClient rs.Open "テーブル1", cn, adOpenStatic, adLockOptimistic を通過後は、 RecordCountには、20と数字が入るのですが、 rs.CursorLocation = adUseClient rs.Open "テーブル2", cn, adOpenStatic, adLockOptimistic にすると RecordCount : <データ プロバイダーまたはほかのサービスが E_FAIL 状態を返しました。> となってしまいます。 テーブルの中身が原因だと思うのですが どういう条件なら、 <データ プロバイダーまたはほかのサービスが E_FAIL 状態を返しました。> になるのでしょうか? rs.CursorLocation = adUseClient を使う理由は、 rs.Sort = "日付 DESC" とソートする為です。 参照設定はMicrosoft Activex Data Objects 2.8 Library にしています。 Access2010・32bitです。

専門家に質問してみよう