2016-12-27 45 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写入您的主题字段。

当你去阅读这个信息时,你需要将它解析成一个数组并向后工作,根据数组中的值确定应该标记哪个复选框。