如何对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, Shift As Integer, x As Single, 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


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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值