【问题标题】:Writing to a combobox based on a previous combobox not working基于先前的组合框写入组合框不起作用
【发布时间】:2021-05-13 10:56:12
【问题描述】:

所以我正在尝试创建一个计算器,它可以同时创建和查找项目编号。

第一个组合框Type 有两列:[Type].[Type][Type].ID(主键)。

第二个组合框Chemistry 具有三列:[Chemistry].[ID](主键)、[Chemistry].[Chemistry][化学].[类型](外键)。

我还有其他几个,但这些都是给我带来问题的。要正确填充化学组合框,我需要知道类型组合框的值。当您单击组合框时这很好,但是当我进行反向查找时(解析项目编号以获取其替代条目)。因为 Type 没有外键并且不会根据任何条目进行填充,所以当我尝试写回组合框时它就可以了。当我尝试写 chemistry 时,尽管 Type 组合框中有一个有效条目,但组合框不会填充。出于某种原因,请求和刷新并不能解决问题。在 GIF 附件中,类型为 Combo0,化学为 Combo2。有什么想法吗?

相关代码

hii = Me.Text6.Value [Item Number]
v = Mid(hii, 1, 1)
w = Mid(hii, 2, 2)
vvv = DLookup("Type", "Type", "ID = " & v & "")
If w < 10 Then
www = DLookup("Chemistry", "Chemistry", "ID =" & Mid(w, 2, 1) & "")
Else
www = DLookup("Chemistry", "Chemistry", "ID =" & w & "")
End If

Me.Combo0.Value = vvv
Me.Combo2.Requery
Me.Combo2.Value = www

这里是化学行来源:

这是该问题的 GIF。

【问题讨论】:

  • 如果您将组合框命名为 cboTypecboChermistry 而不是 Combo0Combo2,代码会更易于阅读。化学组合的行源是什么?另外,请在问题中插入相关的 VBA 代码。
  • ^^ 我已尽我所能编辑。

标签: vba forms ms-access combobox


【解决方案1】:

外键总是指向另一个表的主键。 Chemistry 表中的Type 外键列应与Type 表中的主键ID 对应。我将其命名为TypeID,以明确这一事实。我假设ID 是一个自动编号列。那么TypeID的类型必须是Numeric/Long。

然后,当然,必须设置两个组合中的绑定列,以便绑定到各自的 ID。

Chemistry 组合的行源应该类似于

SELECT Chemistry.ID, Chemistry.Chemistry
FROM Chemistry
WHERE Chemistry.TypeID = Forms!Numbers!Combo0; 

  • 绑定列 = 1
  • 列数 = 2
  • 列宽 = 0cm(隐藏 ID 列)

您不应链接或查找基于Type.Type 的值,我认为这是一个文本列。当你这样做时,代码变成了

hii = Me.Text6.Value
v = CLng(Mid(hii, 1, 1))
w = CLng(Mid(hii, 2, 2))

Me.Combo0.Value = v
Me.Combo2.Requery
Me.Combo2.Value = w

我测试了它,它可以工作。

您还可以为控件和变量提供更好的名称。它使代码更具可读性。例如

itemNumber = txtItemNumber.Value
typeID = CLng(Mid(itemNumber, 1, 1))
chemID = CLng(Mid(itemNumber, 2, 2))

cboType.Value = typeID
cboChemistry.Requery
cboChemistry.Value = chemID

更容易阅读。您也可以删除Me.

【讨论】:

  • 哇,我的专栏名字很糟糕。 [Type].[ID] 是主键,[Chemistry].[Type] 是外键。我更改了绑定列,并且能够编写它!我需要在代码中进行一些更改以从正确的列写入,但此解决方案对我有用。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2012-02-15
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多