0

私の Microsoft Access 2013 DB には 3 つのメイン テーブルが含まれています。製品が 1 つのスタンドアロン製品ではなくマトリックス (色などの複数のバリエーション) である場合は、プライマリの Suppliers テーブル、Products テーブル、および製品のスレーブ テーブルです。

このチュートリアルを使用して、Access 2013 でかなり優れたインターフェイスを既に作成しました: https://www.youtube.com/watch?v=4ei0PFrDUa0サプライヤーから入力されたドロップダウンを作成して、そのサプライヤーからのものとして表示される製品を制限します。 . また、埋め込まれた製品データシート ( https://www.youtube.com/watch?v=GopSdt4QNck ) 内にリンクを作成して、その製品を編集するためのフォーム (ボタンの代わりにリンク) を起動することもできました。データシートにはボタンを含めることができないため)。

今の私の困難は、新しい製品を追加するための空白のフォームを起動するだけでなく、ドロップからサプライヤの ID を製品の外部キーに事前入力するボタンを、埋め込み製品フォームの下に配置したいことです。 -ダウンメニュー。

覚えておいてほしいのは、現在 3 つのフォームがあり、4 番目のフォームを追加したいということです。1 つのフォームは、ドロップダウンを含む全体的な「サプライヤー」フォームです。そのドロップダウンは、ドロップダウンから選択されたそのサプライヤー向けの製品のみを表示するように、その中に埋め込まれたフォーム (「製品表示」) を変更します。埋め込みフォームには、製品に関する 2 つの最も重要な情報 (製品を識別するために社内で使用するコードとその名前) とリンクのみを表示する行があります。このリンクはその製品に関連付けられており、「製品編集」フォームを起動します。このフォームは、編集のためにその特定の製品をフォームに事前入力します (そして、そのテーブルのすべての詳細が含まれます)。

つまり、これらは 3 つの形式です。ここで、「Product Edit」フォームと同様の「Product Create」フォームを起動する最初のフォーム (ドロップダウンのあるフォーム) にボタンを追加したいと思いますが、必須フィールドのみと外部キー (ボタンがクリックされる前に、ドロップダウンで選択された最後のサプライヤーに事前入力されたサプライヤー ID)。これは、ドロップダウンが使用されるたびに、ボタンが動的に変更される必要があることを意味します。

問題は、Access 2013 内でこれを行う方法がまったくわからないことです。ウィザードで標準ボタンを使用すると、新しい「製品作成」フォームを作成できますが、外部キーを事前入力する方法がありません。ウィザード自体のみを使用します。さらに、ドロップダウンが使用されるたびにボタンを自動変更する方法がわかりません。

4

1 に答える 1

1

これを明確に説明できるかどうか見てみましょう。

テーブルが添付された 2 つのフォームがあるとします。

  • 親フォーム
  • 子フォーム

添付された各テーブルは次のように定義されます。

親:

ParentID (AutoNumber)
ParentName Text

子:

ChildID (AutoNumber)
ParentID Long Integer
ParentName Text

各フォームには、そのすべてのフィールドが表示されます。親フォームには、子を追加するためのボタンがあります。

親フォームの VBA コードは次のとおりです。

Private Sub AddButton_Click()
  DoCmd.OpenForm FormName:="Children", view:=acNormal, OpenArgs:=Me.ParentID
End Sub

子フォームの VBA コードは次のとおりです。

Private Sub Form_Dirty(Cancel As Integer)
  Me.ParentID = Me.OpenArgs
End Sub

では、これはどのように機能するのでしょうか。OpenArgs パラメータを介して ParentID を Child フォームに渡します。( http://msdn.microsoft.com/en-us/library/office/ff836583.aspx )

レコードが変更される前に、Dirtyイベントがトリガーされます (ユーザーが新しいレコードに最初の文字を入力したとき)。ParentID を設定する Dirty イベントを定義しました。

理論的には、複数の外部キーまたは値を入力できます。それらを区切り文字列にパックしてから、子の onDirty イベントでアンパックする必要があります。

それが役立つことを願っています。

于 2013-10-17T21:51:09.687 に答える