Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access使用Ado列出..
  • 设置或更改 ODBC 数据..
  • 使用 DAO 来设置和检索..
  • 更新访问权限 (Jet) ..
  • Access如何使用ADO..
  • [源创技巧]在ACCESS..

最新文章

  • 实验报告 --DAO与AD..
  • 用代码创建mdb格式的Ac..
  • 连接后台数据库提示 无法启..
  • 64位windows系统如..
  • Access的DAO准确获..
  • 利用代码自动创建ODBC源

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > DAO/链接表/ADO/ADP
DAO/链接表/ADO/ADP

ADO的IsolationLevel

来源:cww

请先叁照RDO 的IsolationLevel一文中,对Isolation Level的介绍,在这里,要提出的
是OpenLink Informix ODBC Driver的限制,使得我们只能用Client端的Scroll Cursor,
如果用Server端的Cursor,则要以adFrowardOnly的Cursor来开启。而Informix只有在
Server端的Cursor才能设定IsolationLevel,而且要在Transaction之下才能够有作用,
使得ADO Connection物件的IsolationLevel属性的设定不能起作用,而有其特殊的用法。
但在这里得再特别提出说明,建议只能设定成Dirty Read/Read Committed,不要设定成
Cursor Stability,经我的测试,使用Cursor Stability时,不像RDO有预期的效果
Dim WithEvents cn   As ADODB.Connection
Private WithEvents rs As ADODB.Recordset
Private qry As ADODB.Command
Private adoerr As ADODB.Errors

Private Sub Form_Load()
Dim connstr As String
Dim ans As Integer, errstr As String, sql As String

Set cn = New ADODB.Connection

connstr = "UID=cww;PWD=jjh5612;Database=cwwpf@eis;" _
        + "Driver={OpenLink Generic 32 Bit Driver};" _
        + "Host=192.168.0.61;" _
        + ";FetchBufferSize=30" _
        + ";NoLoginBox=Yes" _
        + ";Options=" _
        + ";Protocol=TCP/IP" _
        + ";ReadOnly=No" _
        + ";ServerOptions=" _
        + ";ServerType=Informix 7.2"
cn.ConnectionString = connstr
cn.Open
cn.BeginTrans
cn.Execute "SET ISOLATION  TO DIRTY READ" '这要在Transaction启动时用,且在
                                                'Recordset建立前设定
sql = "Select * from qppfa where case_no = 'E8701761' and seq between 1 and 80"

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.CursorLocation = adUseServer   '设定成Server端的Cursor
rs.Source = sql
rs.CacheSize = 1
rs.Open , cn, adOpenForwardOnly, adLockReadOnly, adCmdText
rs.MoveNext
cn.RollbackTrans
然而在SQL Server 6.5呢,则有不错的效果。特性如下:
1.在Connection物件开启前便设定IsolationLevel,如果是Repeatable Read,则在Recordset
  开启之前便得Begin Transaction。Read Committed/ Dirty Read可不必在Transaction中
  开启Recordset。
2.就算是Client端的Cursor,设定为Repeatable Read的IsolationLevel,也会使Recordset
  内的资料在其上有一个Share Lock,而不是只有 Server端的 Cursor会如此。然而,
  Read Committed/ Dirty Read是针对Server端的Cursor所设定的,也就是说,如果我们
  设定Read Committed而且是Client端的Cursor,而某一笔Data被其他Process修正了且未
  Committed,那麽我们Move到该笔时,并不会因而停下来,因为我们此时读取的是在Client
  端的资料。 
3.如果设定为 adOpenForwardOnly, adLockReadOnly的Recordset,则除非IsolationLevel
  设定为 Repeatable Read,否则会是Dirty Read的行为方式

4.Read UnCommitted或Dirty Read必需是在adOpenForwardOnly, adLockReadOnly时才能
  开启

Dim WithEvents cn   As ADODB.Connection
Private WithEvents rs As ADODB.Recordset
Private qry As ADODB.Command
Private adoerr As ADODB.Errors

Private Sub Form_Load()
Dim connstr As String
Dim ans As Integer, errstr As String, sql As String

Set cn = New ADODB.Connection
connstr = "Data Source=OPEN_VIEW;User=cww;Password=jjh5612;Initial Catalog=cwwtest"
cn.Provider = "SQLOLEDB"

cn.ConnectionString = connstr
cn.IsolationLevel = adXactRepeatableRead  '在此设定IsolationLevel
                                          '如果省略会以Read Committed的方式读取
cn.Open
cn.BeginTrans   'Repeatable Read必需under Transaction
                '如果不是Repeatable Read则这行可省略
sql = "Select * from qppfa where case_no = 'E8701761' and seq between 1 and 80 "
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.CursorLocation = adUseServer
rs.Source = sql
rs.Open , cn, adOpenKeyset, adLockOptimistic, adCmdText
rs.MoveNext
Debug.Print rs!case_no, rs!seq
rs!kind = "k"
rs.Update
cn.RollbackTrans
 
   
发布人:未知-cww  
分享到:
点击次数:  更新时间:2005-02-06 11:58:08  【打印此页】  【关闭】
上一条:使用ADO获取外部数据  下一条:如何使用ADO的FetchProgress和FetchComplete事件



相关文章

  • • 实验报告 --DAO与ADO效率之比较
  • • 用代码创建mdb格式的Access文件
  • • 连接后台数据库提示 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开 的解决办法
  • • 64位windows系统如何使用64位的ADO连接Accesss accdb数据库(ACE.OLEDB)
  • • Access的DAO准确获取记录集Recordset的记录数Recordcount
  • • 利用代码自动创建ODBC源
  • • 在打开Ado记录集之前尽量先判断记录集有否打开,如打开则先关闭之
  • • 快速获取Excel文件所有工作表表名

热门文章

  • [2006-11-20] ADO连接数据库字符串大全access数据库
  • [2009-04-15] vba的instr到sqlserver存储过程该怎么写?access数据库
  • [2003-12-12] ADO三大对象的属性、方法、事件及常数access数据库
  • [2003-12-30] 一组SQL Server身份验证管理子程序access数据库
  • [2005-02-04] 用ADO列出某个表的所有字段、索引access数据库
  • [2005-02-18] SQL语句集锦4access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn