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 + -
显示快捷键?