初识vb数据库开发之实例2(创建记录浏览窗口)

来源:互联网 发布:ubuntu怎么读 编辑:程序博客网 时间:2024/05/01 09:18

制作特点

使用ADO访问数据源-特点

1.通过ODBC数据源访问数据库,代表了如何建立关系数据库的ODBC数据源

2使用ADO RecordSet对象保存数据,执行update方法实时更新

3通过文本框和按钮事件完成数据显示和修改

 

设计分析

      其实使用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:计算机本地数据源,可被任何就有权限的用户使用

文件DSN:可以不是计算机本地数据源,可被安装了相同驱动程序的用户共享

:connection对象在建立数据源连接时,默认使用MSDASQL驱动程序,所以在连接字符串中只需指定数据源名称即可例如:

objCn.Open"DSN=myaccess"   '建立数据库连接

 

操作过程

 

1创建OODBC数据源

 

选择系统“开始”->程序  ->管理工具->数据源

单击添加按钮,选择Microsoft Access Driver

 

单击完成按钮,打开安装对话框

在数据源名文本框中输入“实例2DSN”作为新建数据源的名称,在说明文本框中输入“实例2Access数据源”,单击选择按钮

单击确定关闭对话框

如果要为ODBC数据源设置登录名称和密码等道济选项,可单击高级按钮,打开高级选项设置

如果使用Access数据库带有系统数据库,则应选择“ODBC Microsoft Access安装”对话框中的数据库,然后单击系统数据库按钮

如果要设置驱动程序的附加选项,包括页超时,缓冲区大小,独占区大小,独占和只读等,单击

ODBC Microsoft Access安装”对话框中的选项按钮,在对话框底部显示驱动序附加选项

单击确定按钮关闭安装对话框,新建的实例2DSN数据源显示在“ODBC数据源管理器”对话框列表中

单击确定按钮关闭“OBDC数据源管理器”对话框,完成数据源创建操作

 

设计记录浏览窗体

 注:最底下的那个文本框的locked的属性设置为true

 

建立ADO引用

工程->引用 选择Microsoft ActiveX Data Objects 2.5 Library

 

编写代码

Dim objrs As RecordsetDim objcn As ConnectionDim 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 IfEnd Sub'如果修改了数据,则设置isneedsave为truePrivate Sub txtPassword_Change()  isNeedSave = True   '在修改当前记录字段时,设置保存标识End SubPrivate 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