Scripting 无线HTA中的DAO与ADO

Scripting 无线HTA中的DAO与ADO,scripting,ado,wireless,dao,hta,Scripting,Ado,Wireless,Dao,Hta,我已经编写了一个小型(8-10台笔记本电脑)销售点系统,它运行在无线网络上,作为一个HTA,可以读取/写入位于网络共享上的访问MDB。 我需要使用ADO-GetString,DAO不提供用户花名册。 我还需要使用DAO——MDB不能用ADO压缩 我知道: 1) 如果数据库后端不是Access MDB,我应该使用ADO。 2) 如果后端是MDB,但我想在某个时候升级到SQL Server,我应该使用ADO。 3) 在Access应用程序或任何其他VBA/VB应用程序中,我应该使用DAO,因为ADO

我已经编写了一个小型(8-10台笔记本电脑)销售点系统,它运行在无线网络上,作为一个HTA,可以读取/写入位于网络共享上的访问MDB。
我需要使用ADO-GetString,DAO不提供用户花名册。
我还需要使用DAO——MDB不能用ADO压缩

我知道:
1) 如果数据库后端不是Access MDB,我应该使用ADO。
2) 如果后端是MDB,但我想在某个时候升级到SQL Server,我应该使用ADO。
3) 在Access应用程序或任何其他VBA/VB应用程序中,我应该使用DAO,因为ADO必须经过Jet OLE DB提供程序的转换层,而DAO更直接。
4) VBScript/JScript允许我使用DAO或ADO

问题分为两部分:
1) 在这个软件环境(HTA/脚本)中,使用ADO比使用DAO更好吗?
2) ADO是否提供了任何好处,因为HTA是通过无线网络进行读/写的

  • 如果您需要DAO的唯一原因是压缩数据库,那么可以使用DAO来压缩数据库,并使用ADO来压缩数据库。您不仅限于使用ADO或DAO

  • 使用ADO的最大好处是,到时候可以更容易地移动到SQL Server Express。您应该尽早这样做,因为SQLServerExpress提供了MSAccess数据库的所有优点,但没有缺点。SQL Server Express是免费的,它可以轻松处理您建议的系统大小


  • Access数据库在多用户环境中很容易损坏,尤其是当涉及无线网络时。如果您担心失去使用MSAccess的好处,您仍然可以使用链接表连接到SQL Server,并以这种方式使用SQL Server Express数据库。

    如果您可以使用具有Access的HTA应用程序而不是性能更高的平台,我想说您应该使用最简单的api。在您的情况下,瓶颈永远不会是数据库访问的抽象。不过,DAO确实很旧。

    您也可以使用JRO压缩MDB文件。这将包含在任何最新版本的MDAC中,默认情况下安装在XP和更高版本的系统上。无需安装通道

    要回答您的具体问题:

    1) 我选择ADO仅仅是因为它更为流行,并且相同的API可以用于其他类型的脚本,如LDAP/ActiveDirectory访问、读取文件系统文件夹、读取MAPI邮件,以及处理其他类型的半结构化文本文件,如定宽文本和CSV。对于HTA编程环境来说,这并不是特别好,但是学习一种更广泛适用的API可能会更好。我还认为它是一个更容易使用的API,但我开始使用它,直到后来才开始使用一些较旧的DAO项目


    2) ADO提供的一个可能的好处是断开连接的记录集,这可能有一个优势,或者至少在您的无线网络设置中建议了一些架构替代方案。您可以打开一个记录集,然后断开它的连接,这样您仍然可以处理内存中的数据,但不必让数据库连接保持打开状态。然后,您可以稍后重新连接并更新数据库。另外,通过将表管理为本地XML或ADTG文件,您可以以完全断开连接的方式工作。

    您可能会强迫DAO使用VBScript,但这是一种奇怪的配对。一般来说,ADO是最有意义的


    ADO的另一个优点是它支持RDS而不是DCOM或HTTP。这可以用来克服Jet MDB通过文件共享使用的许多限制,例如不可靠的网络和客户端可能导致的损坏。它还减少了网络上的流量,提高了性能。此外,它还提供了一个中间层,业务对象可以在其中“生存”,所有这些都可以在适用的情况下使用COM+进行调解

    当然,您不再可以选择使用简单的P2P网络和文件共享来托管数据库。RDS需要一台服务器来承载进程并运行Jet引擎,而Jet引擎不再需要在每个客户端系统上运行。这意味着您可以使用在服务器上运行的Jet存储过程,从而卸载更多的客户端处理和网络流量。虽然不像T-SQL或其他替代方案那样复杂,但这种ADO/JET4.0OLEDB提供程序专有技术提供了使用DAO无法获得的实际好处

    RDS可以屏蔽大部分使用断开连接的记录集的过程,从而简化客户端代码。它在发动机罩下使用ADTG,这正是为此目的而开发和优化的

    但是,使用RDS比简单的文件共享需要更多的基础设施和专业知识。您不妨研究一下SQL Server的低端版本



    一般来说,我建议使用该实用程序来压缩和修复DAO或JRO。它有许多优点。

    HTA==HTML应用程序?我没有使用VBScript进行测试,但我发现在启动应用程序时,调用JScript ActiveXObject函数产生的开销比任何其他函数都要大。DAO在这方面显然是一个胜利者,因为它只需要对ActiveXObject进行一次调用。需要注意的一点是,使用DAO执行的编辑不会立即在ADO连接上可见。在通过GetString读取之前,我需要通过DAO刷新Jet缓存。从我对SQL Server Express的了解来看,它是不可移植的-它需要安装在特定的机器上,并且不能简单地复制和粘贴到其他位置。移动数据库的能力是应用程序的一项要求吗?是的,是的。这也是我们使用HTA的原因之一——因为我无法提前告诉我们将使用哪个操作系统或哪个版本的Access。(该计划主要用于以批发价格销售商品,wh