VB数据库连接之四(控件连接)

1.添加Micrsoft DataGrid Control 6.0(OLEDB)控件

2.设计窗体

3.代码实现

Option Explicit
Dim objCn As New Connection, objRs As New Recordset, intPage As Integer

Public Sub ShowData(ByVal intPage As Integer)
'实现分页显示记录功能
Dim intPageCount As Integer, intRecord As Integer
'创建一个局部Recordset对象保存objRs当前记录
Dim objDataSource As New Recordset
For intRecord = 0 To objRs.Fields.Count - 1
objDataSource.Fields.Append objRs.Fields(intRecord).Name, adVarChar, _
objRs.Fields(intRecord).DefinedSize
Next
objDataSource.Open '打开局部Recordset对象
objRs.PageSize = Val(txtPageSize) '重新设置objRs每页显示的记录条数
objRs.AbsolutePage = intPage '重新设置objRs的当前记录页
For intRecord = 1 To objRs.PageSize '将当前记录页中数据写入到objDataSource中
objDataSource.AddNew
objDataSource!用户名 = objRs!用户名
objDataSource!口令 = objRs!口令
objDataSource!身份 = objRs!身份
objRs.MoveNext
If objRs.EOF Then Exit For
Next
Set DataGrid1.DataSource = objDataSource '设置为数据网格的数据源
txtPageMsg = intPage & "/" & objRs.PageCount '刷新当前记录页信息
End Sub


Private Sub cmdNext_Click()
If intPage <> objRs.PageCount Then
intPage = intPage + 1
ShowData (intPage)
End If
End Sub

Private Sub cmdPre_Click()
If intPage <> 1 Then
intPage = intPage - 1
ShowData (intPage)
End If
End Sub

Private Sub Form_Load()
Dim strSQL As String, strCn As String
txtPageSize = "5"
intPage = 1
'建立数据库连接
strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & _
"Data Source=" & App.Path & "\db1.mdb"
objCn.ConnectionString = strCn
objCn.Open
With objRs '创建客户端的记录集
.CursorLocation = adUseClient '指定使用客户端光标
.CursorType = adOpenStatic '指定使用静态光标
.Open "系统用户", objCn, adOpenStatic, adLockReadOnly
End With
ShowData (intPage) '显示当前记录页
End Sub

Private Sub Form_Unload(Cancel As Integer)
objCn.Close '关闭数据库连接
Set objRs = Nothing '释放recordset对象
Set objCn = Nothing '释放connection对象
End Sub


Private Sub txtPageSize_KeyPress(KeyAscii As Integer)
Dim bOK As Boolean
'如果按的是回车键,并且记录页大小不是空值,则刷新当前记录
If KeyAscii = vbKeyReturn And Trim(txtPageSize) <> "" Then
intPage = 1
ShowData (intPage)
ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then
'检验当前设置的记录页大小是否在有效范围之内
bOK = Val(txtPageSize & Chr(KeyAscii)) < 1 Or Val(txtPageSize & Chr(KeyAscii)) > 10
If bOK Then
MsgBox "每页显示记录范围为[1,10]"
KeyAscii = 0 '设置keyascii为0,取消等钱输入数字
End If
End If
End Sub

表格控件总览:   在VB开发环境中,表格控件在界面开发元素中占有重要的地位。它不仅有外观整洁、表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信息时代的到来,它的应用将更加的广泛。    那么在VB平台下,如何操作这一功能强大的控件元素呢?事实上我们知道,VB平台下面的表格控件是相当丰富的,总结下来提供了4种类型:Microsoft Data Bound grid ControlMicrosoft Datagrid ControlMicrosoft Flexgrid ControlMicrosoft Hierarchial Flexgrid Control. 这四种表格各有其特点,下面我们一一讨论。   1. Microsoft Data Bound grid Control   此控件主要用于数据绑定(可以不绑定,但是因为不提供对单个cell的控制支持,所以实际上这样做是不经济的)。具体说来,就是数据源比较固定的情况下可以使用这种控件。   具体使用方法是设定此控件的datasource属性,就可以不用编写任何代码就可以显示该数据源所指向的记录数据。比如可以将datasource设置为一个data控件,而data控件又指向数据库"成绩"的 一个"语文"表,那么当程序运行时,它就自动显示此"语文"表的数据。 基本步骤如下: 1、向工程上添加Microsoft Data Bound Grid Control控件,即DBGrid控件。 2、在窗体上添加DBGrid控件DBGrid1和Data控件Data1。 3、设置Data1的DatabaseName属性为你要看的数据库的名字。 4、设置Data1的RecordSource属性为表的名字或合法的SQL Select语句。 5、设置DBGrid1的DataSource属性为Data1。   从上面的分析看得出来,这个控件虽然操作方便,但是它也有局限性,就是不能对显示的数据进行灵活的控制操作,比如有些数据允许用户修改,有些数据却不允许用户修改,而此控件却只能提供全部数据源的原子操作:即要么全部允许修改,要么就全部不允许。还有另外此控件也不提供对单个单元格(cell)进行操作,所以提供不了更为个性化的界面风格。   2. Microsoft Datagrid Control   此控件跟前面介绍的Data Bound grid Control控件很相似,也是主要进行绑定操作,而缺点和Data Bound grid Control完全一样。但是它跟Data Bound grid Control不一样的是其数据源的驱动引擎只能是OLEDB形式的,不能是DAO,比如就可以使用ADO数据控件,不能使用DATA控件。而Data Bound grid Control却刚好和它相反,这一点在开发中一定要注意。   3. Microsoft Flexgrid ControlMicrosoft Hierarchial Flexgrid Control.   这里重点介绍这两种控件,因为在实际开发中,这两种控件应用的场合更多一些,它不仅能够反映数据,而且也能把数据的修改信息反映到数据库中去,所以弥补了上述两种控件的不足。   如果数据不需要修改,那么可以进行绑定操作,其方法跟前面介绍的完全一样,就是通过设置DataSource属性来完成数据的显示工作。但是实际开发中,需要对整个表格控件更为灵活的显示控制。   在给出例程之前,有必要对这一控件进行比较详尽的认识:这种控件允许将文本或者图象放置于每个单元格之中,控件的Row与Col属性允许用户在代码中指定当前行和列,当然也可通过操作鼠标和键盘来改变这两个属性,而text属性指明当前单元格的文本。如果单元格的文本太长而不能完全显示出来的话,可以通过将WordWrap属性设置为true来达到显示的目的。下面将比较重要的属性小结如下:   DataSource---------用来指定需要绑定的数据源,比如data控件。   Cellpicture----------用来设定当前单元格的图象,便于显示该图象。此属性不能在设计时使用。   Col,Row---------------设定当前列和当前行,注意它们均是从0开始的,如果同时设定它们,可以指定当前的单元格。设计时也不能使用。   Cols,Rows---------------设置表格控件总的列数和行数。   Hwnd---------------表格句柄,可以结合Windows API对表格控件进行更高级的控制。   Text---------------指定当前的单元格的文本内容。   TextMatrix(i,j)-------此属性比较重要,它用来指定第I行和第j列所确定的单元格的文本内容。它等价于下面的代码: MSHFlexGrid1.Rows =i MSHFlexGrid1.Cols =j MSHFlexGrid1.Text =指定的字符串   WordWrap-------为ture时可以在当前单元格换行显示,否则如果要显示的字符的长度超过列宽,那么就不能显示完全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值