一尘不染

如何使用Access窗体中的组合框更新具有外键的记录,但显示该键的查找?

sql

我有一些我认为在Access中做起来很简单的事情。

想象一下,我有以下表格(用SQL生成):

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

CREATE TABLE RequestStatus (
    ID int IDENTITY(1,1) PRIMARY KEY,
    RequestStatus varchar(50) unique
);

我想在Projects表的Access中创建一个窗体,该窗体具有一个下拉菜单,允许用户更改RequestStatus-但显示varchar(50)值。

例如,如果RequestStatus.RequestStatus值为:

  • (1,“一个”)
  • (2,“两个”)

我想下拉以显示选项“一”和“二”,但实际上,在选中时,更新我Projects.RequestStatus分别为1或2。

我可以很容易地通过组合框将“一个”和“两个”值推入下拉列表中:

  • RowSource =从RequestStatus中选择SELECT RequestStatus.RequestStatus;
  • ControlSource = RequestStatus.RequestStatus

但是,当我更改组合框值时,它尝试将新值插入RequestStatus表中-这显然是一个问题。

如果我将ControlSource更改为Projects.RequestStatus,则不允许我使用“一个”或“两个”指示符进行选择,因为显示的值为1/2等。

我怎样才能做到这一点?


阅读 120

收藏
2021-03-10

共1个答案

一尘不染

尝试此为您的组合框:

控制源:Projects.RequestStatus
行源:SELECT ID,RequestStatus FROM RequestStatus
绑定列:1
列数:2
列宽:0“; 1”

这样,您的组合框就有两列(ID和RequestStatus),但是第一列是隐藏的,因为其宽度为零。

2021-03-10