保定大世界:第14章 编辑SQL Server数据库数据

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 07:31:08

第14章 编辑SQL Server数据库数据

编辑SQL Server数据库数据,就是往数据库添加新记录、修改更新记录和删除不需要的记录。我们既可以通过企业管理器编辑数据库数据,也可以通过Excel VBA编制程序实现编辑数据的自动化。

14.1 添加新记录

添加新记录可以使用SQL的INSERT INTO语句,其语法格式如下:

INSERT INTO 数据表名(字段1,字段2,……) VALUES(值1,值2,……)

如果要输入全部字段数据,那么就可以省略字段列表,即:

INSERT INTO 数据表名 VALUES(值1,值2,……)

在VALUES参数列表中,各个值要与前面的字段一一对应。如果字段的数据类型是文本型或日期时间型,则参数值要用单引号“‘”括赶来;如果字段的数据类型是数值型,则参数值直接为数字。

14.1.1 一次添加一条记录

【例14-1】下面的例子是向数据表“成绩”中添加一条记录,该条记录的各个字段数据如下:

学号   A01200601

课程代码  200601007

成绩      85

学期      2006学年第一学期

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—1()

  Dim cnn As New ADODB.Connection

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

   If MsgBox("下面将向数据表<成绩>添加新记录!是否添加?", _

     vbQuestion + vbYesNo) = vbYes Then

        SQL = " insert into 成绩(学号,课程代码,成绩,学期) " _

             &"values('A01200601','200601007',85,'2006学年第一学期')"

        cnn.ExecuteSQL

        MsgBox "数据添加成功!", vbInformation

   Else

        MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关机记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

在这个程序中,由于是添加数据表的所有字段数据,因此SQL语句还简化为下面的情形:

SQL = “insertinto 成绩 values(‘A01200601’,‘200601007’,85,‘2006学年第一学期’)”

14.1.2 一次添加多条记录

在很多情况下,可能要从其他的数据表中查询出符合条件的记录,然后将这些记录输入到当前的数据表中,这就是一次输入多条记录的情况。在此情况下,可以使用追加查询的方法来输入数据。

如果是单独给定了要添加的记录数据,我们可以将这些数据保存到数组中,然后通过循环数组的方式向数据表中逐条添加记录。

【例14-2】下面的例子是向数据表“成绩”中添加3条记录,其各个字段数据如下:

学号

课程代码

成绩

学期

A01200601

200601007

85

2006学年第一学期

A01200602

200601007

92

2006学年第一学期

A01200603

200601007

69

2006学年第一学期

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—2()

  Dim cnn As New ADODB.Connection

  Dim myColumn As Variant, myValue1 As Variant, myValue2 As Variant

  Dim myValue3 As Variant, myValue4 As Variant

  Dim i As Integer

  Dim myStr As String

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

   If MsgBox("下面将向数据表<成绩>添加新记录!是否添加?", _

     vbQuestion + vbYesNo) = vbYes Then

     myColumn = "(学号,课程代码,成绩,学期)”"

     myValue1 = Array("A01200601", "A01200602","A01200603")

     myValue2 = Array("200601004", "200601004","200601007")

     myValue3 = Array(85, 92, 69)

     myValue4 = Array("2006学年第一学期","2006学年第一学期", "2006学年第一学期")

     For i = 0 To UBound(myValue1)

         myStr = "values("

         myStr = myStr & "'" & myValue1(i) &"','" & myValue2(i) _

               & "'," &myValue3(i) & ",'" & myValue4(i) & "')"

         SQL = "insert into 成绩 " & myColumn & " "& myStr

         cnn.Execute SQL

     Next i

     MsgBox "数据添加成功!", vbInformation

   Else

      MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

14.1.3 将工作表的数据添加到数据库

将工作表的数据添加到数据库,可以采用【例14-2】的方法,循环工作表的各行数据并向数据表添加数据。

【例14-3】下面的例子是将工作表的数据添加到数据表“成绩”中,工作表数据如图14-1所示。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—3()

  Dim cnn As New ADODB.Connection

  Dim i As Integer

  Dim myStr As String

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

    If MsgBox("下面将把工作表的数据添加到数据表<成绩>!是否添加?", _

     vbQuestion + vbYesNo) = vbYes Then

     myColumn = "(学号,课程代码,成绩,学期)”"

     For i = 2 To Range("A65536").End(xlUp).Row

         myStr = "values("

         myStr = myStr & "'" & Cells(i, 1) &"','" & Cells(i, 2) _

               & "'," &Cells(i, 3) & ",'" & Cells(i, 4) & "')"

         SQL = "insert into 成绩 " & myColumn & " "& myStr

         cnn.Execute SQL

     Next i

     MsgBox "数据添加成功!", vbInformation

   Else

      MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

