- ベストアンサー
コマンドボタンでレコード移動
アクセス2000を使っております。初心者です。 フォームにコマンドボタンを作って、特定のIDのレコードに移動したいです。 IDが「A0001」と言うように、頭がA~Lから始まるものがある。 「A」~「L」というボタン・・・合計12コ置きたい。 「C」ボタンを押せば「C0001」へ、「K」ボタンを押せば「K0001」へ、へ移動する。 簡単なようで、なかなかできませんでした。 よろしくお願いいたします。
- みんなの回答 (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
その他の回答 (3)
直接の回答ではありませんが、 沢山のボタンを作るより、コンボボックスでA~Lを選択するようにして、 「GO」というコマンドボタン一つのほうがスッキリするのでは? 「2挙動になってイヤだ」というなら、コンボボックスの「更新後」イベントプロシージャにコードを書けばよいと思われます。
お礼
お礼が遅くなり大変申し訳ございません。 実は今使っている他のソフトがA~Lの12個のボタンが並列していて、操作的に使い慣れているという理由からボタン方式を選びました。(今回のアクセスとは内容に相互性はないのですが。) コンボボックスも今後の参考にさせていただきます。ありがとうございました。
- venzou
- ベストアンサー率71% (311/435)
フォームのデザイン画面で、[表示]→[コード]で 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 プロパティ」に解説がありますので、 興味があれば読んでみてください。
お礼
お礼が遅くなって大変申し訳ありません。 一番簡潔な方法とお見受けしました。しかし何度やってもエラーになってしまいます。 「コンパイルエラー ユーザ定義型は定義されていません。」と出てしまい、それをOK押すと、1行目が黄色のマーカーで選択されたようになってしまいます。 できれば回答者様のやり方でできたらうれしいのですが、原因がおわかりでしたら教えてください。よろしくお願いいたします。
- a3453a
- ベストアンサー率28% (132/460)
移動マクロ命令は レコード件数を数値指定するという やりかたですからね 少し意味合いは違う方法ですが 1.A0000以上を抽出するクエリー B0000以上を抽出するクエリー C0000以上を抽出するクエリー というようなクエリーを8個作る 2.コマンドボタン用のマクロとして フォームを開く命令のところで フイルターの行へそれぞれのクエリー名を入れる というマクロを8個作る (ひよっとしたらマクロ先頭行にて「フォームを閉じる」を 入れることが必要かも) 3.フォームのコマンドボタンの「クリック」の行へ それぞれのマクロ名を指定 4.指定のレコードが先頭に表示される ------------------------------------------------- つどコマンドボタンを押さなおなければ 逆方向(上方向)へのレコードは見れませんが。。。。。
お礼
お礼が遅くなって大変申し訳ありませんでした。 イメージでは回答者様の方法が浮かんでいたのですが、初心者で操作がわかりませんでした。教えていただいて助かりました。 おかげさまで設定がバッチリできました。ありがとうございます。
お礼
早速のお返事ありがとうございます。 「Microsoft DAO 3.6 Object Library」にチェックを入れたら完璧にできました!!(ちょっと感動してしまいました。)他のボタンの設定もできてやっと実用化できそうです。 本当にわかりやすい説明をしていただいて感謝しております。ありがとうございました。