如何对MSHFlexGrid多行中的一行进行删除、修改呢?

来源:互联网 发布:python黑帽子 源码 编辑:程序博客网 时间:2024/06/04 17:52

          在机房收费系统,学生基本信息维护窗体中涉及到一个对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 ExplicitDim 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, Shift As Integer, x As Single, y As Single)        With MSHFlexGrid1                        .RowSel = SelectROW                        .ColSel = .Cols - 1        End WithEnd 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


         同时对对MSHFlexGrid选中行进行删除也是这个道理~

 

原创粉丝点击