制作特点
使用ADO访问数据源-特点
1.通过ODBC数据源访问数据库,代表了如何建立关系数据库的ODBC数据源
2使用ADO RecordSet对象保存数据,执行update方法实时更新
设计分析
其实使用ADO可以直接翻跟Access 2000数据库(系统登录),本势力通过ODBC数据源访问期末地就是要说明如何建立和访问关系数据库的ODBC数据源
使用ADO更新数据源的方法
1 将数据检索保存到RecordSet对象中,用Update方法进行更新。如果使用断开连接的Recordset对象,则用UpdateBatch方法进行更新
2 用Command对象执行sql数据更新命令,这是不需要使用RecordSet对象或使用其他方法将数据检索到本地计算机
技术要领
RecordSet的Locktype 属性用于指定记录锁类型
adLockReadOnly:默认值,只读,无法更新数据
adLockPessimistic:保守式记录锁定,在编辑记录时立即锁定数据源的记录
adLockOptimistic:开放式记录锁定,在执行Update方法时锁定记录
adLockBatchOptimistic:开放式批更新,表示RecordSet用UpdateBatch方法更新多个记录,即在执行UpdateBatch方法时锁定记录
Recordset 的临时表位置(CursorLocation属性用于指定临时表位置)可设置为
adUseClient :客户端临时表,可以提供重新排序和使用索引查找记录等特有功能
adUseServer:服务器端临时表 ,由服务器端的被检索的数据源维护
注:ADO中的RecordSet默认为服务器端的单向只读临时表
浏览RecordSet中的记录
浏览RecordSet中的记录需要两个步骤。首先,定位当前记录,RecordSet打开时第一个记录为当前记录,然后用Field对象获得当前记录的各个数据列
RecordSet对象可用下列5个方法定位当前记录
1.MoveFirst:使记录指针指向第一个记录
2.MoveNext:使用记录指针指向下一个记录
3.MovePrevIoUs:使记录指针指向前一个记录
4.MoveLast:使记录指针指向最后一个记录
5.Move n:使记录指针指向从当前记录算起的第n个记录
注:在浏览RecordSet时,Bof属相为true表示记录指针指向第一个记录之前,Eof属性为true时表示记录指针指向最后一个记录之后。这两个属性还可以用于测试RecordSet是否为空。
ODBC数据源类型
系统DSN:计算机本地数据源,可被任何就有权限的用户使用
文件DSN:可以不是计算机本地数据源,可被安装了相同驱动程序的用户共享
注:connection对象在建立数据源连接时,默认使用MSDAsql驱动程序,所以在连接字符串中只需指定数据源名称即可例如:
objCn.Open"DSN=myaccess" '建立数据库连接
操作过程
1创建OODBC数据源
选择系统“开始”->程序 ->管理工具->数据源
单击添加按钮,选择Microsoft Access Driver
单击完成按钮,打开安装对话框
在数据源名文本框中输入“实例2DSN”作为新建数据源的名称,在说明文本框中输入“实例2的Access数据源”,单击选择按钮
单击确定关闭对话框
如果要为ODBC数据源设置登录名称和密码等道济选项,可单击高级按钮,打开高级选项设置
如果使用Access数据库带有系统数据库,则应选择“ODBC Microsoft Access安装”对话框中的数据库,然后单击系统数据库按钮
如果要设置驱动程序的附加选项,包括页超时,缓冲区大小,独占区大小,独占和只读等,单击
“ODBC Microsoft Access安装”对话框中的选项按钮,在对话框底部显示驱动序附加选项
单击确定按钮关闭安装对话框,新建的实例2DSN数据源显示在“ODBC数据源管理器”对话框列表中
单击确定按钮关闭“OBDC数据源管理器”对话框,完成数据源创建操作
设计记录浏览窗体
注:最底下的那个文本框的locked的属性设置为true
建立ADO引用
工程->引用 选择Microsoft ActiveX Data Objects 2.5 Library
编写代码
Dim objrs As Recordset Dim objcn As Connection Dim isNeedSave As Boolean '用于标识是否需要执行保存操作 '添加前一记录的代码。用户单击按按钮时先保存当前记录的修改,然后使前一个记录为当前记录 Private Sub Command1_Click() DoSave objrs.MovePrevIoUs If objrs.BOF Then objrs.MoveFirst '显示当前记录 txtUserName = objrs.Fields("用户名").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub '添加后一记录的代码。用户单击按按钮时先保存当前记录的修改,然后使下一个记录为当前记录 Private Sub Command2_Click() DoSave objrs.MoveNext If objrs.EOF Then objrs.MoveLast '显示当前记录 txtUserName = objrs.Fields("用户名").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub '创建数据源连接,并检索数据,将检索到的第一个记录显示在窗体中 Private Sub Form_Load() Set objcn = New Connection '实例化connection对象 '连接数据库 objcn.Open "DSN= 实例2DSN" Set objrs = New Recordset '创建客户端的记录集 With objrs .CursorLocation = adUseClient '指定临时表位置 .CursorType = adOpenDynamic '指定使用键集游标 .LockType = adLockOptimistic '指定锁定类型 .Open "SELECT*FROM 系统用户",objcn End With '显示第一个记录集 txtUserName = objrs.Fields("用户名").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub '定义一个过程执行数据更新操作 Private Sub DoSave() If isNeedSave Then objrs.Fields("用户名").Value = txtUserName objrs.Fields("口令").Value = txtPassword objrs.Update '执行更新操作 End If End Sub '如果修改了数据,则设置isneedsave为true Private Sub txtPassword_Change() isNeedSave = True '在修改当前记录字段时,设置保存标识 End Sub Private Sub txtUserName_Change() isNeedSave = True '在修改当前记录字段时,设置保存标识 End Sub 'Unload 事件代码,在窗体关闭时释放数据库的连接和ADO对象 Private Sub From_Unload(Cancel As Integer) Set objrs = Nothing '释放记录集对象 objcn.Close '释放数据库连接 Set objcn = Nothing '释放连接对象 End Sub