So-net無料ブログ作成

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

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

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

【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 コメント