2009-07-22 41 views
0

我想在C#程序的组合框中列出Microsoft Access 2000-2007(取决于MS Access数据库版本)的数据类型。我怎样才能做到这样的事情?如何获取MS Access数据类型的列表?

+0

你想访问数据类型或Jet/ACE数据类型吗?可能因为您使用的是C#,您只需要Jet/ACE数据类型,但它可能是您使用的数据库是由Access创建的,并使用特定于Access的数据类型(这通常是带有扩展的常规Jet/ACE数据类型属性,例如超链接字段,它是一个具有特定设置的备忘录字段,用于指示访问它是超链接字段而不仅仅是常规备忘录字段)。 – 2009-07-23 01:09:21

+0

是的,我想使用特定的MS Access数据类型。如果我没有错误的是ACE与MS Access 2000-2007兼容?我试图让我的程序能够打开MS Access 2000-2007数据库。因此,例如,如果我打开一个MS Access 2003,我希望我的程序能够使用任何特定于MS Access 2003的数据的数据类型。如果我打开一个MS Access 2007数据库,它将用于MS Access的任何数据的数据类型2007 ... – Partial 2009-07-23 14:21:02

+0

我正在关闭这个问题,因为它不够彻底,我想知道一些其他的东西...这里是新问题的链接:http://stackoverflow.com/questions/1172617/ – Partial 2009-07-23 15:48:14

回答

2

我不认为有可能在运行时询问引擎来枚举它支持的数据类型。例如,DAO不会公开某些Jet 4.0数据类型,例如NCHARBINARY; ADO将揭示Access数据库引擎从不支持的数据类型;只有ACEDAO会显示多值类型。

我认为您需要事先知道引擎支持的每个版本的数据类型,然后在运行时选择适当的设置。

Jet 4.0数据类型(包括Access 2000到2003)和各种同义词可以找到here(还应提供一些有关Jet 4.0的新类型的提示,以防您需要支持早期版本的引擎) 。

ACE(Access2007)添加了附件类型;还有多值(“复杂”)类型以支持SharePoint列表:我认为您需要自行判断多值类型是不同类型还是仅仅对现有类型的变体。 Access2007 Help中有一些细节。

2

Microsoft.Office.Interop.Access.Dao.DataTypeEnum

当然,你需要添加一个参考,我很讨厌将参考办公室,因为你绑到一个版本的Office,以及我讨厌每次升级时更新代码。

相关问题