Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在Access 2007中使用ADO或DAO更好吗?_Vba_Ms Access_Ms Access 2007 - Fatal编程技术网

Vba 在Access 2007中使用ADO或DAO更好吗?

Vba 在Access 2007中使用ADO或DAO更好吗?,vba,ms-access,ms-access-2007,Vba,Ms Access,Ms Access 2007,在Access 2007中创建新数据库时,应该使用ADO(ActiveX数据对象)还是DAO(数据访问对象) 编辑:此数据库的一部分将从Excel 2007电子表格导入数据。ADO是当前推荐的访问方法。我认为DAO已经被弃用好几年了 看起来它是从2000年开始的-根据 过时数据访问技术清单-技术路线图旧主题9 引用上述文章(2008年12月修订)“数据访问对象(DAO):DAO提供对JET的访问(访问)这个API可以从微软Visual Basic、微软Visual C++和脚本语言中使用。它包含

在Access 2007中创建新数据库时,应该使用ADO(ActiveX数据对象)还是DAO(数据访问对象)


编辑:此数据库的一部分将从Excel 2007电子表格导入数据。

ADO是当前推荐的访问方法。我认为DAO已经被弃用好几年了

看起来它是从2000年开始的-根据

过时数据访问技术清单-技术路线图旧主题9


引用上述文章(2008年12月修订)“数据访问对象(DAO):DAO提供对JET的访问(访问)这个API可以从微软Visual Basic、微软Visual C++和脚本语言中使用。它包含在微软Office 2000和Office XP中。DAO 3.6是该技术的最终版本。它将不在64位Windows操作系统上使用。“

刀是这里推荐的技术。ADO已被大幅贬值,现在正被ADO.net所取代

DAO不仅是使用MS access的本机和推荐的数据对象模型,而且它还在不断增强,现在为sharepoint提供了一系列新功能。在access 2007中,我们现在支持SharePoint列表。这意味着2007年的新DAO对象模型允许使用sharepoint列表并将其视为SQL server表。这意味着您可以在sharepoint列表上使用SQL(在fac中,甚至没有oleDB提供程序允许您以这种方式使用sharepoint列表,但使用DAO您现在可以这样做)。ADO中没有添加此类内容。因此,从access(dao)的角度来看,SharePoint列表将这些SharePoint列表视为标准表

此外,access中的DAO还支持我们所称的复杂数据类型。这样做是为了支持sharepoint中的XML列表。请记住,在下一版本的access(2010)中,我们将看到更多的新特性被添加到DAO中(JET现在被称为ACE)

因此,毫无疑问,DAO是正确和良好的使用模型。ADO没有得到任何增强,已被ADO.NET取代

因此,未来属于DAO,很明显,这就是微软投资MS access和升级access以使用sharepoint的原因

Access 2007为其字段定义提供了多值功能,这也是支持sharepoint功能增强的结果。但是,这些功能是JET的一部分,这些增强功能可以在没有sharepoint的情况下使用。它们现在是DAO的一部分


编辑: 也许我将对此进行一点扩展,并试图澄清我们在这里有哪些相反的答案,我可以向您保证,在使用Access2007时,您最好使用DAO

产生混淆的原因是,如果在选择使用默认数据对象模型Access2007时查看工具引用,这里的问题是它不再称为DAO。它现在被称为ACE

当您在access 2007中使用DAO时,您会在工具参考中注意到,该参考并没有设置为DAO 3.6(该版本已被降级,现在也不再是MDAC下载的一部分)。您会注意到在ms access中使用DAO时的新引用被称为:

Microsoft office 12.0 access数据库引擎对象库

现在上面的内容有点满了,但是上面的内容对于使用DAO代替ADO的参考access 2007是正确的

换句话说,也许我们应该称之为道二

换言之,此数据引擎将继续得到增强,最有把握的是office 2010(office 14)的64位版本

因此,问题或困惑集中在当我们在access 2007中提到使用DAO时将使用什么术语。这里的混乱之处在于,文档甚至tools->reference都没有将其称为DAO

在Access2007中,如果您计划使用DAO,那么这意味着您设置了上述引用,而没有设置对DAO3.6的引用。不管怎样,现在开始使用ADO是完全没有意义的,因为它已经贬值了,而且新的DAO对象访问模型继续得到增强,并由微软投资

我希望这有助于澄清这里的困惑。虽然DAO/JET正在贬值,但新版本Access2007基于相同的代码基础,只是继续得到增强。因此,access中的新数据引擎可以被视为新的DAO对象模型

在这个问题上,我目前正在接受保密协议(NDA),但我可以非常肯定地告诉你,对于office(2010)的下一个版本,我们将再次看到大量的增强功能


因此,Access开发人员几乎一致认为,在开发Access应用程序和使用本机数据引擎时,这里的首选是使用DAO对象模型(但请记住,我们不再这样称呼它,我们称它为ACE)。

这取决于您的需要。预计这两种工具都不会很快消失

如果您没有ADO或DAO方面的经验,您会发现DAO要容易得多。因此,除非您需要ADO,否则请使用DAO


您添加了以下关键项:“我正在尝试将数据从外部源拉入Access DB。”此连接可能需要ADO

[根据记录,曾经是“Jet”的官方名称现在是“Access数据库引擎”。]

对于ACE(Access2007引擎.accdb格式)功能,它必须是ACEDAO


对于Jet 4.0功能,它必须是ADO classic

对于Jet 3.51和更早版本的功能,选择ADO或DAO。两者都有优点和缺点。Access数据库引擎的绝大多数功能对两者都是通用的;相互排斥的功能是有争议的。也许是一种生活方式的选择,但没什么大不了的。智能编码器使用b
CREATE TABLE Test (
   col1 CHAR(4) WITH COMPRESSION DEFAULT '0000' NOT NULL, 
   CHECK (NOT EXISTS (
                      SELECT T1.col1 
                        FROM Test AS T1 
                        WHERE T1.col1 <> '0000' 
                        GROUP 
                           BY T1.col1 
                       HAVING COUNT(*) > 1
                      ))
);