实例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