背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3390.html    注册17xie 一起来写书 实现您的出书梦想!

1)在窗体上添加6个标签Label1Label65个文本框Text1Text5,一个由4个命令按钮组成的按钮组Command1(0)Command1(3)1ADO控件Adodc1,适当设置各控件的大小及位置。

2)设置5个标签的Caption属性分别为【学号】、【姓名】、【班级】、【年龄】和【性别】,Label6Caption为空,所有标签的Autosize属性设置为True。设置4个命令按钮的Caption属性分别为【添加】、【删除】、【更新】和【退出】。

3)在属性窗口中单击Adodc1ConnectionString属性右边的 按钮,在打开的【属性页】对话框中选择【使用连接字符串】单选钮,然后单击【生成】按钮,如图7-29所示。本例连接的是Access数据库,因此选择【Microsoft Jet 4.0 OLE DB Provider】,单击【下一步】按钮,如图7-30所示,选择一个数据库,单击【测试连接】按钮测试连通性,成功后单击【确定】按钮即可,如图7-31所示。

 

7-29  【属性页】对话框                     7-30  【数据链接属性】对话框

7-31  选择数据库文件并检测是否连通

4)设置Adodc1RecordSource属性为【学生基本资料】表。5个文本框的DataSource属性均设置为Adodc1,并将DataField属性分别与【学号】、【姓名】、【班级】、【年龄】和【性别】绑定。

5)打开代码编辑器,输入以下代码:

Private Sub Command1_Click(Index As Integer)

    Dim a As Integer

    Select Case Index

        Case 0

            Adodc1.Recordset.MoveLast '在数据库的尾部添加新记录

            Adodc1.Recordset.AddNew

            Text1.SetFocus

            Label6.Caption = "在“学号”处按Ese放弃,在“性别”处按回车键继续添加"

        Case 1

            a = MsgBox("当前记录将被删除,确定吗?", 4 + 48, "警告")

            If a = vbNo Then Exit Sub

                If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Or Text5.Text = "" Then

                   MsgBox "非法操作", vbOKOnly + vbInformation, "警告"

                   Adodc1.Recordset.CancelUpdate

                   Adodc1.Recordset.MoveFirst

                Else

                    Adodc1.Recordset.Delete

                    Adodc1.Recordset.MoveLast

                    Adodc1.Recordset.MoveFirst

                End If

        Case 2 '将缓存中已被更新的数据写入数据表

            If Text1.Text = "" And Text2.Text = "" And Text3.Text = "" And Text4.Text = "" And Text5.Text = "" Then

                MsgBox "不能保存空记录", vbExclamation, "警告"

                Text1.SetFocus

                Exit Sub

            Else

                Adodc1.Recordset.UpdateBatch '保存添加的新记录或修改后的所有记录

                Adodc1.Recordset.MoveFirst '将记录指针移动到第一条记录处

                MsgBox "所有修改和添加已被保存到数据库中", vbInformation, "提示"

                Label6.Caption = ""

            End If

        Case 3

            End

    End Select

End Sub

 

Private Sub Text1_Change()

    Dim n As Integer, sum As Integer

    n = Adodc1.Recordset.AbsolutePosition '变量n用于存放当前的记录号

    sum = Adodc1.Recordset.RecordCount '变量sum用于存放记录总数

    Adodc1.Caption = "" & n & "条记录" & "/" & "" & sum & "条记录"

End Sub

 

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)

    If KeyCode = vbKeyEscape Then

        Adodc1.Recordset.CancelUpdate '取消在调用Update方法前对当前记录或新记录所做的任何更改

        Adodc1.Recordset.MoveFirst

        Label6.Caption = ""

    End If

End Sub

 

Private Sub Text5_KeyUp(KeyCode As Integer, Shift As Integer)

    If KeyCode = 13 Then

        If Text1.Text = "" And Text2.Text = "" And Text3.Text = "" And Text4.Text = "" And Text5.Text = "" Then

            MsgBox "不能保存空记录", vbExclamation, "警告"

            Text1.SetFocus

            Exit Sub

        Else

            Adodc1.Recordset.UpdateBatch '保存添加的新记录或修改后的所有记录内容

        End If

        Adodc1.Recordset.AddNew

        Text1.SetFocus

    End If

