VBAを使用してAccessで独自の分割フォームを作成する方法

今すぐ共有:

Accessの分割フォームは非常に便利です。 残念ながら、ナビゲーションフォーム内に配置すると機能しません。 Accessの分割フォーム機能をシミュレートし、ナビゲーションフォーム内でも機能させるVBA関数を作成する方法を学びます。

分割フォームを使用すると、フォームビューとデータシートビューのXNUMXつのレコードビューを同時に表示できます。 これにより、すべてのレコードの概要を把握できると同時に、レコードをXNUMXつずつ表示および編集するオプションが提供されます。

残念ながら、分割フォームをナビゲーションフォーム内に配置すると、機能しなくなります。これは私を困惑させます。 これには回避策があります。 VBAを使用すると、Accessの分割フォームをシミュレートする独自の関数を作成できます。 以下の手順に従ってください。

ダウンロード

この機能の利用をできるだけ早く開始したい場合は、以下の方法があります。

今すぐVBAコードを含むサンプルデータベースをダウンロードする

それ以外の場合、DIYをしたい場合は、以下の内容を読むことができます。

VBAを使用してAccessで独自の分割フォームを作成する手順

1.分割フォームを開き、デフォルトビューを単一フォームに更新します。 分割フォームを開き、デフォルトのビューを単一フォームに更新します

  1. 分割フォームを開きます。
  2. デザインビューで、フォームを選択します。
  3. プロパティシート(ALT + Enter)> [フォーム]タブに移動します。
  4. デフォルトのビューを「単一フォーム」に変更します。
  5. フォームを閉じて保存します。

2.フォームのコピーを作成します。 これは、データシートビューとして機能します。

  1. ナビゲーションペインに移動します。
  2. フォームを右クリックして、[コピー]を選択します。
  3. ナビゲーションペインの空白の領域を右クリックして、[貼り付け]を選択します。
  4. フォーム名を変更します。 「_Datasheet」を追加します。

例:

  • フォーム:メンバー
  • フォームのコピー:Members_Datasheet

3.データセットフォームを開き、フォームビューのプロパティを更新します。

  1. データセットフォームを開きます。
  2. デザインビューで、フォームを選択します。
  3. [プロパティシート]> [フォーム]タブに移動します。
  4. 次のプロパティを更新します。
    • デフォルトビュー: データシート
    • データセットビューを許可する: はい
    • フォームビューを許可する: いいえ
  5. フォームを閉じて保存します。

4.メインフォームを再度開き、データセットフォームをサブフォームとして追加します。

  1. メインフォーム(コピーされたもの)をデザインビューで開きます。
  2. サブフォームを追加します。
    • デザインメニューに移動します。 サブフォーム/サブレポートを選択します。サブフォームを選択
    • フォームの詳細領域をクリックします。
    • サブフォームウィザードが表示されます。サブフォームウィザード

1. [既存のフォームを使用する]をクリックします。

2.データシートフォームを選択します。

3. [次へ]をクリックします。「自分で定義」を選択します

4. [自分で定義]を選択します。

5. [完了]をクリックします。

3.これで、データシートフォームがメインフォームのサブフォームになりました。 ご希望のサイズと位置に調整してください。

5.最後に、コードを追加します。

  1. VBAエディターを開きます(ALT + F11)。
  2. メインフォームを選択し、次のコードを貼り付けます。メインフォームを選択してコードを貼り付けます
'MAIN FORM
Option Explicit

Private Sub Form_AfterUpdate()
   Me.Members_Datasheet.Requery
End Sub

Private Sub Form_Current()
   If Me.NewRecord Then
     Me.Members_Datasheet.Form.Recordset.AddNew
   Else
     Me.Members_Datasheet.Requery
   End If
End Sub
  1. コードをコピーした後、単語のすべてのインスタンスを置き換えます メンバー_データシート データシートフォームの実際の名前を使用します。
  2. 完了したら、[プロジェクト]メニューからデータセットフォームを選択し、以下のコードをコピーします。
'SUBFORM/DATASHEET FORM
Option Explicit

Private Sub Form_AfterUpdate()
   Me.Parent.Form.Requery
End Sub

Private Sub Form_Current()

  Dim pk_field As String, pk_tbox As Control
  Dim primaryKey As String, strSearch As String
 
  Set pk_tbox = Me.Member_ID 'textbox containing primary key *
  pk_field = "Member_ID" 'primary key field name *

  primaryKey = Nz(pk_tbox.Value, 0) 'change value to 0 if null
  pk_field = "[" & pk_field & "]" 'enclose field name with brackets
 
  If primaryKey <> 0 Then 'if not null (or not a new record)
    strSearch = pk_field & "=" & primaryKey
    Me.Parent.Recordset.FindFirst strSearch
  Else
     Me.Parent.Form.Recordset.AddNew
  End If

End Sub
  1. 次の変数の値を更新します。
  • pk_tbox –主キーを含むテキストボックスを指します。
  • pk_field –レコードソースの主キーフィールドを参照します。

コメントセクションにはそれぞれアスタリスク(*)が付いているので、簡単に見つけることができます。

  1. 完了したら、変更を保存し(CTRL + S)、VBAエディターを閉じます。

これで、ナビゲーションフォーム内に独自の分割フォームを追加できます。 やってみて!

破損したアクセスデータベース(.accdb)を修正

Accessデータベースが破損する原因は数多く考えられます。残念ながら、そのほとんどを私たちが制御することはできません。しかし、もし破損してしまった場合でも、復旧する方法はありますのでご安心ください。 DataNumen Inc.は、実行するソフトウェアを作成しました accdb修復。 見てみな。

著者紹介:

Jayme Stackは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQLの回復 と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。