实例与举一反三之比较(二)

实例2:使用ADO访问数据源(记录浏览窗口)

举一反三(1):

不同点:打开方式不同。

原例:

objCn.Open "DSN=实例2DSN" '建立数据库连接

本例:


strcn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/数据库/db1.mdb"
objCn.Open strcn '建立数据库连接


举一反三(2):

不同点:使用切断连接的RecordSet对象(原例为连接的RecordSet对象)

原例:

With objRS
.CursorLocation = adUseClient '指定游标位置
.CursorType = adOpenStatic '指定使用键集游标
.LockType = adLockOptimistic '指定锁定类型
.Open "SELECT * FROM 系统用户", objCn
End With

Private Sub DoSave()
If isNeedSave Then '判断当前记录是否被修改
objRS.Fields("用户名").Value = txtUserName
objRS.Fields("口令").Value = txtPassword
objRS.Update '执行更新操作
End If
End Sub

本例:

With objRS
.CursorLocation = adUseClient '指定游标位置
Set .ActiveConnection = objCn
.CursorType = adOpenStatic '指定使用键集游标
.LockType = adLockOptimistic '指定锁定类型
.Open "SELECT * FROM 系统用户"
Set .ActiveConnection = Nothing
End With


Private Sub DoSave()
If isNeedSave Then '判断当前记录是否被修改
objRS.Fields("用户名").Value = txtUserName
objRS.Fields("口令").Value = txtPassword
objCn.Open
Set objRS.ActiveConnection = objCn
objRS.Update '执行更新操作
Set objRS.ActiveConnection = Nothing
objCn.Close
End If
End Sub


举一反三(3):

不同点:临时表位置不同(原例为客户端临时表,本例为服务器端临时表,因为服务器端临时表AbsolutePosition属性值始终为-1,所以本例中需用变量来代替AbsolutePosition属性值)

原例:

txtMsg = objRS.AbsolutePosition & "/" & objRS.RecordCount

本例:

txtMsg = "1/" & objRS.RecordCount
RecordIndex = 1

objRS.MoveNext '使下一记录成为当前记录
RecordIndex = RecordIndex + 1
If objRS.EOF Then
objRS.MoveLast
RecordIndex = RecordIndex - 1
End If
txtMsg = RecordIndex & "/" & objRS.RecordCount

objRS.MovePrevious '使前一记录成为当前记录
RecordIndex = RecordIndex - 1
If objRS.BOF Then
objRS.MoveFirst
RecordIndex = RecordIndex + 1
End If
txtMsg = RecordIndex & "/" & objRS.RecordCount

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值