Access中的Sqlite链接表再次给出#deleted值

前端之家收集整理的这篇文章主要介绍了Access中的Sqlite链接表再次给出#deleted值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
情况:MS Access(恰好是2010)使用sqlite ODBC驱动程序(0.997)链接sqlite(3.x)数据库中的表.

问题:所有行中所有列中的数据值显示为“#Deleted”.

解决方案:这是一个“回答我自己的问题”的帖子,下面有一个解决方案.

编辑:将解决方案移至答案部分.

解决方法

早些时候,我在stackoverflow中搜索,发现了一个类似的问题(Access中的sqlite链接表给出了#deleted值),并给出了一个很好的答案,结果证明在我的情况下是不适用的.所以我在这里添加一些信息.

这里解释了一半的问题:链接的ODBC表有http://support.microsoft.com/kb/128809‘“#Deleted”错误.

这解释了Access(Jet)希望表具有唯一索引,以便能够在必要时插入/更新表.

如果您的sqlite表没有唯一索引(或主键),则Access将只允许对表的读访问 – 您无法在Access中编辑表的数据,但数据显示正常.

要使表更新,您可以修改sqlite代码(或使用sqlite工具)以向表中添加索引.

如果您的PK /唯一索引碰巧使用TEXT字段,那对sqlite来说就没问题了.但是,当您在Access中链接到它时,Access将显示#Deleted指示.

事件链似乎是:

Access / Jet会注意到唯一索引,并尝试使用它.但是,sqlite TEXT字段是可变长度的,可能是BLOB.这显然不符合Access对唯一索引字段的要求,因此#Delete指示.

为避免该问题,索引必须是Access将接受的sqlite字段类型.我不知道可接受的完整类型列表,但INTEGER可以工作.

希望这有助于某人.

猜你在找的Sqlite相关文章