アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めての質問になります、宜しくお願いします。

Access2007でのPG開発を行っています。

Insertのパラメータクエリーを作成してました(以下Q_Inst)。

VBA側でパラメータをセットして実行するとエラーが出てしまいます。

実行時エラー3265
要求された名前、または・・・

dbCmd.CommandText = "Q_Inst"
dbCmd.CommandType = adCmdStoredProc
dbCmd.Parameters.Refresh
dbCmd.Parameters("[ID]") = 1 ' ←ここでエラー
dbCmd.Parameters("[Name]") = TanakaTarou
dbCmd.Parameters("[Birth]") = "1980/12/01"

ADODB.Command をあまり使わないので勝手がいまいち分かりません。
SELECT、INSERT、UPDATEは今までdbCon.Execute(strSQL)でstrSQLの中にべた書きしてました。

エラーの対処方法をご教授お願い致しますm( _ _ )m

A 回答 (6件)

以下もみてください。



ADOでのパラメータクエリの使用例

http://www.accessclub.jp/ado/createparameter.html
http://www.accessclub.jp/ado/refresh.html
    • good
    • 0
この回答へのお礼

ありがとうございます。

どのパターンも試してみたのですが
同じエラーで跳ね返されてしまうので

VBE側でINSERT分をコツコツ書くことにしました。

お礼日時:2011/09/24 16:29

No3の続きで、


>dbCmd.Parameters.Refresh
これをコメントアウトしてみてください。
    • good
    • 0

ローカルでの話になりますが、



> dbCmd.Parameters.Refresh

この前に、

dbCmd.ActiveConnection = CurrentProject.Connection

のような記述が必要かと思います。
ローカルの場合でも、上記をコメントにすると、
値を設定しようとした際に 3265 のエラーとなります。

また、dbCmd.Parameters で指定される文字列を一度確認されてみてはいかがでしょうか。

  Dim prm As ADODB.Parameter を宣言しておいて、Refresh 後に

  For Each prm In dbCmd.Parameters
    Debug.Print prm.Name
  Next



余談)

クエリの抽出条件に ・・・ WHERE ID = [DAT1] ・・・
のように、 [DAT1] をパラメータにしている時、
ADOでは、dbCmd.Parameters("[DAT1]") = 1 のように記述します。
dbCmd.Parameters("DAT1") = 1 ではまた 3265 のエラーになったと思います。

なお、DAO では、"[DAT1]" / "DAT1" どちらでも大丈夫みたいです。


※ adCmdStoredProc は使ったことが無いので、
VBE 側のヘルプで adCmdStoredProc を検索され、
「Command を使ってストアド プロシージャを呼び出す」部分を参照してみてください
    • good
    • 0

>dbCmd.CommandType = adCmdStoredProc



dbCmd.CommandType = adCmdText
にしてみてください。
あるいは、上記に
dbCmd.Prepared = True
をついかしてみてください。
    • good
    • 0

No1です。

No1は他のパラメータの設定
も同様です。
>dbCmd.Parameters("[Name]") = TanakaTarou
>dbCmd.Parameters("[Birth]") = "1980/12/01"

たとえば、フィールドの順番が[ID]、[Name]、「Birth]ならば
dbCmd.Parameters(1) = TanakaTarou
dbCmd.Parameters(2) = "1980/12/01"
あるいは、
dbCmd.Parameters("[Name]に設定したパラメータ名") = TanakaTarou
dbCmd.Parameters("[Birth]に設定したパラメータ名") = "1980/12/01"
    • good
    • 0

>dbCmd.Parameters("[ID]") = 1 ' ←ここでエラー



において、

dbCmd.Parameters("パラメータクエリで設定しているパラメータ名") = 1

で、フィールド名を書き入れるのではありません。
たとえば、IDに[AAA]と設定しているならば、

dbCmd.Parameters("AAA") = 1

あるいは、フィールドが0から始まるので、
IDが一番最初のフィールドならば、

dbCmd.Parameters(0) = 1

のようにして設定します。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。

dbCmd.Parameters(0) = 1
でも同じエラーがでます。

[ ]の中はフィールド名ではなく、クエリー内のパラメータで宣言した名前にしてあります。

dbCmdのParameters Countが0になっているのは関係ありますか・・・?

お礼日時:2011/09/24 14:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています