机房收费系统——MSHFlexGrid

    目前机房收费系统,我还有上下机和报表两个类型,就可以完工了。
    之前敲的窗体都没有什么大的困难,但是,在删除MSHFlexGrid中选中行的时候,遇到了一些问题,已经解决,但是,我感觉我    在这里真的是花费了一些没有必要的时间。

    我的思路是:先删除表中的行,然后,删除此行在数据库中的记录。

    先把正确的代码介绍一下,再说我遇到的问题。

如何选中MSHFlexGrid的一行,以及从中删除。

<span style="font-size:24px;">Dim HaveSelected as Boolean
	Private Sub myflexgrid_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
		HaveSelected=True        '设置标志,允许被删除
	End Sub
	Private Sub Form_Load()
		myflexgrid.SelectionMode=flexSelectionByRow    '设置选中方式按行
		HaveSdlected=False      '设置标志,防止没有选择就删除
		
		'<span style="color:#ff0000;">一下两行,解决了无法删除最后一行的问题</span>
		myflexgrid.FixedRows=0     '设置固定行为0    
		myflexgrid.RemoveItem  1
	End Sub
	Private Sub CmdDelete_Click()
		'保存要移除的用户
		DeluserID=Trim(myflexgrid.TextMatrix(myflexgrid.RowSel,0))
		'myflexgrid中删除
		If HaveSelected=True Then
			myflexgrid.RemoveItem myflexgrid.RowSel     '删除选中的行
		End If
		'从数据库中删除此信息
		txtsql="select * from User_Info where userID='" &UserName & "'"
		set mrc=ExecuteSQL(txtsql,msgtext)
		If mrc.EOF=True Then
			Msgbox"不能删除登录用户",vbokonly & vbexclamation,"警告"
			Exit Sub
		Else
		'删除
			txtsql="delete from User_Info where userID='" & DeluserID & "'"
			set mrc=ExecuteSQL(txtsql,msgtext)
		End If
</span>

     exit sub的重要性
    第一次开始,我用了一种很麻烦的方法来解决,无法删除最后一行的问题。
    那段代码当中有exit sub
    就因为它,exit sub的存在,导致我的这个程序出现了很多问题。
    当时,我已经测试了,我的删除数据库中的信息的代码是正确的,但是,不管怎么样,数据库中的信息一直存在,通过张晗的帮忙,我才意识到exit sub的威胁性之大。因为那段代码在本窗体的前几行,导致下面的代码,根本就没有运行

     那我调一下他们的位置,理论应该是可以解决了吧!但是,事实这样并不能解决,因为,代码的思路出现了问题。
    刚开始,我总是把删除最后一行,登录用户,都当做判断条件,导致很乱。
我认真的顺了一下思路:删除时,先判断是否为登录用户,若不是就可以删除。而可以删除最后,一行的代码完全可以独立存在,没有必要当成判断条件

  
  
  
  
感受
从本次艰难的经历,我感觉判断条件的选择的必要性,有些条件实际上,根本就没有必要成为判断条件,如果你没有注意,而把它当做判断条件,无疑让程序变的复杂了。 简单问题,生生被复杂化了!

    当这个程序全部乱套时,我决绝的把所有的代码全部删除,从0开始!
    理清思路后,我用了不到10分钟的时间,把这段代码拿下了。而之前那些却历时了几天时间。(中间有个周四)

你可能感兴趣的:(机房收费系统——MSHFlexGrid)