学生基本信息维护这个窗体,主要实现两项功能,其一是组合查询功能的实现,其二便是对查询出的信息可以选择并进行修改,组合查询窗体在上篇博客已经分享过了,小伙伴可以查看上篇博客,今天主要分享的是,如何实现将查询到的信息,能够进行修改这个功能。
我们可以将这个功能在分解下,分解成先能选中一行数据,在将数据显示到另一个窗体中。这样分开来进行,将问题简单化,一点一点来实现。
下图为对查询结果进行选择。
从上图我们可以看出,当选中某行查询数据后,改行将变成蓝色背景。如何将选中数据行变成蓝色字体呢?这就要在MSHFlexGrid1控件上“动手脚”了,处理问题要从根上解决,我用的是最简单直接打的方法:右击MSHFlexGrid1控件,选择属性,对于突出显示,焦点区域,选择模式这几项分别选择2,0,1的属相即可,其他属性不用动
如图
好了,设置完属性后,便可以进行选择了,接下来就是对选择的数据行进行赋值修改了。
还是分成两部分,一是实现赋值功能,二是修改学生信息,也就是说,将选择的数据行赋值到另一个新的窗体上, 这个窗体,我们命名为“学生信息”。一开始我的想法是,在学生信息窗体添加代码,进行赋值,“修改”命令按钮,只是单纯的传递命令,可是没有赋值成功,也不报错,也不显示信息,几番周折后,发现问题原来是处在了命令按钮上,所有的赋值代码是在修改按钮上添加的。赋值在点击“修改”按钮的那一刻便开始了,而“学生信息”窗体只是显示信息
部分代码展示
Option Explicit
'定义临时卡号
Public TmpCardno As String
Private Sub cmdAlter_Click()
TmpCardno = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 0) '临时卡号便是选中数据行的卡号
frmstuNews.txtStudentNo = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 1) '学号赋值
frmstuNews.txtClass = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 6) '班级赋值
frmstuNews.txtName = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 2)
frmstuNews.ComboSex = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 3)
frmstuNews.txtDept = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 4)
frmstuNews.txtGrade = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 5)
frmstuNews.txtCardNo = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 0)
frmstuNews.txtBalance = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 7)
frmstuNews.ComboStatus = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 9)
frmstuNews.txtExplain = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 8)
frmstuNews.ComboType = myFlexgrid.TextMatrix(myFlexgrid.RowSel, 10)
frmstuNews.Show
Unload Me
Exit Sub
frmstuNews.Show '完成赋值后,打开学生信息窗体,加载信息
End Sub
从代码可以看出,要先定义一个临时卡号,用于存储选中的数据行
下图为赋值成功图
实现了赋值的功能后,就下来便是修改学生信息的功能,这个功能,相对简单,我们在做学生的时候也有接触,就不再多赘述,直接上代码
首先,定义一个临时卡号,用于和上个窗体建立连接
'定义临时卡号
Public TmpCardno As String
确定修改按钮部分
txtsql = "select * from student_Info where cardno='" & Trim(txtCardNo) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If Not (mrc.BOF Or mrc.EOF) Then
mrc.Fields(0) = Trim(txtCardNo.Text)
mrc.Fields(1) = Trim(txtStudentNo.Text)
mrc.Fields(2) = Trim(txtName.Text)
mrc.Fields(3) = Trim(ComboSex.Text)
mrc.Fields(4) = Trim(txtDept.Text)
mrc.Fields(5) = Trim(txtGrade.Text)
mrc.Fields(6) = Trim(txtClass.Text)
mrc.Fields(7) = Trim(txtBalance.Text)
mrc.Fields(8) = Trim(txtExplain.Text)
mrc.Fields(9) = Trim(frmLogin.txtUserID.Text)
mrc.Fields(10) = Trim(ComboStatus.Text)
mrc.Fields(11) = "未结账"
mrc.Fields(12) = Date
mrc.Fields(13) = Time
mrc.Fields(14) = Trim(ComboType.Text)
mrc.Update
'MsgBox "修改信息成功", 48, "提示"
mrc.Close
Unload Me
frmBasicInfoMaintain.Show
'修改信息后,重新加载到基本信息维护窗体的查询结果中
加载窗体部分
txtsql = "select * from student_Info where cardno='" & Trim(txtCardNo) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
MsgBox "加载信息不存在,请确认后重新操作!", , "温馨提示"
Else
txtStudentNo.Text = mrc!studentno
txtName.Text = mrc!studentname
ComboSex.Text = mrc!sex
txtDept.Text = mrc!department
txtGrade.Text = mrc!grade
txtClass.Text = mrc!Class
txtCardNo.Text = mrc!cardno
txtBalance.Text = mrc!cash
ComboStatus.Text = mrc!Status
txtExplain.Text = mrc!explain
ComboType.Text = mrc!Type
mrc.Close
后期陆续更新,欢迎大家评论区留言!