form1.vb

来自「Visual Basic .NET程序设计教程源代码」· VB 代码 · 共 859 行 · 第 1/4 页

VB
859
字号
    Private Sub btnadd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnadd.Click
        '如果是添加时确认,即“添加”按钮已经变成了“确认”按钮
        If btnadd.Text = "确认" Then
            '保存添加时当前显示的记录号
            Dim currentpos As Integer = Me.BindingContext(DataSet11, "detail").Position
            '弹出警告框,如果用户单击“确定”,那么
            If MessageBox.Show("确定添加吗?", "我的通讯录-确认", MessageBoxButtons.OKCancel) = DialogResult.OK Then
                '检查姓名是否为空,如果空则警告,并结束该过程
                If Trim(txtname.Text) = "" Then
                    MessageBox.Show("姓名不能为空!")
                    Return
                End If
                '把用户输入到各文本框的数据保存到变量中,并在两端添加单引号以方便用在SQL语句中
                Dim sname As String = "'" & txtname.Text & " '"
                Dim sbirth As String = "'" & txtbirth.Text & " '"
                Dim semail As String = "'" & txtemail.Text & " '"
                Dim sphone As String = "'" & txtphone.Text & " '"
                Dim smobile As String = "'" & txtmobile.Text & " '"
                Dim sbp As String = "'" & txtbp.Text & " '"
                Dim saddress As String = "'" & txtaddress.Text & " '"
                Dim spc As String = "'" & txtpc.Text & " '"
                Dim sdemo As String = "'" & txtdemo.Text & " '"
                Dim currentid As String = txtid.Text
                '定义插入的SQL语句
                Dim addstr As String = "insert into detail(name,birth,email,phone,mobile,bp,address,pc,demo) values("
                addstr = addstr & sname & "," & sbirth & ","
                addstr = addstr & semail & "," & sphone & ","
                addstr = addstr & smobile & "'" & sbp & ","
                addstr = addstr & saddress & "," & spc & ","
                addstr = addstr & sdemo & ")"
                '下面开始执行插入操作
                '打开连接
                OleDbConnection1.Open()
                '设置InsertCommand需要执行的SQL语句
                OleDbDataAdapter1.InsertCommand.CommandText = addstr
                '执行插入
                OleDbDataAdapter1.InsertCommand.ExecuteNonQuery()
                '清空数据集
                Addressdetail11.Clear()
                '重新从数据库获取最新记录来填充数据集
                OleDbDataAdapter1.Fill(Addressdetail11)
                '显示最后一个记录,也就是刚添加的记录
                Me.BindingContext(Addressdetail11, "detail").Position = Me.BindingContext(Addressdetail11, "detail").Count
                '关闭连接
                OleDbConnection1.Close()
            Else    '如果用户在弹出警告框时单击“取消”按钮
                '重新填充数据集
                Addressdetail11.Clear()
                OleDbDataAdapter1.Fill(Addressdetail11)
                '显示单击“添加”按钮前显示的记录
                Me.BindingContext(Addressdetail11, "detail").Position = currentpos
            End If
            '确认后,不管是取消还是确定,都恢复到单击“添加”按钮前的状态
            showposition()                    '显示记录的位置信息
            btnadd.Text = "添加"              '按钮又恢复成“添加”
            btnmodify.Enabled = True          '“修改”按钮可用
            setall(True)                      '文本框只读,不相关按钮可用
            Return
        End If
        '如果是“添加”按钮,即第一次单击该按钮
        If btnadd.Text = "添加" Then
            '文本框置空
            txtname.Text = ""
            txtbirth.Text = ""
            txtemail.Text = "@"
            txtphone.Text = ""
            txtmobile.Text = "13"
            txtbp.Text = ""
            txtaddress.Text = ""
            txtpc.Text = ""
            txtdemo.Text = ""
            '改变为“确认”按钮
            btnadd.Text = "确认"
            btnmodify.Enabled = False
            '文本框可写,并且不相关的按钮不可用
            setall(False)
            Return
        End If
    End Sub

    Private Sub btnmodify_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnmodify.Click
        '如果“修改”按钮已经变成了“确认”按钮
        If btnmodify.Text = "确认" Then
            '保存修改前显示的记录号
            Dim currentpos As Integer = Me.BindingContext(Addressdetail11, "detail").Position
            '弹出对话框让用户确认是否修改
            If MessageBox.Show("确定修改吗?", "我的通讯录-确认", MessageBoxButtons.OKCancel) = DialogResult.OK Then
                '判断用户名是否为空
                If txtname.Text = "" Then
                    MessageBox.Show("姓名不能为空!")
                    Return
                End If
                '获取文本框内容
                Dim sname As String = "'" & txtname.Text & " '"
                Dim sbirth As String = "'" & txtbirth.Text & " '"
                Dim semail As String = "'" & txtemail.Text & " '"
                Dim sphone As String = "'" & txtphone.Text & " '"
                Dim smobile As String = "'" & txtmobile.Text & " '"
                Dim sbp As String = "'" & txtbp.Text & " '"
                Dim saddress As String = "'" & txtaddress.Text & " '"
                Dim spc As String = "'" & txtpc.Text & " '"
                Dim sdemo As String = "'" & txtdemo.Text & " '"
                Dim currentid As String = txtid.Text
                '定义更新SQL语句
                Dim updatestr As String = "update detail set"
                updatestr = updatestr & " name=" & sname
                updatestr = updatestr & ",birth=" & sbirth
                updatestr = updatestr & ",email=" & semail
                updatestr = updatestr & ",phone=" & sphone
                updatestr = updatestr & ",mobile=" & smobile
                updatestr = updatestr & ",bp=" & sbp
                updatestr = updatestr & ",address=" & saddress
                updatestr = updatestr & ",pc=" & spc
                updatestr = updatestr & ",demo=" & sdemo
                updatestr = updatestr & "where id=" & currentid
                '打开连接并执行更新操作
                OleDbConnection1.Open()
                OleDbDataAdapter1.UpdateCommand.CommandText = updatestr
                OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()
                '重新填充数据集并关闭连接
                Addressdetail11.Clear()
                OleDbDataAdapter1.Fill(Addressdetail11)
                OleDbConnection1.Close()
            Else
                '否则重新填充数据集
                Addressdetail11.Clear()
                OleDbDataAdapter1.Fill(Addressdetail11)
            End If
            '恢复到修改前的状态,比如文本框、按钮等,包括当前显示的记录号
            Me.BindingContext(Addressdetail11, "detail").Position = currentpos
            showposition()
            setall(True)
            btnmodify.Text = "修改"
            btnadd.Enabled = True
        End If
        '如果是第一次单击“修改”按钮
        If btnmodify.Text = "确认" Then
            '文本框可写,不相关按钮不可用,并且“修改”按钮变成“确认”按钮
            btnadd.Enabled = False
            Return
        End If
    End Sub

    Private Sub btndel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btndel.Click
        '保存删除前记录号
        Dim currentpos As Integer = Me.BindingContext(Addressdetail11, "detail").Position
        '弹出警告框,让用户确认是否删除
        If MessageBox.Show("确定删除吗?", "我的通讯录-确认", MessageBoxButtons.OKCancel) = DialogResult.OK Then
            '定义删除的SQL语句
            Dim delstr As String = "delete * from detail where id=" & txtid.Text
            '打开连接并执行删除
            OleDbConnection1.Open()
            OleDbDataAdapter1.UpdateCommand.CommandText = delstr
            OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()
            '重新填充数据集
            Addressdetail11.Clear()
            OleDbDataAdapter1.Fill(Addressdetail11)
            '如果删除前的记录刚好是最后一个
            '那么重新显示数据并显示数据库的最后一条记录
            '否则显示被删除记录的下一条
            If currentpos >= Me.BindingContext(Addressdetail11, "detail").Count Then
                currentpos = Me.BindingContext(Addressdetail11, "detail").Count
            End If
            Me.BindingContext(Addressdetail11, "detail").Position = currentpos
            '显示记录信息,并关闭连接
            showposition()
            OleDbConnection1.Close()
        End If
    End Sub

    Private Sub btnsearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsearch.Click
        '确认已经输入查询条件
        If Trim(txtsname.Text) = "" Then
            MessageBox.Show("请输入姓名!")
            Return
        End If
        '定义查询的SQL语句
        Dim selstr As String = "select * from detail where name='" & Trim(txtsname.Text) & "'"
        '打开连接,并执行查询
        OleDbConnection1.Open()
        OleDbDataAdapter1.UpdateCommand.CommandText = selstr
        OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()
        '重新填充数据集,并关闭连接
        Addressdetail11.Clear()
        OleDbDataAdapter1.Fill(Addressdetail11, "detail")
        OleDbConnection1.Close()
        '显示记录位置信息的标签开头为"搜索结构",表示当前显示的搜索结果
        headstr = "搜索结果"
        showposition()
    End Sub

    Private Sub txtname_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtname.MouseEnter
        '聚焦并全选
        txtsname.Focus()
        txtsname.SelectAll()
    End Sub

    Private Sub btnall_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnall.Click
        '定义查询语句,不设置任何条件
        Dim selstr As String = "select * from detail"
        '打开连接,并执行查询
        OleDbConnection1.Open()
        OleDbDataAdapter1.UpdateCommand.CommandText = selstr
        OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()
        '重新填充数据集,并关闭连接
        Addressdetail11.Clear()
        OleDbDataAdapter1.Fill(Addressdetail11, "detail")
        OleDbConnection1.Close()
        '因为这是通讯录的全部记录,所以显示记录位置信息的标签开头为"该通讯录"
        headstr = "该通讯录"
        showposition()
    End Sub
End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?