SSブログ

アクセス小僧:フォームを開いたとき、最後に見ていたレコードに飛ぶ [コンピューター]

アクセスのフォームを開いたとき、

最後に見ていたレコードに飛ぶマクロを作りました。

【1】レコード移動時、主キーを記憶
最後に見ていたレコードを特定するため、フォームでレコード移動時に主キーを別テーブルに保存します。

まず、主キーを保存する別テーブルを作ります。

Access_table1.jpg

テーブル名(例):T_PWMngID
フィールド1(例):T_PM_ID
フィールド2(例):PW_Mng_ID1

・T_PM_IDフィールドは、このテーブルの主キーです。T_PM_ID=1のレコードを作成しておきます。
・PW_Mng_ID1に、フォームで最後に表示していたレコードの主キーを保存します。

フォームのレコード移動(Form_Current)時のマクロに、次のコードを記述します。
フォームの閉じる(Form_Close)イベントでは、うまくいきませんでした。

Private Sub Form_Current()
  ' 【イベント】レコード移動時
  '【変数】
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  '【実行コード】
  ' PW_Mng_IDを退避
  ' MsgBox "PW_Mng_ID=" & [PW_Mng_ID]
  Set db = CurrentDb()
  ' テーブルを開く
  Set rs = db.OpenRecordset("T_PWMngID", dbOpenDynaset)
  rs.MoveFirst
  rs.FindFirst "T_PM_ID=1"
  If rs.EOF Then
    MsgBox "T_PM_ID=1が見つかりません。[Form_Close]"
  Else
    rs.Edit
    rs![PW_Mng_ID1] = [PW_Mng_ID]
    rs.Update
  End If
  rs.Close
  Set rs = Nothing ' 解放
  db.Close
  Set db = Nothing ' 解放
End Sub

・[PW_Mng_ID]が、フォームで開いているテーブルのレコードの主キーです。
これを先ほど作成したT_PWMngIDテーブルの、T_PM_ID=1のレコードの[PW_Mng_ID1]フィールドに保存します。

【2】フォームを開いたとき、最後に見ていたレコードに移動
フォームの読み込み(Form_Load)時のマクロに次のコードを記述します。

Private Sub Form_Load()
  '【イベント】フォーム読み込み時
  '【変数】
  Dim MyStr1 As String
  '【実行コード】
  ' 直前に参照していたレコードに移動
  MyStr1 = "PW_Mng_ID = " & DLookup("PW_Mng_ID1", "T_PWMngID", "T_PM_ID=1")
  With Me.Recordset
    .FindFirst MyStr1
  End With
End Sub

・DLookupで別テーブルに保存していた主キーを参照し、その主キーを持つレコードを検索します。
ヤバイぜ!(11)  コメント(1) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 11

コメント 1

cheese999

ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-10-20 20:09) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。