#Deleted MS Access 中链接的 Oracle 表的值



我在Oracle 12c中创建了一个简单的表,如下所示:

CREATE TABLE TEST
(
ID NUMBER GENERATED ALWAYS AS IDENTITY,
TEXT VARCHAR2(2000 CHAR),
CONSTRAINT ID_PK PRIMARY KEY (ID)
);

然后我使用 ODBC 驱动程序在 MS Access 中链接它。问题是当我在 TEXT 中输入值并单击 ID 和 TEXT 时,都会显示 #Deleted。我的值记录在数据库中,但我必须在MS Access中重新查询才能看到它。

我还注意到,如果我将文本字段的数据类型更改为数字,它可以正常工作。在MS Access中保存记录后,自动生成的ID和TEXT字段中的值都在那里。我不必重新查询任何内容。

这仅在插入时发生。更新工作正常。

请指教。

因此,您似乎已经找到了解决方案,但这更像是对为什么它以这种方式工作的解释。简单地说,如果基表使用非整数值作为主键,Access 会将这些整数舍入到最接近的整数,然后(因为它不是数值(Access 无法再找到适用的记录。因此,将表结构中的数据类型从TEXT更改为INTEGER将为您提供所需的结果。

或者,如果使用查询来运行这些键,如果无法更改 Oracle 表中的键,则将 Access 查询类型更改为快照(在查询属性中(也将绕过此问题。但从听起来,这不是您利用数据的方式。

就我而言,Oracle ODBC 驱动程序(使用相当旧的版本 11.02.00.01,否则可以正常工作,并且可以Microsoft Access 2016 32 位(似乎使用唯一索引而不是主键约束来确定主键。

我有一个字段,NUMBER(11)为带有唯一索引的PK,然后添加了一个带有另一个唯一索引的VARCHAR2字段。VARCHAR2字段的索引名称按字母顺序排列在NUMBER字段的索引名称之前。

现在,Microsoft Access 中的链接表将VARCHAR2字段显示为主键,我遇到了输入并保存您描述的记录后出现"#Deleted"的问题。

在 Oracle 中将NUMBER字段上的唯一索引重命名为按字母顺序排列在VARCHAR2字段之前,并在 Microsoft Acches 中重新链接表后,NUMBER字段再次成为 Microsoft Access 中的主键,并且解决了"#Deleted"问题。

最新更新