アプリ版:「スタンプのみでお礼する」機能のリリースについて

Stressmanと言います。
環境は、Windows98SEでACCESS2002を使っています。

質問というのは、ACCESSのBookmarkプロパティの意味、使い方
を教えていただきたいのです。

ヘルプを読んだのですが、よく分かりません…
ちなみに、ヘルプには
「フォームの基になるテーブル、クエリ、またはSQLステートメント
に含まれる測定のレコードを個別に識別するためのブックマークを設定
します。値の取得および設定が可能です。バリアント型の値を使用します。」

と書いてあります。

具体的に、「こういう意味」「こういう使い方をする」というのを
教えて頂きたいのです。

#サブフォームのレコード移動について調べていたら、「Bookmark」が
#よくでてきたので、「これを理解しないと先に進めない」と判断して
#投稿させていただきました。
#これぐらい知っておけよ、とつっこまないでください…

A 回答 (3件)

「Bookmark」は、フォーム上で、あるレコードを検索し、


フォームの画面を そのレコードへ移すときに使います。

その場合、「Recordsetclone」と組み合わせて 使用します。
    • good
    • 0
この回答へのお礼

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  、田中
へ移動することも可能なのでしょうか?

説明べたですいません。
宜しくお願いします。

お礼日時:2003/02/22 14:46

>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

この回答への補足

すいません。

できた、という報告ではなくエラーが出てきました。

---------------------------------
コンパイルエラー
ユーザ定義型は、定義されていません
---------------------------------

というエラーがでて、
Dim Rs As DAO.Recordset
の部分が反転しています。

VBAをあまり理解していないので、
このエラーだけでは、何がどう悪いのか
分かりません。宜しくお願いします。

補足日時:2003/02/24 11:29
    • good
    • 0
この回答へのお礼

ryuuさん、ありがとうございます。
早速試してみます。

「できた」という報告は補足にて記載したいと思います。

お礼日時:2003/02/24 08:29

こんにちは。

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

この回答への補足

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![サブフォーム]![コンボ]を、有効なフィールド名、または
式として認識できません。
------------------------------------------------------

とエラーがでてしまいました。
コンボで指定したレコードに移動したいと思ってやったのですが
うまくいきませんでした…

補足日時:2003/02/24 17:01
    • good
    • 0
この回答へのお礼

ありがとうございました。

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

をコマンドボタンのクリック時のイベント処理で
実行したら、出来ましたぁぁ~♪

説明べたでご迷惑をおかけしました。
また、行き詰まりましたら宜しくお願いします。

お礼日時:2003/02/24 17:41

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A