MS Access - 如何在从另一个表填充数据的表单上创建标签

时间:2012-01-24 18:04:46

标签: ms-access

我有一个相当简单的数据库,我继承了。就本问题而言,有两个表: Mastertable and Providertable。

Mastertable references可提供的thruogh provid,它是可提供PK(提供)的FK。

所以它看起来像这样:

Mastertable:

acct(PK) (其他领域) 提供(FK)

Providertable

提供(PK) provname provspecialty

简单吧?但是,Mastertable!provid字段实际上是一个查找表,显示Providertable!provname但存储提供。用户可以使用一种表单来填充Mastertable,并显示此查找字段。

用户现在希望根据他们选择的提供商来显示提供商专长。我无法想象出来拯救我的生命。我非常精通SQL,编写了许多存储过程并使用.NET创建了一些db应用程序,但这非常具有挑战性。我尝试创建一个名为provspeciality的查找字段,但这不是他们想要的。我尝试更改查找字段的“OnUpdate”事件,将Provider Specialty标签指向正确的事物。

现在,我甚至无法得到一个简单的选择加入两个表,因为他们使用这个查找字段作为FK和Access我想无法理解它。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

由于Mastertable provid字段是查找类型,因此显示的值是查找值,而不是实际存储在字段中的值。此查询将显示存储的提供值。

SELECT acct, provid
FROM Mastertable;

而且我认为您应该能够使用与此类似的查询检索匹配的提供商专业:

SELECT m.provid, p.provname, p.provspecialty
FROM
    Mastertable AS m
    INNER JOIN Providertable AS p
    ON p.provid = m.provid;

您甚至可以将该查询用作表单上的组合或列表框的行源。提供绑定列。您可能希望将provid列宽设置为0“,因此它实际上不会显示在控件中,但仍存储在Mastertable中。

我认为您应该修改表格以提供普通(数字?)字段而不是查找。幸运的是,您表示这是“相当简单的数据库”,因此希望能够限制您需要与重新设计的表兼容的其他更改量。祝你好运。

答案 1 :(得分:1)

我为表单字段“provid”创建了一个“On Change”事件,这是一个查找字段,在将提供者ID作为FK放入主表时显示提供者名称。然而,显然Access无法使用查询基于此字段进行查找(或者我做错了) - 如上面的注释所示。我所做的是使用它作为事件代码。重要的是,您必须启用宏才能使其正常工作!

Private Sub provid_Change()
    Me.txtProviderSpecialty = DLookup("Provspecialty", "Providertable", "provid = " & Me.provid.Value)
End Sub