Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

[access查询]access中用ADO指定动态游标打开一个记录集,结果是静态的

时 间:2011-07-27 00:00:00
作 者:yjy   ID:14684  城市:济南
摘 要:在工作过程中发现在打开一个记录集时虽然指定的动态,得结果却是静态的(不可更新),在上网求解无果后沉下心来仔细研究检查与试验发现是以下代码的连接属性出了问题
正 文:

指定动态打开记录集,得到的是静态集

工作环境:Access2003

在工作过程中发现在打开一个记录集时虽然指定的动态,得结果却是静态的(不可更新),在上网求解无果后沉下心来仔细研究检查与试验发现是以下代码的连接属性出了问题,

Private Sub sy12()

Dim strsQl As String, rsbcjz As New ADODB.Recordset

strsQl = " select 出入库单0.编号 as  bh0 , 出入库单0.djrq, 出入库单1.chbh, 出入库单1.price, 出入库单1.je , 出入库单1.fpje,出入库单0.djhm " & _

   " FROM 出入库单0 inner  JOIN 出入库单1  ON 出入库单0.djhm=出入库单1.djhm" & _

   " Where 出入库单0.sflb=True  And 出入库单0.sflx<=2 "

Set rsConn = CurrentProject.AccessConnection

rsbcjz.Open strsQl, rsConn, adOpenDynamic, adLockOptimistic

  MsgBox rsbcjz.CursorType

End Sub

 

按以上代码,在消息框中提示为3(静态),与本意不符.

但是如果将accessconnection 换为connection后结果虽然为1 但记录集是动态的,可更新基本满足工作需要,在上网查询其区别资料如下:与大家共享

 

 

 

连接和 AccessConnection 属性之间的差异

CurrentProject.Connection 属性是在 Microsoft Access 2000 中引入的。它允许开发人员正在编写 ADO 代码在 Microsoft Access 可以共享相同的 ADO 连接所使用的 Microsoft Access 为当前打开的数据库 Jet SQL Server 数据库)。这可防止开发人员不必打开和管理单独的 ADO 连接,它们需要处理的当前已在 Access 中打开数据库时。

 

CurrentProject.AccessConnection 属性是在 Microsoft Access 2002 中引入的。像 CurrentProject.Connection 属性,它允许开发人员可以与 Microsoft Access 共享 ADO 连接。这些属性之间的时差取决于您使用 Access 项目 (也就是一个 SQL Server 数据库,ADP 或一个 Jet 数据库 (MDB) 文件,Microsoft Access 中的。

访问项目 ADPs

当使用的 Access 项目 (ADP) Microsoft Access 2002 或更高版本中 CurrentProject.ConnectionCurrentProject.AccessConnection 属性之间没有区别。这两个属性返回为一个服务提供商使用 SQL Server OLEDB 提供程序 (SQLOLEDB) 作为数据提供程序和 Microsoft Access 10 OLEDB 提供程序 (Microsoft.Access.OLEDB.10.0 ADO 连接。

 

注: Microsoft Access 10 OLEDB 提供程序是专为在 Microsoft Access 中使用已编写一个 OLEDB 服务提供程序。它不设计在 Microsoft Access 之外的应用程序中使用,它不支持在其他应用程序中。

 

下面是一个典型的连接字符串,它由这两个属性返回为一个 ADP 连接到 SQL Server 数据库:

Provider=Microsoft.Access.OLEDB.10.0;Persist 安全信息 = True 数据源 = MySQLServer 用户 ID = 密码 = < 强密码 >" 初始目录 = NorthwindCS 数据 Provider=SQLOLEDB.1

 

jet 数据库 (mdb)

当使用的 Jet 数据库在 Microsoft Access 2002 或更高版本中 CurrentProject.Connection CurrentProject.AccessConnection 属性将返回不同的 ADO 连接。当在 Jet 数据库中编写 ADO 代码时,您可以使用这两个属性。但是,在某些情况下,其中每个属性是非常有用。下面是每个属性返回在 Microsoft Access 2002 或更高版本中,并使用这些属性之前应考虑什么的细目分类。

 

 

CurrentProject.Connection

CurrentProject.Connection 属性的行为完全一样,在 Microsoft Access 2000 中。它返回 ADO 连接使用 Microsoft Jet OLEDB 提供程序 Microsoft.Jet.OLEDB.4.0 提供商)。例如对于下面是为 Jet 数据库正在使用 CurrentProject.Connection 属性返回一个典型的连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data = C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb

有几种方案中,您应使用 CurrentProject.Connection。如果您的应用程序要求的以下功能,您应使用 CurrentProject.Connection 返回 ADO 连接。

jet 和同步复制对象 (JRO) 代码。

Microsoft ADO 扩展性的 DDL 和安全性 ADOX) 代码。

ADO 代码需要索引支持 ADO 记录集的如 Seek 方法。

Microsoft Access 10 OLEDB 提供程序不能完全支持必需的这些功能能够正常所需的 OLEDB 接口。如果应用程序所需这些功能,则必须使用由 CurrentProject.Connection 属性返回,Jet OLEDB 提供程序创建的连接。

CurrentProject.AccessConnection

CurrentProject.AccessConnection 属性将返回一个 ADO 连接,它使用两个 OLEDB 提供程序。它使用 Jet OLEDB 提供程序 (Microsoft.Jet.OLEDB.4.0) 作为数据提供程序和新的 Microsoft Access 10 OLEDB 提供程序 (Microsoft.Access.OLEDB.10.0 作为服务提供商。例如对于下面是为 Jet 数据库正在使用 CurrentProject.Connection 属性返回一个典型的连接字符串:

Provider=Microsoft.Access.OLEDB.10.0;Data = C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb;User ID = 管理 数据 Provider=Microsoft.Jet.OLEDB.4.0

没有使用 CurrentProject.AccessConnection 属性的一个主要优点。如果您要创建将被绑定到 Access 窗体的 ADO 记录集,则使用 CurrentProject.AccessConnectionMicrosoft 建议。这是因为窗体将不能更新,除非它使用 Microsoft Access 10 OLEDB 提供程序即使创建记录集是可在 ADO 中更新。



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助