14.1.4 如何为某字段插入空值(NULL)

空值是指字段的数据值未知,既不是0,也不是零长度的字符串(零长度的字符串看起来好象没有数据)。在企业管理器中输入空值需要按【Ctrl+0】组合键,此时该字段数据显示为“”,但当光标移到该字段时,“”就消失了。

为某字段插入空值,就是直接将该字段值设置为“”。

【例14-4】下面的例子是往数据表“研究生”中添加一个新记录,数据如下所示:

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—4()

  Dim cnn As New ADODB.Connection

  Dim rs As New ADODB.Recordset

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

   If MsgBox("下面将向数据表<成绩>添加新记录!是否添加?", _

     vbQuestion + vbYesNo) = vbYes Then

         SQL = "insert into 研究生 values('A04200603','祝丽萍','女' " _

              & " '2007-9-1','A01200602',null,'A03001')"

         cnn.Execute SQL

         MsgBox "数据添加成功!", vbInformation

   Else

         MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

运行上面的程序,然后打开数据表,可以看到在数据表中添加了这个新记录,它的“研究方向”字段是一个空值NULL,如图14-2所示。

14.2 修改更新记录

有时候可能需要修改数据库中的数据。此时,就需要用到SQL的UPDATE语句,其语法结构如下:

UPDATE 数据表名 SET 字段1=新值1,字段2=新值2,……WHERE 条件

14.2.1 一次修改一条记录

【例14-5】下面的例子是将数据表“研究生”中的学号为“A02200601”的“研究方向”由目前的空值改为“证券投资”。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—5()

  Dim cnn As New ADODB.Connection

  Dim rs As New ADODB.Recordset

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

   If MsgBox("下面将修改数据表<研究生>的记录!是否修改?", _

     vbQuestion + vbYesNo) = vbYes Then

         SQL = "update 研究生 set 研究方向=‘证券投资’ where 学号=‘A02200601’"

         cnn.Execute SQL

         MsgBox "数据添加成功!", vbInformation

   Else

         MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

运行上面的程序,然后打开数据表,可以看到学号为“A02200601”的“研究方向”由目前的空值改为“证券投资”,如图14-3所示。

14.2.2 一次修改多条记录

在UPDATE语句中,使用WHERE子句,我们可以一次修改多个满足条件的记录。

【例14-6】下面的例子是将数据表“成绩”中的选修编码为“200601003”课程的分数都加5分。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—6()

  Dim cnn As New ADODB.Connection

   Dim rs As New ADODB.Recordset

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '添加新记录

   If MsgBox("下面将修改数据表<研究生>的记录!是否修改?", _

     vbQuestion + vbYesNo) = vbYes Then

         SQL = "update 成绩 set 成绩=成绩+5 where 课程代码=‘200601003’ "

         cnn.Execute SQL

         MsgBox "数据添加成功!", vbInformation

   Else

         MsgBox "添加数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

运行上面的程序,然后打开数据表,可以看到选修编码为“200601003”课程的分数都被加了5分,如图14-4所示(请与图14-5所示修改前的数据进行比较)。

14.3 删除记录

在某些情况下,可能需要直接从数据库中删除一些记录,这可以由DELETE FROM语句来完成,其语法如下:

DELETE FROM 数据表名 WHERE 条件表达式

如果在DELETE FROM语句中不加任何条件,那么就会删除整个数据表的数据,仅仅留下一个空白的没有任何记录的数据表。

由于数据一旦删除将无法恢复,因此在用DELETE FROM语句删除数据时要特别慎重,最好设置一个缓冲,例如设置一个是否删除数据的询问框,并将默认按钮设置为“否”。

14.3.1 一次删除一条记录

【例14-7】下面的例子是将数据表“研究生”中的学号为“A02200601”的记录删除。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

14.3.2 一次删除多条记录

在DELETE语句中,使用WHERE子句,我们可以一次删除多个满足条件的记录。

