0

我在表单上有一个组合框:

ControlSource=Target Basis ---------- [表格记录源中的一个字段]
RowSource=Target Basis -------------- [一个单独的同名表]
RowSourceType = 表/查询

“目标基础”表有 20 多个值。上述行为符合预期......直到,

VB代码对上面的改动如下:

Select Case xyzVar   'xyzVar is taken from another field on form.
   Case xyzValue
      Me.Target_Basis.RowSourceType = "Value List"
      Me.Target_Basis.RowSource = vbNullString
      Me.Target_Basis.RowSource = "'Trend Channel'; 'Adjusted Trnd Ch.'"
      Me.Target_Basis.Locked = False
      Me.Target_Basis = "Choose"
   Case Else    'etc.

完成上述代码后,文本“Choose”按预期出现在组合中,但是当用户放下选择列表时,只出现一个选项,它是以下文本——

SELECT [目标基础].Basis FROM [目标基础]

我在整个数据库上使用了 documenter,并确定上面的查询没有在任何地方定义。我假设系统必须从 controlSource 名称生成它。为了检查这一点,我将单独表(即 rowSource 表)的名称从“Target Basis”更改为“Target Type”。我得到了相同的行为,除了现在列表中的单个项目是 -

SELECT [目标类型].Basis FROM [目标类型]

那时我将表的名称改回“目标基础”;但是,出现在下拉列表中的项目仍然如上——尽管如此,系统中既不存在查询也不存在表“目标类型”。我尝试关闭、压缩和重新打开数据库;没变。

进一步的实验揭示了以下内容:

  • 当代码完成执行时,rowSourceType 和 rowSource 应该是它们应该的样子。我通过创建一个输出这些属性的按钮来检查这一点。然而,只要用户单击组合的下拉箭头,rowSource 属性就会更改为上面的 SELECT 语句。rowSourceType 保持“值列表”,这就是它出现在下拉列表中而不是执行的原因。

  • 如果controlSource被删除,即控件未绑定,问题就消失了。

这个查询是从哪里来的??

非常有必要提供任何见解 - IG

4

2 回答 2

0

首先,我不确定你为什么有:

Me.Target_Basis.RowSource = vbNullString

我认为这是不必要的,可能会导致问题。

尝试添加 Me.Target_Basis.Requery 以刷新组合框列表。

于 2013-06-11T13:51:38.733 回答
0

访问经常会留下“机器中的幽灵”。我已经使用 Access 近 20 年了,我无法告诉您我必须解决多少次问题,然后将所有表单/宏/查询/等导入到一个新的空数据库中。它发生了。不确定这是否是您当前的问题,但确实会发生。

于 2013-06-11T14:53:08.023 回答