将多选组合框值传递给另一个表

时间:2014-07-21 15:06:38

标签: database vba ms-access access-vba

我正在开发一个培训记录数据库,该数据库需要特定培训的日期。我目前正在通过"培训日志"每次主要"员工"表格已更新(通过表格)。我目前能够传递人员ID和此代码完成的日期

DoCmd.RunSQL "INSERT INTO Training_Log (ID,QMS_Training,DateTrained)VALUES (" &    ID.OldValue & ",'" & QMS_Training.OldValue & "','" & DateGiven.OldValue & "');"

然而,当我添加Training字段(这是一个多选组合框)时,我得到一个类型不匹配错误。有谁知道通过这个方法?我已经尝试了一些其他方法来将此值添加到此语句中,例如取出之前的价值,但事实证明这是不可能的。你能给予的任何帮助都会非常感激!

更新:稍微重做,似乎在INSERT INTO查询中不能有多选字段。关于如何实现相同结果的任何其他想法都会很棒。

2 个答案:

答案 0 :(得分:0)

一种简单的方法是从所有选定的值中形成Comma separated string并插入字符串

For i = 0 To Me.MyComboBox.ListCount - 1
 If Me.MyComboBox.Selected(i) Then
   myString = myString & Me.MyComboBox.Column(boundColumnZeroBasedIndex, i) & ","
 End If
Next I
myString = Mid(myString,1,Len(myString) - 1)
'Insert myString into the table

答案 1 :(得分:0)

最简单的修复方法是废弃使用多选组合框,而是使用personID和QMS_Training的关系表。然后使用

DoCmd.RunSQL "INSERT INTO REL_people_QMS (People, QMS_Training) VALUES (" & ID & ",'" & QMS_Training & "');"

故事的道德:避免多值组合框!