【问题标题】:How to get "Lookup" functionality in Access when linking to a SQL table?链接到 SQL 表时如何在 Access 中获得“查找”功能?
【发布时间】:2013-10-02 22:01:36
【问题描述】:

我正在构建一个带有 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”。以上确实要求表匹配,但不提供“下拉”查找功能。

【问题讨论】:

  • 帮助我理解这一点。 RequestTypeRequestStatus 是相同的数据类型(域)吗? REFERENCES 不应该是RequestTypes (RequestType) 吗?
  • @MartinF 我不记得了……那是几年前的事了 :)
  • 仅在两年前。介意复习一下您的问题吗?

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


【解决方案1】:

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

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

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

【讨论】:

  • 我不确定我是否理解这一点。看起来你在说我想做的事情是不可能的?当它们链接到 SQL 时,我无法在 Access 中保存表布局。这意味着我无法将 Access 中的列更改为“查找”值。
  • 我不相信有任何方法可以修改 Access 中链接表的任何属性。
  • 对,我的问题是如何以 Access 正确解释它的方式创建 SQL 表。我需要澄清我的问题吗?
  • 我提到的组合框将在表单上。
  • 无法在 Access 中创建具有该类型功能的 SQL 表。
【解决方案2】:

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

但是,您可以创建一个继续表单,然后简单地放入一个组合框并使用向导(或手动)构建您需要的下拉列表和查找。从用户的角度来看,他们并不能真正辨别以连续形式编辑数据与以连续形式编辑数据之间的区别。

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

所以你可以像这样构建一个屏幕:

请注意,在上面我们有一个继续表单,还有一些按钮等。因此,一个继续表单比数据表更灵活,但是这种“多个项目”表单会产生几乎相同的用户界面。

注意第一列是一个组合框。事实上,如上所示,您可以将任何类型的控件放入这些连续表单中。组合框可以/将显示您选择的文本列,但在“幕后”组合框会将您从组合框中选择的值的 PK id 存储到表单表中的单个列中。

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

【讨论】:

    【解决方案3】:

    选项 1:

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

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

    SELECT DISTINCT Customer.CustomerName FROM Customer
    

    选项 2:

    我不建议这样处理。您最好在表单中添加一个组合框,将行源类型设置为“表/查询”并将行源设置为上述查询。 Access 中应避免使用查找字段。

    【讨论】:

    • 我似乎无法修改表设计 - 当我尝试查看任何链接表的“设计视图”时,我收到一条消息,指示“表是一个链接表,其设计可以'不被修改。如果你想添加或删除字段或更改它们的属性或数据类型,你必须在源数据库中这样做。我是否在设置 ODBC 连接或 SQL Server 端的设置方面遗漏了什么?
    • 如果是这种情况,我会推荐选项 2。无论如何,这实际上是更好的方法。如果您需要有关如何完成它的更多详细信息,请告诉我您迷路的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多