重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ADP形式(Access2003)で社内システムを作っています。
質問なのですが・・・
帳票形式のフォーム(商品マスタ)があります。フォームヘッダーにテキストボックス(名前:検索コード)あり、ここに商品コードを入力すると、該当するレコードへブックマークが移動します。
MDBのときは・・・
  Dim ds As Recordset
Set ds = RecordsetClone
ds.FindFirst "[商品コード]='" & Me![検索コード] & "'"
Bookmark = ds.Bookmark
以下省略
これで動作したのですが、ADPではエラーになります。
ADOになっているからでしょうか?

A 回答 (3件)

>オブジェクト変数またはWithブロックが設定されていません


テーブルOpenがない・Openの前にRecordsetしている・set = 等に不足がある等で出ます。
質問に書かれている部分のみ回答しましたが・・。
通常だと

Dim cn As New ADODB.Connection
Dim ds As New ADODB.Recordset
cn.Open "データベースへの接続を指定する;"
ds.Open "テーブル名", cn, adOpenKeyset, adLockOptimistic
ds.Filter = "商品コード=" & CStr(Me.検索コード)
(または)
ds.Find "[商品コード]='" & Me![検索コード] & "'"
(で行ける思うのですが)
          ・
検索コードが商品コードに見つからない場合の処理
         ・
Me.Bookmark = ds.Bookmark
         ・
このような感じになるのではないでしょうか。
    • good
    • 0
この回答へのお礼

何度もありがとうございました。
解決できました。

お礼日時:2006/01/13 13:11

>”メッソドまたはデータメンバが見つかりません。


失礼しました途中見落としていました。
FindFirstはDAOのメソッドでしたよね。ADOの構文に変更してあるのでFindFirstはADOでは使えません。

ds.Filter = "商品コード=" & CStr(Me.検索コード)
としてどうでしょうか。
参照設定でADOがチェックされているかも確認してみてください。

この回答への補足

お世話になります。
試してみたのですが・・・
実行時エラー '91'
”オブジェクト変数またはWithブロックが設定されていません。”
となります。

補足日時:2006/01/13 10:57
    • good
    • 0

どの部分のエラーか不明ですが・・。


Dim ds As ADODB.Recordset
ds.CursorType = adOpenKeyset
ds.LockType = adLockOptimistic
Set ds = Me.RecordsetClone
ds.FindFirst "[商品コード]='" & Me![検索コード] & "'"
Me.Bookmark = ds.Bookmark
      ・
      ・
ADOのレコードセットにしてみてどうでしょうか。

この回答への補足

何度もすみません。
試してみたのですが、
”メッソドまたはデータメンバが見つかりません。”
となり、[検索コード]のところで止まります。

補足日時:2006/01/13 09:19
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速試してみます。

お礼日時:2006/01/13 09:06

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