目前机房收费系统,我还有上下机和报表两个类型,就可以完工了。
之前敲的窗体都没有什么大的困难,但是,在删除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分钟的时间,把这段代码拿下了。而之前那些却历时了几天时间。(中间有个周四)