【发布时间】:2013-06-11 22:53:08
【问题描述】:
我在表单上有一个组合框:
ControlSource=目标基础 ---------- [表单记录源中的字段]
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”按预期出现在combo中,但是当用户放下选择列表时,只出现一个选项,即以下文字--
SELECT [目标基础].Basis FROM [目标基础]
我在整个数据库上使用了 documenter,并确定上面的查询没有在任何地方定义。我假设系统必须从 controlSource 名称生成它。为了检查这一点,我将单独表(即 rowSource 表)的名称从“目标基础”更改为“目标类型”。我得到了相同的行为,除了现在列表中的单个项目是--
SELECT [Target Type].Basis FROM [Target Type]
那时我将表的名称改回“目标基础”;但是,出现在下拉列表中的项目仍然如上——尽管如此,系统中既不存在查询也不存在表“目标类型”。我尝试关闭、压缩和重新打开数据库;没有变化。
进一步的实验揭示了以下内容:
当代码完成执行时,rowSourceType 和 rowSource 应该是正常的。我通过创建一个输出这些属性的按钮来检查这一点。然而,只要用户单击组合的下拉箭头,rowSource 属性就会更改为上面的 SELECT 语句。 rowSourceType 保持“值列表”,这就是它出现在下拉列表中而不是执行的原因。
如果controlSource被删除,即控件未绑定,问题就消失了。
这个查询是从哪里来的??
非常感谢任何见解 - IG
【问题讨论】:
标签: ms-access