【例14-8】下面的例子是将数据表“研究生”中的所有研究方向为空值的记录删除。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—8()

  Dim cnn As New ADODB.Connection

  Dim rs As New ADODB.Recordset

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '删除记录

   If MsgBox("下面将删除数据表<研究生>的记录!是否修改?", _

     vbQuestion + vbYesNo + vbDefaultButton2) = vbYes Then

         SQL = "delete from 研究生 where 研究方向 isnull "

         cnn.Execute SQL

         MsgBox "数据删除成功!", vbInformation

   Else

         MsgBox "删除数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

14.3.3 删除数据表的全部记录

如果在DELETE FROM语句中不加任何条件,那么就会删除整个数据表的数据,仅仅留下一个空白的没有任何记录的数据表。

【例14-9】下面的例子是将数据表“研究生”中的所有记录删除。

在运行下面的程序之前,要确保已经引用了ADO对象库MicrosoftActive Data Objects 2.5 Library或其他版本(如Microsoft Active Data Objects 2.1 Library、Microsoft Active Data Objects 2.8 Library等)。同时,还要根据电脑实际情况,将连接字符串中的SQL Server服务器名称进行变更,并输入相应的用户名和密码(如果有的话)。

Public Sub 例14—9()

  Dim cnn As New ADODB.Connection

  Dim rs As New ADODB.Recordset

   '建立与指定SQL Server数据库的连接

  cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

    '删除记录

   If MsgBox("下面将删除数据表<研究生>的所有记录!是否修改?", _

     vbQuestion + vbYesNo + vbDefaultButton2) = vbYes Then

         SQL = "delete from 研究生 "

         cnn.Execute SQL

         MsgBox "数据删除成功!", vbInformation

   Else

         MsgBox "删除数据操作被取消!", vbExclamation

   End If

    '关闭记录集以及与数据库的连接

   cnn.Close

   Set cnn = Nothing

End Sub

14.4 编辑数据综合应用案例

下面我们介绍如何利用窗体对SQL Server数据库数据进行浏览和编辑。本案例的数据表为“研究生管理”的“导师”;本案例的文件名为“例14-10.xls”。

14.4.1 设计窗体结构

导师管理窗体如图14-6所示。用户窗体的名称为“UserForm1”,Caption属性设置为“导师管理”。

在窗体上插入3个框架Frame1、Frame2和Frame3,其Caption属性分别设置为“院系导师浏览”、“导师基本数据”和“编辑数据”。

在框架Frame1内插入1个TreeView控件,基名称为TreeView1,用于显示在“导师”数据表内各个院系名称以及导师名称。

在框架Frame2内插入5个标签和5个文本框,5个标签用于对5个文本框的功能进行说明,其Caption属性分别设置为“导师编号”、“姓名”、“性别”、“职称”和“院系编号”;5个文本框用于显示或输入导师的基本信息数据,其名称分别设置为“导师编号”、“姓名”,“性别”、“职称”和“院系编号”。

在框架Frame3内插入4个命令按钮,其名称属性和Caption属性均分别设置为“重置窗口”、“输入新记录”、“修改记录”和“删除记录”。

在窗体的右下角插入一个命令按钮,其名称属性和Caption属性均设置为“关闭窗口”,Cancel属性设置为True。

14.4.2 设计程序代码

1)首先定义如下的模块级变量:

dim cnn as New ADODB.Connection

Dim myArray As Variant

2)为用户窗体设置Initialize事件,当启动窗体时,建立与SQL Server数据库服务器的“研究生管理”数据库的连接,查询获取该数据库数据,然后将这些院系名和导师名设置给TreeView1控件,并显示出来。程序代码如下:

Private Sub UserForm_Initialize()

   myarray = Array("导师编号", "姓名", "性别","职称", "院系编号")

    '建立与指定SQL Server数据库的连接

   cnn.ConnectionString = "Provider=SQLOLEDB;" _

       & "User ID=sa;" _

       & "password=11111;" _

       & "Data Source=THTFCOMPUTER;" _

       & "Initial Catalog=研究生管理"

   cnn.Open

   Call 设置节点

End Sub

这里,子程序“设置节点”的功能是查询“院系”数据表和“导师”数据表,为TreeView1控件设置节点,程序代码如下:

