*编辑输入:问题是SQL语句必须一次将区域添加到MVF中。第二个问题是我忘记在循环中执行SQL。
我在Access 2007中遇到一些问题,其中一些SQL语句涉及一个名为“area”的多值字段。这个想法是任何一个用户都有他们所属的几个相关领域。不同的区域显示在多选列表框中,并使用以下代码插入。经过一些研究后,似乎传递多值字段需要插入。 [虽然我不确定这个]
我的第一次尝试看起来像这样
For i = 0 To Me.boxArea.ListCount - 1
If Me.boxArea.Selected(i) Then
sqlString = sqlString & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & ","
End If
Next i
这导致了一个错误,指出:“值和目标字段的数量不同。” SQL字符串最终如下所示,这让我意识到它的行为就像一个普通的insert和多个值被视为不同的字段。
"INSERT INTO Users ([area].[Value]) VALUES(G1 ,G2,G3,) WHERE badgeNumber = '404';"
对于我的下一次尝试,我认为可能只需要一次传递一个值。
If Me.boxArea.Selected(i) Then
sqlString = "INSERT INTO Users ([area].[Value]) VALUES('" & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & "') WHERE badgeNumber = '" + txtBadgeNumber + "';"
End If
Next i
这没有错误,但它只包含最后一个值而不是整个字符串。所以G3就出现了。
所以现在我对如何通过Access中的SQL将多个值插入MVF感到困惑。到目前为止,我尝试过的所有内容都会产生错误或意外结果。您将提供的任何帮助将不胜感激。谢谢!
-EDITED FOR INFO FOR COMMENTS
这是一个显示boxArea值的调试屏幕
运行的唯一其他SQL语句是用于创建用户的SQL语句。我相信它没有任何问题,但作为参考。
sqlStr = "INSERT INTO Users ( badgeNumber, firstName, lastName, accessLevelID, department, email, phone, mobile, fax, pager, title, displayName, company )VALUES ('" + txtBadgeNumber + "', '" + txtFirstName + "', '" + txtLastName + "', 1, 'BE23515', '" + txtEmail + "', '" + txtPhone + "', '" + txtMobile + "', '" + txtFax + "', '" + txtPager + "', '" + txtTitle + "', '" + txtDisplay + "', 'XXXX');"
CurrentDb.Execute sqlStr, dbFailOnError
答案 0 :(得分:2)
你的第二次尝试看起来很接近。而不是使用更新语句,请使用插入。例如:
sqlString = "INSERT INTO Users ([area].[Value]) VALUES ('" & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & "') WHERE badgeNumber = '" + txtBadgeNumber + "';"
供参考,请参阅Microsoft网站上的此页:
http://office.microsoft.com/en-us/access-help/using-multivalued-fields-in-queries-HA010149297.aspx