【发布时间】:2017-04-27 06:21:11
【问题描述】:
Microsoft Access 无法更新 ODBC 链接的 SQLite 表上的大型备注字段(长文本)。限制在 2300 到 5152 个字符之间。它可以是更新查询、DAO 或 ADO rs.Edit 或使用 Ctrl-C / Ctrl-V + mouse 直接复制粘贴到链接表中 - 没关系。
错误信息:
更新查询或手动复制粘贴:
ODBC-update on a linked table 'Adobe_AdditionalMetadata' failed.
sequence error (#-1)
rs.Edit 行上的 DAO、VBA:
Run-time error '3027':
Cannot update. Database or object is read-only.
rs.Update 行上的 ADO、VBA:
Run-time error '-2147217887 (80040e21)':
ODBC-update on a linked table 'Adobe_AdditionalMetadata' failed.
已安装的驱动程序:
http://www.ch-werner.de/sqliteodbc/(SQLite3 ODBC 驱动程序)
访问链接字段属性:长文本
原始 SQLite 字段属性:TEXT NOT NULL DEFAULT ''
(访问几乎将所有字段都视为备忘录)
这是 Adobe Lightroom“Lightroom Catalog.lrcat”文件的“Adobe_AdditionalMetadata”表中的“xmp”字段。
更小的备注字段可以轻松更新。
【问题讨论】:
-
不知道这是否适合您的情况,但我似乎通过在 DSN 属性中启用“No WCHAR”然后删除并重新创建链接表来避免此问题。
-
谢谢,这太容易了...使用更新查询进行更新,复制粘贴和 ADO VBA 现在可以正常工作,DAO VBA 仍然显示相同的错误消息。你能解释一下为什么要设置 No WCHAR 吗?
-
有趣。
DAO.Recordset更新(rs.Edit和rs.Update)对我有用。 -
以防万一:使用 Lightroom(或其 SDK)以外的应用程序上传或修改 .lrcat 文件(如“Lightroom Catalog.lrcat”)中的数据不仅有风险(如果这样做可能会损坏此类文件它不正确),但在这种情况下您也可能不会得到 Adobe 的任何支持:forums.adobe.com/message/9210122#9210122 Lightroom Catalog.lrcat 文件和 Lightroom 许可证中的数据修改
标签: ms-access sqlite odbc memo