*编辑:问题是 SQL 语句必须一次将区域添加到 MVF 中。第二个问题是我忘记在循环中执行 SQL。
我在 Access 2007 中遇到了一些 SQL 语句涉及称为“区域”的多值字段的问题。这个想法是任何一个用户都有他们所属的几个相关领域。不同的区域显示在多选列表框中,并使用以下代码插入。经过一番研究,似乎传递多值字段需要插入。[虽然我不确定这个]
我的第一次尝试看起来像这样
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 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 中。到目前为止,我尝试过的一切都会产生错误或意外结果。您能提供的任何帮助将不胜感激。谢谢!
- 编辑信息以供评论
这是一个显示 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