如何在链接到SQL表时在Access中获得“查找”功能?

时间:2013-10-02 22:01:36

标签: sql-server sql ms-access linked-server

我正在构建一个具有Access 2010前端的SQL数据库。

我想在Access中查找一些字段(即用户点击Access中的字段并填充下拉列表)。在Access中使字段成为另一个表的查找是相当简单的,但我似乎不知道如何在SQL中执行它然后传播更改。

我的SQL知识非常基础。以下是我如何创建SQL表的示例:

CREATE TABLE RequestTypes (
    RequestType varchar(50) PRIMARY KEY
);
INSERT INTO RequestTypes (RequestType) VALUES ('Val 1');
INSERT INTO RequestTypes (RequestType) VALUES ('Val 2');
INSERT INTO RequestTypes (RequestType) VALUES ('Val 3');

CREATE TABLE Projects (
    ID int IDENTITY(1,1) PRIMARY KEY,
    RequestStatus varchar(50) FOREIGN KEY REFERENCES RequestStatus(RequestStatus),
    Quantity varchar(50)
);

然后我通过Access中的ODBC连接连接到数据库。

如何在SQL中创建表格,以便我的Projects表的RequestStatus字段具有与查找表相同的功能?例如,能够单击项目的RequestStatus属性并选择" Val 1"或者" Val 2"或者" Val 3"从列表中。以上确实要求表格匹配,但不提供"下拉列表"查找功能。

3 个答案:

答案 0 :(得分:3)

在SQL Server中创建表,链接到该表,然后将该表用作所需组合框/下拉列的行源属性。

这是在SQL Server中创建表的基本语法:

CREATE TABLE LookupTest 
(
    ID INT NOT NULL,
    LookupValue varchar(255)
);

答案 1 :(得分:3)

将数据表视图用于SQL Server时,不能使用查找。

但是你可以做的是创建一个继续表单,然后只需放入一个组合框并使用向导(或手动)构建下拉列表并查找所需的内容。从用户的角度来看,他们实际上无法辨别出继续形式的编辑数据与继续形式之间的区别。

因此,继续表单将基于ONE表。组合框列将是一个长数字,组合框将有一个表的行源,提供选择列表(查找值)。

所以你可以建立一个这样的屏幕:

enter image description here

请注意上面我们有一个继续的形式,但也有一些按钮等。所以继续形式比数据表更灵活,但这个“多项”形式导致大致相同的用户界面。

注意第一列是如何组合框。实际上,如上所示,您可以将任何类型的控制放入这些连续形式中。组合框可以/将显示您选择的文本列,但在场景“后面”,组合框将您从组合框中选择的值的PK ID存储到表格表中的单个列中。

结果和外观与Access数据表中的查阅列相同。

答案 2 :(得分:1)

选项1:

如果已将表链接到access,则可以在链接表上设置Lookup。为此,请转到表格的设计视图。选择要查找的字段。单击“查找”选项卡。选择组合框作为显示控件。在Row Source中指定SQL。例如:

如果我在CustomerName字段上,我可能需要以下SQL:

SELECT DISTINCT Customer.CustomerName FROM Customer

选项2:

我不建议这样处理它。最好将一个组合框添加到表单中,将行源类型设置为"表/查询"以及上面查询的行源。在Access中应避免使用查找字段。