gwi*_*man 4 sqlite indexing ms-access
情况:MS Access(恰好是2010)使用SQLite ODBC驱动程序(0.997)链接到SQLite(3.x)数据库中的表.
问题:所有行中所有列中的数据值显示为"#Deleted".
解决方案:这是一个"回答我自己的问题"的帖子,下面有一个解决方案.
编辑:将解决方案移至答案部分.
早些时候,我在stackoverflow中搜索,发现了一个类似的问题(Access中的sqlite链接表给出了#deleted值),并给出了一个很好的答案,结果证明在我的情况下是不适用的.所以我在这里添加一些信息.
这里解释了一半的问题:http://support.microsoft.com/kb/128809 "#Deleted"错误与链接的ODBC表.
这解释了Access(Jet)希望表具有唯一索引,以便能够在必要时插入/更新表.
如果您的SQLite表没有唯一索引(或主键),则Access将只允许对表的读访问 - 您无法在Access中编辑表的数据,但数据显示正常.
要使表更新,您可以修改SQLite代码(或使用SQLite工具)以向表中添加索引.
如果您的PK /唯一索引碰巧使用TEXT字段,那对SQLite来说就没问题了.但是,当您在Access中链接到它时,Access将显示#Deleted指示.
事件链似乎是:
Access/Jet会注意到唯一索引,并尝试使用它.但是,SQLite TEXT字段是可变长度的,可能是BLOB.这显然不符合Access对唯一索引字段的要求,因此#Delete指示.
为避免该问题,索引必须是Access将接受的SQLite字段类型.我不知道可接受的完整类型列表,但INTEGER可以工作.
希望这有助于某人.
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |