2016-12-27 35 views
0

我最近開始使用Access with VBA。通過複選框值更新多值列

問題陳述:有4個選修科目,數學,經濟學,計算機科學,家庭科學。每個學生的名爲「學科」的專欄存儲可選主題(每個學生的主題數量都不相同)。

我做了什麼:我在設計視圖中使用查找嚮導在表中創建了一個名爲'主題'的多值字段。在表單視圖中,我列出了4個複選框供選擇和提交。當我嘗試使用複選框值爲字段'Subject'編寫更新語句時,它會給我一個錯誤。

有沒有其他方法可以解決這個問題,還是我可以改正我用過的方法?

謝謝!

+1

我建議不要使用帶有多值列的表格,它們會導致更多的問題,而不是好處 –

+0

我同意,創建表格,您將存儲可選主題 - 一旦選擇主題,您就可以輕鬆插入新值,或從中刪除每個學生的桌子。 – Velid

回答

0

用2個字段創建一個新表;學生證和學科。將所有主題寫入該表格。當需要返回它們時,可以使用子表單(在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寫入您的主題字段。

當你去閱讀這個信息時,你需要將它解析成一個數組並向後工作,根據數組中的值確定應該標記哪個複選框。