End Sub

7.5  项目指导

该窗体用到的主要控件情况如下:

上面左边是教师主表(js)的显示用数据网格控件DataGrid1;上面右边是课程子表(kc)的显示用数据网格控件DataGrid2;下面左边是单记录显示区,含有8个文本框Text1Text8,用于对应显示8个字段的值;下面右边是命令按钮区,控制完成各功能的操作,命令按钮有(括号中是命令按钮名称):插入(cmdinsert)、删除(cmddelete)、修改(cmdupdate)、随机查询(cmdquery)、连接查询(cmdquery2)、汇总统计(cmdtotal)、第一(cmdfirst)、上一(cmdprior)、下一(cmdnext)、末一(cmdlast)、打印(cmdprint)\退出(cmdexit)等。

下面是带注释的全部程序代码。

标准模块jxgl.bas文件的内容为:

Public Function ConnectString() As String  '返回连接数据库的字符串函数

    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=js.mdb"

End Function

' 动态执行SQL查询命令,并返回记录集的通用函数,窗体程序中广泛调用的函数。

Public Function RunSelect(ByVal SQL _

    As String, MsgS As String) As ADODB.Recordset  '函数名定义为记录集对象类型

    Dim cn As ADODB.Connection

    Dim rs As ADODB.Recordset

    On Error GoTo RunSelect_Error

    Set cn = New ADODB.Connection

    cn.Open ConnectString()

    Set rs = New ADODB.Recordset

    rs.CursorLocation = adUseClient

    rs.Open Trim$(SQL), cn, adOpenKeyset ' 利用记录集的OPEN方法,返回查询结果

    Set RunSelect = rs  ' 局部记录集对象赋给函数名

    MsgS = "查询到" & rs.RecordCount & " 条记录 "

RunSelect_Exit:

    Set rs = Nothing

    Set cn = Nothing

    Exit Function

RunSelect_Error:

    MsgS = "查询错误: " & Err.Description

    Resume RunSelect_Exit

End Function

 

Public Function RunSQL(ByVal SQL As String,MsgS As String)'直接执行更新命令函数。

    Dim cn As Connection

    On Error GoTo RunSQL_Error

    Set cn = New Connection

    cn.Open ConnectString()

    cn.Execute SQL '利用连接对象的Execute方法,直接递交并执行更新类SQL命令

    MsgS = SQL & " successful."

    Set cn = Nothing

    Exit Function

RunSQL_Error:

    MsgS = "查询错误: " & Err.Description

    Set cn = Nothing

End Function

 

Form1窗体的完整代码如下:

Dim cn As New ADODB.Connection  ' 窗体私有变量的定义

Dim mrc As ADODB.Recordset, mrc2 As ADODB.Recordset

Dim txtSQL As String

Dim MsgText As String

Private Sub cmdExit_Click()

    Unload Me

End Sub

 

Private Sub Form_Load()     ' 装载窗体时显示全部教师记录

    Set mrc = RunSelect("select * from js", MsgText) ' 调用RunSelect函数返回记录集给mrc

    Set DataGrid1.DataSource = mrc

    If mrc.RecordCount >= 1 Then

       Call DataGrid1_Click  '调用DataGrid1单击事件,刷新单记录区的字段值,保持与网格控件中记录的一直,下同。

    End If

End Sub

 

Private Sub cmdfirst_Click()

    If mrc.RecordCount >= 1 Then

       mrc.MoveFirst  '记录集指针指向第一条记录

       Call DataGrid1_Click

    End If

End Sub

 

Private Sub cmdlast_Click()

    If mrc.RecordCount >= 1 Then

        mrc.MoveLast  '记录集指针指向最后一条记录

        Call DataGrid1_Click

    End If

End Sub

 

Private Sub cmdprior_Click()

    If mrc.BOF = True Then

       MsgBox "已到头!"


字数:9444    最后更新:1年以前 [09-06 03:35]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第七章  [后一页]:第七章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号