如何对MSHFlexGrid多行中的一行进行删除、修改呢?
????????? 在机房收费系统,学生基本信息维护窗体中涉及到一个对MSHFlexGrid选中行进行修改的行,那么这个应该怎么实现呢? 自己在开始的走了不少的弯路,刚开始以为自己实现了,其实不是只是一个偶然的现象,自己刚开始是这样写的: 第一次: ???????? 将MSHFlexGrid的属性“SelectionMode”中选中的是第1项,之后在“修改”命令按钮的代码中写到了: txtsql="select * from student_info where cardID='" & MSHFlexGrid1. SelectionMode & "'" Set reSI = ExecuteSQL(txtsql,msgtext) ????????? 这时巧了,确实是出现了,我以为就这样可以实现了,可是当我再点击第二行的时候,它就显示不出来了,后来通过把MSHFlexGrid的属性“SelectionMode”中选中了第2项,这时发现一直显示的是某一行,即鼠标指到的变蓝的地方的第一行,于是开始查找资料,了解关于MSHFlexGrid的一些属性,其中MSHFlexGrid的属性“SelectionMode”第一项“0-flexselectionfree”是自由选择;第二项“1-selectionbyrow”是按照行来说,也就是它对应的行号,而不是哪一种的某个字段的名字,所以我的出错也就可想而知了,不过如果你的第一行记录的卡号恰好是1,那么就会出现我的现象,正好可以出现你想要的那种结果,但是我们不应该抱有这样侥幸的心理;第三项“2-flexselectioncolnm”当然就是按照列的显示,而卡号是无法与你一一对应的,唯一的一个就是2号,所以无论你怎么选择,它总是选中第二行。 ?????????于是开始查找资料,看看到底应该怎么做: ? Option Explicit Dim SelectROW As Integer Private Sub MSHFlexGrid1_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single) With MSHFlexGrid1 .Row = .MouseRow SelectROW = .Row .Col = 0 .ColSel = .Cols - 1 End With End Sub Private Sub MSHFlexGrid1_MouseUp(Button As Integer,y As Single) With MSHFlexGrid1 .RowSel = SelectROW .ColSel = .Cols - 1 End With End Sub ????????? 之后在修改命令按钮中选择选中行,对其进行修改: Private Sub Command1_Click() Dim txtsql As String Dim msgtext As String Dim reSI As ADODB.Recordset Dim i As Integer Dim j As Integer '选中MSHFlexGrid1的行,并对其进行修改 txtsql = "select * from student_info where cardID='" & Trim(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,0)) & "'" Set reSI = ExecuteSQL(txtsql,msgtext) frmSinf.Text1(0) = reSI.Fields(1) frmSinf.Text1(2) = reSI.Fields(6) frmSinf.Text1(1) = reSI.Fields(2) frmSinf.Text1(6) = reSI.Fields(0) frmSinf.Combo1 = reSI.Fields(3) frmSinf.Text1(7) = reSI.Fields(7) frmSinf.Text1(3) = reSI.Fields(4) frmSinf.Text1(8) = reSI.Fields(8) frmSinf.Text1(4) = reSI.Fields(5) frmSinf.Text1(7) = reSI.Fields(7) frmSinf.Text1(9) = reSI.Fields(11) frmSinf.Show SetParent frmSinf.hWnd,frmMain.hWnd End Sub
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |