使用 ODBC 查询 Access 2007 多值字段

Posted

技术标签:

【中文标题】使用 ODBC 查询 Access 2007 多值字段【英文标题】:Querying Access 2007 multi-valued fields using ODBC 【发布时间】:2009-08-06 01:22:25 【问题描述】:

我有一个 Access 2007 数据库,它的一个字段使用“附件”数据类型(Access 2007 中的新功能)。该字段是一个神奇的“多值”字段,可以包含多个附件。

我希望能够使用单个 ODBC 查询轻松查看数据库中所有行的该字段的内容。理想情况下,原始表的每一行都应该正好是一行,并且我希望所有附件都作为单个数据库单元格返回。在理想情况下,可以使用单个 INSERT INTO 查询将该组附件重新插入到另一个表中。

我认为这可能是一项艰巨的任务,所以如果必须,我会接受:

一个 SQL 查询,告诉我给定附件字段中的附件数量

或最坏的情况:

一个 SQL 查询,告诉我给定行中的附件是否为空。

我似乎在网上找不到任何关于多值字段的好文档。也许它们太新了。

想法?

(P.S. 不要告诉我多值字段是邪恶的。我已经知道了。我不是创建数据库的人。)

【问题讨论】:

见这篇文章“多值数据类型被认为有害”(theregister.co.uk/2006/07/18/multivalued_datatypes_access/…)...哦,对不起,你说不要告诉我。忽略;) 【参考方案1】:

如果您可以使用 ADO,则在连接字符串中使用OLEDB:Support Complex Data=True 连接到数据源不使用 并查询该列:您应该得到adLongVarWChar 类型的列(即MEMO ) 其中值是由分号字符分隔的文件名。因此,获取文件列表只需要简单的解析即可。

可能可以使用 ADO 获取附件,但我还没有看到它完成。使用OLEDB:Support Complex Data=True 意味着您将获得adIDispatch 类型的列,即一个对象。那个对象是什么,我不知道(我希望它是一个ADODB.Recordset,但不行)。

【讨论】:

甜,有很大帮助;我至少可以通过解析字符串找到附件的数量。而且我也许可以使用不同的查询来获取原始内容,但无论如何这是一项单独的任务......【参考方案2】:

请参阅http://www.access-freak.com/tutorials.html#Tutorial07 获取一些信息,尽管他没有很好的屏幕截图或查询的 SQL。他的网站也不是最好的格式或可读性。

这假设您从 Access 2007 内部运行查询。如果您想通过 ODBC 运行它,请参阅http://groups.google.ca/group/microsoft.public.data.odbc/browse_thread/thread/d0ee29cc5e54e0fb

【讨论】:

微软推荐 ADO 用于 ACE 2007 复杂数据,嗯?非常有趣;) 有趣的是,他们根本不支持 ODBC 的这种事情。我相信这是我在 Access/JET 数据库中看到的第一个实例。

以上是关于使用 ODBC 查询 Access 2007 多值字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 Oracle 的 ODBC 链接表登录 Access 2007

PHP ODBC - Access 2007:函数调用问题:odbc_columns

无法使用 MS Access 2007 访问 ODBC DB

如何在 MS Access 2007 中获取 sql 查询

在 Access 2007 中链接 ODBC 表

如何检查多值字段是不是包含值 MS Access