使用 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