机房收费系统之优化

来源:互联网 发布:淘宝店铺客服工资 编辑:程序博客网 时间:2024/05/23 00:09

        众所周知,任何软件都会存在各种各样的Bug,这是很难避免的。所以我们的工作就是在初步完成软件的情况下,对软件存在的Bug进行不断的优化,并对软件的界面和功能进行任性化的设计。机房收费系统在初步完成的调试阶段就出现了很多小Bug,导致系统的崩溃和卡顿。经过不断的调试,现在总结一下存在的问题和解决的方案。

一.MSHFlexGrid控件在显示数据时,无法显示完全,如图:


导致这一问题出现的原因是,MSHFlexGrid控件的表格无法自动根据表中的数据的大小进行调整。

解决办法:添加自定义过程

Public Sub AdjustColWidth(frmCur As Form, gridCur As Object, Optional bNullRow As Boolean = True, Optional dblIncWidth As Double = 0) '功能:自动调节grid各列列宽为最合适的宽度 'frmcur  当前共作的窗体 'gridcur 当前调整的grid  Dim i As Integer Dim j As Integer Dim dblWidth As Double  With gridCur      For i = 0 To .Cols - 1        dblWidth = 0          If .ColWidth(i) <> 0 Then             For j = 0 To .Rows - 1                If frmCur.TextWidth(.TextMatrix(j, i)) > dblWidth Then                   dblWidth = frmCur.TextWidth(.TextMatrix(j, i))                End If             Next j             .ColWidth(i) = dblWidth + dblIncWidth + 500          End If      Next i End WithEnd Sub
在标准模块中声明此过程,并在加载数据列表时进行调用,调用方法为:

AdjustColWidth Form, MSHGridFlex                 'from为当前的窗体,MsgGridFlex为所应用的对象控件
效果图如下:



二.联合查询时,因数据库内数据存在空值,MSHFlexGrid表中无法显示而报错

解决办法:在将数据库的数据添加到MSHFlexGrid中的时候,如果遇到空值,则将其转化为空的字符串类型。

代码展示:

Public Function fun_ReturnNull(feilds As ADODB.field) As String     '函数,用于把字段中的null转换成空的字符串  On Error Resume Next     If IsNull(feilds) Then        fun_ReturnNull = ""     Else        fun_ReturnNull = feilds.Value     End IfEnd Function
这样就不会报错了,效果图:



三.登陆窗体被设计为无边框,那么移动边框的问题如何解决呢?

再次的我们用到了无所不能的API函数,如下代码所示:

Declare Function ReleaseCapture Lib "user32" () As LongDeclare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wparam As Long, Iparm As Any) As LongPublic Const HTCAPTION = 2Public Const WM_NCLBUTTONDOWN = &HA1
在标准模块中声明了这些函数后,在FrmLogin登陆窗体的鼠标事件中,写下如下代码:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)     ReleaseCapture     SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&End Sub

这样,这个登陆窗体就可以很好的移动了。


四。联合查询时输入日期的问题

由于联合查询的条件包括各种条件,学号、上机时间。上机日期。。。各种,尤其是时间和日期,如果不对用户加以控制,怎们可能因为输入的日期格式不对导致系统报错。所以,我经过不断的修改,采取了以下的方法。

如图:




具体的代码如下

Private Sub Text1_GotFocus()  If Combo1.Text = "上机日期" Or Combo1.Text = "下机日期" Then     Text1.Visible = False     DTP1.Visible = True     Text1.Text = Trim(Format(DTP1.Value, "yyyy-mm-dd"))       '将格式转化成可查询的格式  End If     If Combo1.Text = "上机时间" Or Combo1.Text = "下机时间" Then     DTP1.Format = dtpTime                     '将控件的输入内容改变为时间     Text1.Visible = False     DTP1.Visible = True     Text1.Text = Trim(Format(DTP1.Value, "hh:mm"))  End If  End Sub

  Private Sub combo1_GotFocus()    Text1.Visible = True    DTP1.Visible = False End Sub


然还有很多小的Bug,就不在这里过多的解释了,每个人都会遇到不同的Bug,不将就的仔细将他们解决就好了。



0 0
原创粉丝点击