ボロボロです。知恵が足りずとても困っています。どなたか教えてください。
テーブル「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
これで実行すると、
「コンパイルエラー メソッドまたはデータメンバが
見つかりません」
というエラーメッセージが出ます。
ちょこちょこいろんなところを修正してみても、
このメッセージだけでなく他にもいろんな
エラーメッセージが出ます。
冒頭に書いたような機能を可能にするには、
どのように記述すればよいのでしょうか??
ほんとにほんとに困っています。どなたか助けてください。
No.2ベストアンサー
- 回答日時:
「ぼろぼろ」て言われてもね
当方では問題なくSQL文を返して来ていますが...
テーブルのデータ型はどうなっていますか?
どのような作業をされているか不明なので補足願います。
呼び元の記述もお願いします。
DAOを使っているのでMS DAO 3.6・・・は参照設定でチェックはつけて下さいね。コンパイルが通ってるので問題ないとは思いますが...
No.1
- 回答日時:
Accessのバージョンは記載した方が良いですよ。
大抵レコードセットをパブリックで指定しているのが悪いのでしょう。
通常は実行ではなく「コンパイル」をしてエラー個所を修正した方が良いですね。
下記の内容でコンパイルは通りました。
Public Function FindSQL(No As String)
Dim db As Database
Dim rs As Recordset
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
この回答への補足
ボロボロです。
ご回答ありがとうございました。説明不足で申し訳ありません。
バージョンはAccess2000です。
もともとコンパイルは通っていたのですが、実行すると
エラーがでるような状況でした。
yanmaaさんので早速試してみたところ、コンパイルは通るのですが
なぜかFindSQLが実行されません。
マクロのプロシージャ名の記述が間違っているのでしょうか?
それとも他に原因があるのか、ほんとに何が悪いのか、
全くわかりません・・・
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
希望の位置へフィールドを追加...
-
型 varchar から型 numeric へ...
-
コンピュータ用語、データベー...
-
データベースソフトのTCARDにつ...
-
アクセスの日付/時刻型で標準...
-
listener.logが肥大化
-
リスト形式の表とデータベース...
-
CDの売上枚数を知りたいのですが
-
accessの勉強ができるサイトは?
-
ODBCを使わないでExcelへ連携
-
キャッシュとバッファの違いは?
-
JavaとOracle Javaって何が違う...
-
データベースソフトの「TCARD f...
-
ACCESS と SQLSERVER の違いを...
-
構文エラー:演算子がありませ...
-
ADODB.Recordset エラー '800a0...
-
表計算とデータベースの違い
-
NOTESでデータベースを開いたと...
-
SQLて何ですか!
-
データベースの最適化をマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
希望の位置へフィールドを追加...
-
FindFirst複数条件
-
エクセルからアクセスにADO...
-
accessのvbaでの実行時エラーに...
-
データベースの変換
-
多値従属
-
パススルークエリの使い方について
-
列名が無効です
-
[ACCESS/VBA]動的にSQL文を...
-
型 varchar から型 numeric へ...
-
キャッシュとバッファの違いは?
-
データベースの最適化をマクロ...
-
AndroidからのAccessデータベー...
-
データベースの2GBって・・・?
-
VB.netのADOってなんですか?
-
構文エラー:演算子がありませ...
-
ACCESS2019でのエラーメッセージ
-
データベースとウェブ(WWW)の共...
-
Accessのレポートで「縦書き」...
-
Notes って 何が良くて使うの...
おすすめ情報