代码之家  ›  专栏  ›  技术社区  ›  Partial

如何获取特定版本的MS Access或/和每个版本的MS Access的所有特定数据类型?

  •  0
  • Partial  · 技术社区  · 15 年前

    我试图在C#程序的组合框中列出Microsoft Access 2000-2007(取决于MS Access数据库版本)中的数据类型。我希望我的程序能够打开MS Access 2000-2007数据库。如果我打开了一个MS Access 2003,我希望我的程序能够使用特定于MS Access 2003的任何数据的数据类型,并在组合框中列出这些数据类型。如果我打开一个MS Access 2007数据库,它将用于MS Access 2007的任何数据类型。。。我想知道我是否可以使用ACEDAO(ACEDAO是否仅与MS Access 2007兼容?)。另外,如何获取特定版本的MS Access或/和每个版本的MS Access(我的情况是2000-2007)的所有特定数据类型?

    2 回复  |  直到 15 年前
        1
  •  1
  •   David-W-Fenton    15 年前

    ACEDAO向后兼容所有以前版本的Jet。但是兼容性是以不同的方式提供的。例如,如果您直接查看ACEDAO的对象模型,您将看到字段数据类型和字段2数据类型。在Access 2007中,您看不到这一点。我猜测字段数据类型是针对MDB(Jet 4和更早版本),而Field2数据类型是针对ACCDB的,因为ACCDB有新的数据类型,这些数据类型具有早期字段类型中缺少的属性和方法。

    现在,这只是DAO库中的一个对象,根据您使用的文件格式,它会有不同的变化。我没有寻找其他类似的变体,但它们可能存在。

    所以,您仍然需要知道应用于不同版本的内容,即使ACEDAO将为您提供一个能够在所有旧版本上运行的超集。如果您只需要使用ACCDB和Jet 4 MDB,我认为ACEDAO就足够了。

        2
  •  1
  •   onedaywhen    15 年前

    据我所知,Acdoo版本的数据表列出了所有可用的数据类型(尽管您必须查找一个DbMeMo的变体才能区分超链接,如果您认为这是一个不同的数据类型)。

    但是,它还列出了它似乎不支持的其他类型: dbfloat (21)有别于 dbDouble (7); dbTime (22)不同于 dbDate (8); dbNumeric (19) 不同于 dbDouble (20); 不同类型的 dbVarBinary , dbBinary dbLongBinary .

    此外,我认为不可能在运行时查询引擎的特定版本以枚举支持的数据类型。

    因此,我不认为简单地列出ACEDAO枚举中的类型会非常有用。相反,我认为您需要提前知道每个版本的引擎支持的数据类型,然后在运行时选择适当的集。

    可以找到Jet 4.0数据类型(Access2000到2003包括在内)和各种同义词 here

    ACE(Access2007)添加了一个 Attachment type ; 它还补充说 multivalued ("complex") types 您需要根据您要实现的目标自行决定这些类型是否是不同的类型(或者仅仅是现有数据类型的变体)。