質問

私は少し問題に固執しています。私はMS Access 2003を使用しています(サーバーでも2010年)。

ユーザーのテーブル、カテゴリのテーブル、user_to_category用のテーブルがあります。

すべてのカテゴリ(ティックボックスを使用)を表示するフォームを作成するにはどうすればよいですか。各カテゴリをクリックすると、CategoryIDとUserID(セッションから)をユーザー_TO_Categoryテーブルに追加します。

個々のチェックボックスを作成し、OnClickイベントを使用しましたが、人々がさらに追加するため、カテゴリのリストを動的にロードする必要があり、手動で追加したくありません。

何か案は?カテゴリを備えたリストボックスを使用してから、ユーザーが複数のエントリを選択できるようにしました。これはテーブルに追加されます。

情報をありがとう!

役に立ちましたか?

解決

このクエリをレコードソースとして連続フォームを作成し、フォームに名前を付けます frmusers.

SELECT
    u.userID,
    u.user_name
FROM Users AS u
ORDER BY u.user_name;

2番目のフォームを作成し、 fsubusercategories, 、このレコードソースで。

SELECT
    u2c.userID,
    u2c.categoryID,
    cat.category_name
FROM
    user_to_category AS u2c
    INNER JOIN Categories AS cat
    ON u2c.categoryID = cat.categoryID
ORDER BY cat.category_name;

category_nameのバインドされたテキストボックスとコンボボックスを追加します。 cbocategoryid, 、categoryidにバインドされています。このクエリをCombo's Row Sourceプロパティとして使用します。

SELECT
    cat.categoryID,
    cat.category_name
FROM
    Categories AS cat
    LEFT JOIN (
        SELECT categoryID
        FROM user_to_category
        WHERE userID=Forms!frmUsers!txtUserID
        ) AS sub
    ON cat.categoryID = sub.categoryID
WHERE (((sub.categoryID) Is Null))
ORDER BY cat.category_name;

Frmusersのフッターセクションを展開し、FsubuserCategoriesをフッター内のサブフォームコントロールに追加します。 UserIDをサブフォームコントロールのリンクマスター/チャイルドプロパティとして使用します。

その配置により、サブフォームは、現在のユーザーに関連付けられた各カテゴリ割り当ての行をメインフォーム(FRMUSER)を表示します。

現在のイベントでfrmusersを使用して、サブフォームコンボをリクルートするために、現在のユーザーに利用可能な(割り当てられていない)カテゴリのみを含むように更新されます。

form_frmusers:

Private Sub Form_Current()
    ' Note: fsubUserCategories is the name of the subform control '
    ' my subform control uses the same name as the form it contains '
    ' but beware --- the names don't have to match --- double-check! '
    Me.fsubUserCategories.Form.cboCategoryID.Requery
End Sub

fsubusercategoriesでは、deleteの確認後、挿入後、および更新イベントからのrequery cbocategoryid ---再度再び、現在のユーザーが利用できる割り当てされていないカテゴリのみを含むように更新されます。

form_fsubusercategories:

Private Sub Form_AfterDelConfirm(Status As Integer)
    Me.cboCategoryID.Requery
End Sub

Private Sub Form_AfterInsert()
    Me.cboCategoryID.Requery
End Sub

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

このアプローチを使用すると、各ユーザーのカテゴリ割り当てを表示できます。サブフォームから行を追加または削除して、それらの割り当てを管理することもできます。

他のヒント

MS Accessを使用しているので、これを行う最も簡単な方法は 連続フォーム カテゴリテーブルをRecordSourceとして。

チェックボックスのオンクリックイベントをチェックインすることができます。どのカテゴリが現在のカテゴリ(=クリックされたものです)は、フォームにカテゴリIDを含むテキストボックスを配置し、テキストボックスの値をチェックするだけです(常にIDが含まれます。現在クリックされているレコードの)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top