Public Sub 设置节点()

  Dim rsx As New ADODB.Recordset

  Dim rs1 As New ADODB.Recordset

  Dim n As Integer

  Dim mySchool As String, SQL As String

   '查询院系编号和名称

  Set rsx = cnn.Execute("院系")

   '设置TreeView1控件的有关属性

  With TreeView

       .Nodes.Clear           '清除所有节点

       .LineStyle = tvwrootlines '显示节点之间的树形线

       .Style = tvwtreelinesplusminuspicturetext  '显示"+","-"号

       .Indentation = 20       '间距20

   End With

    '为TreeView1控件添加一级节点(数据库名称)

   TreeView1.Nodes.Add , , "key0", "院系"

    '为TreeView1控件添加二级节点(数据库名称)

    n= 1

   Do While Not rsx.EOF

       TreeView1.Nodes.Add "key0",4,"key" _

           & trim(str(n)),_

           Trim (rsx.Fields("院系名")) & "(" &Trim(rsx.Fields("院系编号")) & ")"

       '查询每个数据库的所有数据表

       pn = n

       n = n + a

       '查询获取每个院系的所有导师名单,并设置为三级节点

        mySchool = Trim(TreeView1.Nodes(n).Text)

       mySchool = Mid(mySchool, InStr(mySchool, "(") + 1)

       mySchool = Left(mySchool, Len(mySchool) - 1)

       SQL = "select * from 导师 where 院系编号='" & mySchool & "' order by 导师编号"

       Set rs1 = cnn.Execute(SQL)

       Do While Not rs1.EOF

          TreeView1.Nodes.Add "key" & Trim(Str(pn)), 4, _

                "key" &Trim(Str(n)), Trim(rs1.Fields("姓名"))_

                & "(" &Trim(rs1.Fields("导师编号")) & ")"

           n = n + 1

           rs1.MoveNext

       Loop

       rsx.MoveNext

    Loop

    '展开二级节点

   treeveiw1.Nodes(1).Expanded = True

   Set rs = Nothing

   Set rsx = Nothing

End Sub

3)为TreeView1控件设置NodeClick事件,当单击其中的某个导师名称时,就在窗体右边的文本框中显示该导师的基本信息数据。程序代码如下:

Private Sub TreeView1_NodeClick(ByVal nodeAs MSComctlLib.node)

    On Error Resume Next

    Dim rs2 As New ADODB.Recordset

    Dim i As Integer

    Dim SQL As String, mySchool As String, myTeacher As String

    '查询选定的数据表

    mySchool = Trim(node.Parent.Text)

    mySchool = Mid(mySchool, Istr(mySchool, "(") + 1)

    mySchool = Left(mySchool, Len(mySchool) - 1)

    myTeacher = Trim(node.Text)

    myTeacher = Mid(myTeacher, InStr(myTeacher, "(") + 1)

    myTeacher = Left(myTeacher, Len(myTeacher) - 1)

   SQL = "select * from 导师" _

        & "where 院系编号='" & mySchool & "' and 导师编号='" & myTeacher & "'"

   rs2.Open SQL, cnn, adOpenDynamic, adLockOptimistic

    '在ListView1控件中显示选择数据表的全部记录数据

   If rs2.BOF And rs2.EOF Then Exit Sub

   For i = 0 To UBound(myArray)

       If inmull(rs2.Fields(i)) Then

           Me.Controls(myArray(i)).Value = ""

       Else

           Me.Controls(myArray(i)).Value = Trim(rs2.Fields(i))

       End If

   Next i

   rs2.Close

   Set rs2 = Nothing

End Sub

4)为【重置窗口】按钮设置Click事件,当单击此按钮,就清空文本框中的数据。程序代码如下:

Private Sub 重置窗口_Click()

   Dim i As Integer

   For i = 0 To UBound(myArray)

       Me.Controls(myArray(i)).Value = ""

   Next i

End Sub

5)为【输入新记录】按钮设置Click事件,当单击此按钮,就将文本框中的导师记录保存到数据库中。在保存数据之前,系统将检查是否在文本框中都已经输入了数据,以及输入的数据长度是否超过了数据库规定的长度,此外,系统还将检查在数据库中是否已经存在了指定的导师编号。保存数据后,系统将刷新TreeView1控件的节点。程序代码如下:

