【问题标题】:Set subform multi-select field using Dlookup使用 Dlookup 设置子表单多选字段
【发布时间】:2018-08-25 20:12:52
【问题描述】:

我有一张桌子,其中有多个分配给一个流程的工作间,以及该流程的主要工作间的“是/否”字段。

流程 |展位 |初级

buff1 | 8 |没有

buff1 | 5 |是的

等等

当使用 Dlookup 选择流程时,我正在尝试自动化表单以在多选字段上选择主展位。

这是我正在使用的代码:

Me.Booth.Value = DLookup("Booth", "BoothSource", "BoothSource.Process = '" & Me.Process & "' AND BoothSource.Primary = True")

Booth 字段是一个多选字段。当我尝试测试时,我收到错误 3032 无法执行此操作。请帮忙。 Multi-Select Example

【问题讨论】:

  • 这不是多选字段的工作方式。 Booth 是列表框吗?您可能需要一些更复杂的 VBA。
  • 这是一个多值字段。像一个列表框,但不同。
  • 见上面的链接图片。 “多选示例”
  • 呃...这是数据表视图中的表格吗?如果您使用的是数据表视图,这是一个非常相关的细节,并且会使所有进一步的代码变得更加困难。
  • 这是为什么呢?我过去从来没有遇到过问题吗?我错过了什么?

标签: ms-access sharepoint vba ms-access-2010


【解决方案1】:

多选字段和组合框很难使用。

多值组合框的.Value 属性显然是一个变体数组,并且是可写的。您可以将 .Value 属性设置为等于包含您的值的数组,而不仅仅是您的值。

请注意,这会绕过许多检查,例如 Limit to list 属性,即使不允许对列表进行值编辑。您应该手动检查您的输入,因为这可能会导致错误。避免在数组中包含除字符串以外的任何内容(数字、日期),因为这些不会触发错误,但会将 Null 中的任何内容插入到列表中的某个项目中以伪随机 unicode 字符。

Dim varValue As Variant
varValue = DLookup("Booth", "BoothSource", "BoothSource.Process = '" & Me.Process & "' AND BoothSource.Primary = True")
Me.Booth.Value = Array(CStr(varValue))

请注意,我强烈建议您不要使用多选字段,这样您就可以避免这种混乱。

【讨论】:

  • 我收到错误 3061:参数太少。预期 1. rs = 当我查看调试器时什么都没有。查找和表单源是不同的表,如果有帮助的话。该表单基于表“Booth_Process_Multi”,这是具有多选字段的表。表 BoothSource 没有。
  • 听起来您的输入参数 (Me.Process) 没有评估为有效值。是否包含撇号?
  • 不,它是用组合框选择的。我为该字段添加了一个 debug.print,它按预期填充。
  • ...如果这也是一个多选字段,我将放弃它。可以Debug.Print Me.Process吗?
  • 我在你发帖时正在输入。 :) 这不是多选字段
猜你喜欢
  • 2016-03-08
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多