2016-12-27 7 views
0

最近VBAでAccessを使用し始めました。複数値の列をチェックボックスの値で更新する

問題文:4つのオプション科目が数学、経済学、コンピュータサイエンス、家庭科学を教えています。各受講者の「科目」という欄には、任意の科目が格納されます(科目の数は各受講者によって異なります)。

私が行ったこと:デザインビューでルックアップウィザードを使用して、「件名」という表の複数値フィールドを作成しました。フォームビューでは、これら4つのチェックボックスを選択して提出します。チェックボックスの値を使用してフィールド 'Subject'の更新ステートメントを作成しようとすると、エラーが発生します。

この問題を解決する他の方法はありますか、または私が使った方法を修正することはできますか?

ありがとうございます!

+1

多値列のテーブルを使用しないことをお勧めします。便益よりも多くの問題が発生します –

+0

私は同意します。オプションの科目を保存するテーブルを作成します - 科目が選択されるか、各生徒のためのテーブル。 – Velid

答えて

0

2つのフィールドで新しいテーブルを作成します。学生IDと科目。すべてのサブジェクトをそのテーブルに書き込みます。それらを返す必要がある場合は、サブフォーム(StudentIDでリンクされている)を使用するか、必要に応じてピボットテーブルを作成します。

複数値列は最適ではないため、多くの問題が発生します。 が絶対にでなければならない場合は、データを抽出するときに解析する必要があります。あなたが最初にそれを書くとき、あなたは次のようなステートメントを書く必要があります:

MyStr = "" 
If Me.Checkbox1 = True then 
    MyStr = MyStr & "SomeValue, " 
EndIf 
If Me.Checkbox2 = True then 
    MyStr = MyStr & "SomeValue2, " 
EndIf 
If Me.Checkbox3 = True then 
    MyStr = MyStr & "SomeValue3, " 
EndIf 
If Me.Checkbox4 = True then 
    MyStr = "SomeValue4, " 
EndIf 

If Len(MyStr) > 2 Then 
    MyStr = Left(MyStr, Len(MyStr) - 2) 
EndIF 

これが行うことは、継続的にあなたがチェックボックスに割り当てる値を追加して、最後の2つの文字を削除します(あるべき「」)ので、あなたは、完全な文字列を持っています。 MyStrをSubjectフィールドに入力します。

この情報を読むには、配列に解析して後方に向かって、配列内の値に基づいてどのチェックボックスをマークするかを決定する必要があります。

関連する問題