- ベストアンサー
ACCESSのBookmarkプロパティの使い方
Stressmanと言います。 環境は、Windows98SEでACCESS2002を使っています。 質問というのは、ACCESSのBookmarkプロパティの意味、使い方 を教えていただきたいのです。 ヘルプを読んだのですが、よく分かりません… ちなみに、ヘルプには 「フォームの基になるテーブル、クエリ、またはSQLステートメント に含まれる測定のレコードを個別に識別するためのブックマークを設定 します。値の取得および設定が可能です。バリアント型の値を使用します。」 と書いてあります。 具体的に、「こういう意味」「こういう使い方をする」というのを 教えて頂きたいのです。 #サブフォームのレコード移動について調べていたら、「Bookmark」が #よくでてきたので、「これを理解しないと先に進めない」と判断して #投稿させていただきました。 #これぐらい知っておけよ、とつっこまないでください…
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>2 、001 、4/5 、田中 >へ移動することも可能なのでしょうか? その通りです。 この場合は 次のようになります。 Dim Rs As DAO.Recordset ' フォームのレコードを Rs にセット Set Rs = Me.サブフォームB.form.RecordsetClone ' Rs で No が 2を検索 Rs.FindFirst "[No]=2" ' Rs で Noが2の場所を サブフォームB に反映 Me.サブフォームB.form.Bookmark = Rs.Bookmark
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Bookmarkの他の用途は、あるレコードにマークしておいて、レコードをいろいろ移動した後で、そのレコードに簡単に戻ってくるというものです。 ヘルプの説明としてはこちらの使い方になるのでしょう。 具体的な方法は、現時点のカレントレコードにマークしておきます。 Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim bmark As Variant 'ブックマーク、バリアント型 Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open テーブル名, cn, adOpenKeyset, adLockOptimistic 'ブックマークを取得 bmark = rs.Bookmark (Move系メソッドなどで別のレコードへ移動) '元のレコードへ戻る rs.Bookmark = bmark rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing
お礼
ありがとうございました。 Private Sub コマンド_Click() Dim Rs As DAO.Recordset Set Rs = Me![サブフォーム].[Form].RecordsetClone Rs.FindFirst "ID =" & Str(Me![コンボ]) Me![サブフォーム].[Form].Bookmark = Rs.Bookmark End Sub をコマンドボタンのクリック時のイベント処理で 実行したら、出来ましたぁぁ~♪ 説明べたでご迷惑をおかけしました。 また、行き詰まりましたら宜しくお願いします。
補足
maruru01さん、ありがとうございます。 maruru01さんのコードはまだ試していないのですが、 下記のryuu001さんのコードを、元に Private Sub コマンド_Click() Dim Rs As DAO.Recordset Set Rs = Me![サブフォーム].[Form].RecordsetClone Rs.FindFirst "ID = Me![サブフォーム]![コンボ]" Me![サブフォーム].[Form].Bookmark = Rs.Bookmark End Sub というコードを書きました。すると、 ------------------------------------------------------ Me![サブフォーム]![コンボ]を、有効なフィールド名、または 式として認識できません。 ------------------------------------------------------ とエラーがでてしまいました。 コンボで指定したレコードに移動したいと思ってやったのですが うまくいきませんでした…
- ryuu001
- ベストアンサー率61% (46/75)
「Bookmark」は、フォーム上で、あるレコードを検索し、 フォームの画面を そのレコードへ移すときに使います。 その場合、「Recordsetclone」と組み合わせて 使用します。
お礼
ryuu001さん、ありがとうございます。 フォーム上でレコードを検索し、 そのレコードに移動するときに使う、ってことは… テーブルA 顧客コード、顧客名、住所 テーブルB No、顧客コード、打合せ日、担当者 というテーブルがあって、それぞれをソースにした フォームがあるとします。 フォームA→テーブルAをソース フォームB→テーブルBをソース で、フォームBをフォームAのサブフォームとして、 「顧客コード」でリンクさせるとします。 そのとき、 テーブルA 顧客コード、顧客名、住所 001 、山本 、東京都 002 、鈴木 、大阪府 003 、太田 、京都府 テーブルB No、顧客コード、打合せ日、担当者 1 、001 、3/2 、田中 2 、001 、4/5 、田中 3 、002 、3/15 、小川 4 、001 、5/10 、近藤 5 、002 、4/11 、小川 6 、003 、6/14 、工藤 とすると、フォームAで顧客コード「001」を選択すると、 サブフォームB(単票形式、移動ボタン有り)は、 1 、001 、3/2 、田中 2 、001 、4/5 、田中 4 、001 、5/10 、近藤 となります。このとき何らかの処理で、いきなり 2 、001 、4/5 、田中 へ移動することも可能なのでしょうか? 説明べたですいません。 宜しくお願いします。
お礼
ryuuさん、ありがとうございます。 早速試してみます。 「できた」という報告は補足にて記載したいと思います。
補足
すいません。 できた、という報告ではなくエラーが出てきました。 --------------------------------- コンパイルエラー ユーザ定義型は、定義されていません --------------------------------- というエラーがでて、 Dim Rs As DAO.Recordset の部分が反転しています。 VBAをあまり理解していないので、 このエラーだけでは、何がどう悪いのか 分かりません。宜しくお願いします。