显示与Microsoft Access 2010中的Combobox选择对应的文本

时间:2012-07-20 01:14:16

标签: sql ms-access vba combobox access-vba

我有一个联系表单,表单中的一个字段是Contact_Type_ID。该字段是一个数字字段,也对应于另一个表中的文本字段(例如1 =外籍人员)。

当我在联系人中循环时,他们的Contact_Type_ID是1,2,3 ......而不是非营利性的CEO,副总裁等。这是一个问题,因为我不知道3号的含义。< / p>

我想要一个仅显示相应文本的组合框。

我无法获得两列和0; 1格式。我的预感是因为我从两个不同的表中提取信息。我可以生成正确的列表,但是当我循环浏览联系人以反映当前联系人的[Contact_Type_ID]时,主条目不会改变。

我无法编辑任何当前表,因为我应该将此应用程序应用于更大规模的数据库。

我也尝试为行源设置SQL:

'Populate the connection combo box '
Dim typeSQL As String
typeSQL = "SELECT DISTINCT Contacts.[ContactTypeID], Contact_Types.[ContactType] " & _
    "FROM Contacts, Contact_Types " & _
    "ORDER BY Contact_Types.[ContactType];"
Me.cbo_ContactType.RowSource = typeSQL

但是,我遇到了同样的问题:当我循环浏览联系人时,组合框不会更新。我不明白rowsource和controlsource之间的区别。我觉得这种区别可能是关键所在。

2 个答案:

答案 0 :(得分:0)

假设我理解正确:

在组合框属性中,转到Data标签。 将Control Source设置为Contact_Type_ID

这意味着当您浏览记录时,组合框将对应于数据中的Contact_Type_ID字段。

Row Source设置为"SELECT Contacts.[ContactTypeID], Contact_Types.[ContactType] FROM Contacts, Contact_Types ORDER BY Contact_Types.[ContactType];"

行源指示组合框可以访问的数据,这将有助于它确定如何显示控制源值。

Bound Column设置为1

Limit to List设为Yes

现在位于Format标签中。将Column Count更改为2。 接下来将column widths设置为您在问题中提到的0;1

现在尝试查看表单视图,它应该按预期运行。

如果不起作用,请使用these instructions.

创建一个新控件

答案 1 :(得分:0)

据我了解您的问题,您的表单中包含基于表Contacts的联系人,该表包含一个名为Contact_Type_IDContactTypeID的字段。您希望在表格Contact_Types中显示联系人类型的说明。

您不需要为您的组合连接表,它应该非常简单。正如您所怀疑的那样,密钥是Control source,它是将一个表与另一个表相关联的属性。

Control source : ContactTypeID '' or Contact_Type_ID, choose from the list
Row source : SELECT ContactTypeID, ContactType FROM Contact_Types ORDER BY ContactType
Bound column : 1
Column count : 2
Column widths : 0,2

顺便说一下,你可以在一个组合中连接表,并且仍然将第一列设置为0,它仍然可以工作,它都在正确的设置中。