• ベストアンサー

コマンドボタンでレコード移動

アクセス2000を使っております。初心者です。 フォームにコマンドボタンを作って、特定のIDのレコードに移動したいです。 IDが「A0001」と言うように、頭がA~Lから始まるものがある。 「A」~「L」というボタン・・・合計12コ置きたい。 「C」ボタンを押せば「C0001」へ、「K」ボタンを押せば「K0001」へ、へ移動する。 簡単なようで、なかなかできませんでした。 よろしくお願いいたします。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

#2です。 > Dim rs As DAO.Recordset この行で、DAOと言うものを使っているのですが、 それの参照設定がしてないのだと思います。 VBAの画面で、[ツール]→[参照設定] 「参照可能なライブラリ ファイル」の中から、 「Microsoft DAO 3.6 Object Library」をチェックして下さい。 バージョン(数字の部分)は多少異なるかもしれません。 恐らくこれで、解決すると思います。 念のため確認しますが、下記の2つはチェックが入っていると 思いますが、もしなければ、チェックして下さい。 「Visual Basic For Applications」 「Microsoft Access 9.0 Object Library」 これで解決しない場合は、エラーが出る行を補足して下さい。 黄色のマーカー以外に、エラー部分が反転表示されていると思います。 又は、VBAの画面で、[デバッグ]→[***のコンパイル]を実行して下さい。 エラーが出ている場所が分かるはずです。 -------------------------------------------------------- DAOとはData Access Objectの略で、 AccessのVBAでは頻繁に使用するものです。 この参照設定は常にチェックしている状態でOKです。 DAOの詳細は下記のサイトなど参考にして下さい。 http://www.accessclub.jp/dao/index.html

tea_tea
質問者

お礼

早速のお返事ありがとうございます。 「Microsoft DAO 3.6 Object Library」にチェックを入れたら完璧にできました!!(ちょっと感動してしまいました。)他のボタンの設定もできてやっと実用化できそうです。 本当にわかりやすい説明をしていただいて感謝しております。ありがとうございました。

その他の回答 (3)

noname#79209
noname#79209
回答No.3

直接の回答ではありませんが、 沢山のボタンを作るより、コンボボックスでA~Lを選択するようにして、 「GO」というコマンドボタン一つのほうがスッキリするのでは? 「2挙動になってイヤだ」というなら、コンボボックスの「更新後」イベントプロシージャにコードを書けばよいと思われます。

tea_tea
質問者

お礼

お礼が遅くなり大変申し訳ございません。 実は今使っている他のソフトがA~Lの12個のボタンが並列していて、操作的に使い慣れているという理由からボタン方式を選びました。(今回のアクセスとは内容に相互性はないのですが。) コンボボックスも今後の参考にさせていただきます。ありがとうございました。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

フォームのデザイン画面で、[表示]→[コード]で VBAの画面を開き、下記を記述 ------------------------------- Private Sub 移動(str As String)  Dim rs As DAO.Recordset  If str <> "" Then   Set rs = Me.RecordsetClone   rs.FindFirst "ID like '" & str & "'"   Me.Bookmark = rs.Bookmark   Set rs = Nothing  End If End Sub ------------------------------- Aへ移動するボタンのクリック時のイベントプロシージャ ------------------------------- Private Sub コマンドA_Click()  移動 "A*" End Sub ------------------------------- 他のボタンも同様です。 アルファベットの部分を変更してください。 内容は、RecordsetCloneを使ったレコードの移動です。 ヘルプの「RecordsetClone プロパティ」に解説がありますので、 興味があれば読んでみてください。

tea_tea
質問者

お礼

お礼が遅くなって大変申し訳ありません。 一番簡潔な方法とお見受けしました。しかし何度やってもエラーになってしまいます。 「コンパイルエラー ユーザ定義型は定義されていません。」と出てしまい、それをOK押すと、1行目が黄色のマーカーで選択されたようになってしまいます。 できれば回答者様のやり方でできたらうれしいのですが、原因がおわかりでしたら教えてください。よろしくお願いいたします。

  • a3453a
  • ベストアンサー率28% (132/460)
回答No.1

移動マクロ命令は レコード件数を数値指定するという やりかたですからね 少し意味合いは違う方法ですが 1.A0000以上を抽出するクエリー   B0000以上を抽出するクエリー   C0000以上を抽出するクエリー   というようなクエリーを8個作る 2.コマンドボタン用のマクロとして   フォームを開く命令のところで   フイルターの行へそれぞれのクエリー名を入れる   というマクロを8個作る   (ひよっとしたらマクロ先頭行にて「フォームを閉じる」を    入れることが必要かも) 3.フォームのコマンドボタンの「クリック」の行へ   それぞれのマクロ名を指定 4.指定のレコードが先頭に表示される ------------------------------------------------- つどコマンドボタンを押さなおなければ 逆方向(上方向)へのレコードは見れませんが。。。。。

tea_tea
質問者

お礼

お礼が遅くなって大変申し訳ありませんでした。 イメージでは回答者様の方法が浮かんでいたのですが、初心者で操作がわかりませんでした。教えていただいて助かりました。 おかげさまで設定がバッチリできました。ありがとうございます。

関連するQ&A

専門家に質問してみよう