Private Sub 输入新记录_Click()

   Dim i As Integer

   Dim myNo As String, SQL As String, myStr As String

   Dim rs As ADODB.Recordset

    '判断是否在文本框中输入了数据

   For i = 0 To UBound(myArray)

       If Me.Controls(myArray(i)).Value = "" Then

          MsgBox Me.Controls(myArray(i)).Name & " 不能为空!", vbCritical, "警告"

          Exit Sub

       End If

   Next i

    '判断输入的数据长度是否超过了规定的长度

   Set rs = cnn.Execute("导师")

   For i = 0 To rs.Fields.Count - 1

        If Len(Me.Controls(myArray(i)).Value) >rs.Fields(i).DefinedSize Then

           MsgBox "字段<" &Me.Controls(myArray(i)).Name _

                & ">的长度已经进过了数据库规定的长度!" _

                & "下面将自动截短!", vbCritical

           Me.Controls(myArray(i)).Value = Left(Me.Controls(myArray(i)).Value, _

                rs.Fields(i).DefinedSize)

           Exit Sub

       End If

   Next i

    '判断该导师编号是否已经存在

   myNo = 导师编号.Value

   SQL = "select 导师编号 from 导师 where 导师编号='" & myNo & "'"

   Set rs = cnn.Execute(SQL)

   If rs.EOF And rs.BOF Then

       MsgBox "下面将把该导师数据保存到数据库!", vbExclamation

       myStr = "values("

       myStr = myStr & "'" & 导师编号.malue& "','" & 姓名.Value _

           & "','" & 性别.Value& "','" & 职称.Value & "','" & 院系编号.Value & "')"

       SQL = "insert into 导师" & myStr

       cnn.Execute SQL

       MsgBox "数据添加成功!", vbInformation

   Else

       MsgBox "该导师编号已经存在!请重新设置编号!", vbCritical, "警告"

   End If

   Set rs = Nothing

   Call 设置节点

   Call 重置窗口_Click

End Sub

6)为【修改记录】按钮设置Click事件,当单击此按钮,就将文本框中的导师记录作为修改后的数据保存到数据库中。修改数据后,系统将刷新TreeView1控件的节点。程序代码如下:

Private Sub 修改记录_Click()

   Dim myNo As String, SQL As String, myStr As String

   If MsgBox("下面将把该导师数据保存到数据库!是否进行修改?", _

        vbQuestion + vbYesNo) = vbYes Then

        SQL = "update 导师 set" _

            & "导师编号='" & 导师编号.Value & " '," _

            & "姓名='" & 姓名.Value & "'," _

            & "性别='" & 性别.Value & "'," _

            & "职称='" & 职称.Value & "'," _

            & "院系编号='" & 院系编号.Value & "'," _

            & "where 导师编号='" & 导师编号.Value & "'"

   cnn.Execute SQL

       MsgBox "数据修改成功!", vbInformation

    Else

       MsgBox "修改数据操作被取消!", vbExclamation

   End If

   Call 设置节点

   Call 重置窗口_Click

End Sub

7)为【删除记录】按钮设置Click事件,当单击引按钮,就将文本框中的指定的导师编号记录从数据库中删除。删除数据后,系统将刷新TreeView1控件的节点。程序代码如下:

Private Sub 删除记录_Click()

   Dim myNo As String, SQL As String, myStr As String

   If MsgBox("下面将把该导师数据从数据库中删除!是否删除?", _

        vbQuestion + vbYesNo) = vbYes Then

        SQL = "delete from 导师 where 导师编号='"& 导师编号.Value & " '"

   cnn.Execute SQL

       MsgBox "数据删除成功!", vbInformation

    Else

       MsgBox "删除数据操作被取消!", vbExclamation

   End If

   Call 设置节点

   Call 重置窗口_Click

End Sub

8)为【关闭窗口】按钮设置Click事件,当单击此按钮时,就关闭窗体,程序代码如下:

Private Sub 关闭窗口_Click()

   cnn.Close

   Set cnn = Nothing

   Unload uwerform1

End Sub

14.4.3 应用说明

1)启动窗体,如图14-7所示。

2)单击窗体左边TreeView1控件中的院系下的某个导师名称,就在窗体右边的文本框中显示该导师的基本信息数据,如图14-8所示。

3)单击【重置窗口】按钮,清除文本框的数据,然后输入新的导师信息数据,如图14-9所示,单击【输入新记录】按钮,就将该导师的信息数据保存到数据库中,如图14-10所示。

4)通过单击窗体左边TreeView1控件中的院系下的某个导师名称,在窗体右边的文本框中显示该导师的基本信息数据,然后对需要的数据进行修改,单击【修改记录】按钮,就可以对数据库中指定编号的导师记录进行修改。

5)通过单击窗体左边TreeView1控件中的院系下的某个导师名称,在窗体右边的文本框中显示出该导师的基本信息数据,然后单击【删除记录】按钮,就可以从数据库中将该编号的导师记录删除。