FLAT Access データベース内の別のレコードへのリンク

FLAT Access データベース内の別のレコードへのリンク

約 40 個のフィールドを持つシンプルなフラット データベースがあります。各レコードには一意の ID があります。

つながりが弱いレコードのペアがいくつかあるため、接続されたレコードに直接ジャンプできるように、各レコードにリンク/ブックマークを配置したいと思います。

これですかレコードからレコードへ単純なフラットデータベース構造内でリンクは可能ですか?

答え1

これにはいくつかの側面があり、多くの解決策が考えられます。

あなたが抱えている主な質問/目標は次のようです:

  1. 同じテーブル内の 2 つのレコード間のリンクを可能にするには、スキーマ (テーブル) はどのようになる必要がありますか?
  2. フォーム (単一ビュー) 上の 1 つのレコードから関連レコードにジャンプするにはどうすればよいですか?

レコードをリンクする方法はいくつかあります。最も簡単な方法は、おそらく同じテーブルの ID を含むテーブル上のフィールドです。欠点は、データが不整合になる可能性があることです。レコード 1 がレコード 2 にリンクしている場合、レコード 2 はレコード 1 にリンクする必要がありますか? おそらくそうでしょう。おそらく、それはあなたにとって問題ではないでしょう。

注: レコードのペア (つまり、2 つ以上のグループ) をリンクする必要がある場合、単純な自己参照フィールドは機能しません (それらを連鎖させない限り、ですが - 残念)。この場合、各グループの各要素のレコードを含む別のテーブルが必要です。レコードのペアと具体的に述べられているので、これは無視します。

したがって、 のような名前のフィールドをテーブルに追加しますRelatedItemID。これは、テーブルの ID と同じデータ型の数値である必要があります。

ControlSource次に、リンクを作成する方法が必要です。フォームに、このテーブルのすべてのレコードをリストし、フィールドにセットするコンボ ボックスを配置することをお勧めしますRelatedItemID

最後に、関連レコードにジャンプするには、ボタンの背後にある VBA コードを使用するだけです。

Private Sub JumpToRelated_Click()
    Me.RecordsetClone.FindFirst "ID = " & RelatedItemID
    If Not Me.RecordsetClone.NoMatch Then
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
End Sub

これにより、フォームが関連レコードに移動します。

一貫性を確保するには、つまり双方向の関係を強制するには、コンボ ボックスの AfterUpdate イベントに、現在のレコードへの「その他の」レコードのリンクを設定し、古いリンク (ある場合) をクリアするコードを追加する必要があります。これは必須ではありません。そうでない場合は、ユーザーが双方向の関係を手動で維持する必要があることを意味します。

関連情報