1. 程式人生 > >機房收費系統之優化及問題彙總(來淘寶啦~)(一)

機房收費系統之優化及問題彙總(來淘寶啦~)(一)

至今機房專案進行了第一次的驗收,以下內容是在做的開始遇到的問題解決方法,還有驗收後出現的問題優化內容。此篇部落格乾貨滿滿,讓你輕鬆解決機房的問題這裡絕對有你需要的東西,。

1.MDI窗體關不掉

設定屬性ControlBox

是或有控制框, 取值為:False

將屬性設定為False

2.設定textBox控制元件不可輸入

3.combo控制元件只可下拉不可修改

程式碼如下:

Private Sub Combo**_KeyPress(KeyAscii As Integer)
    KeyAscii = 0
End Sub

4.設定textBox自動換行

這裡是我們查詢顯示在文字框的內容,不修改屬性,查出來的內容就是一大長句,沒有段落會超出我們的TextBox顯示的範圍,修改這個屬性可以更清楚的看到我們所查詢的內容。

5.清空MSHFLexGrid1

程式碼如下:


  With myFlexgrid
       .Col = 2
       .Rows = 1
       .Text = ""
  End With

6.讓窗體居中顯示

程式碼如下:

Me.Left = Screen.Width / 2 - Me.Width / 2
Me.Top = Screen.Height / 2 - Me.Height / 2

7.註冊充值金額問題

遇到個很奇葩的問題,註冊新使用者充值,原則是應該是有個最低充值金額,低於最低充值金額時應當提示資訊,但是我寫的程式碼功能是實現了,就是註冊充值時開頭出現“1”也提示相同內容

程式碼如下:

Set mrc1 = ExecuteSQL(txtSQL, MsgText)
                    If txtCash.Text < Trim(mrc1.Fields(5)) Then
                        MsgBox "金額不能低於設定的金額!", 48, "提示"
                        Exit Sub
                     End If

我看了自己好幾遍這個程式碼發現沒有什麼邏輯上的問題,註冊充值充值其他金額是沒有問題的,就是充值1、 10、 100這樣的金額就不可以了,常理上是不能拒絕顧客想要充值的面額所以這是一個漏洞。

到底哪裡出現了問題呢?原因是判定條件的型別不同,這兩個一個txtCash(屬於字串型別)fields(5)(資料庫中的某列我指定的是liitCash最小充值金額,屬於數字型別)

找到原因了,解決辦法就是將txtCash轉換為數字型別,就是因為型別不同才會出現我遇到的問題,型別不同計算機會先進行判定控制元件本身條件<fields所以出現了提示!

用型別轉換函式Cint或VAL均可即可將數字從String轉換到Integer型別。

程式碼如下:

 Set mrc1 = ExecuteSQL(txtSQL, MsgText)
                    If Val(txtCash.Text) < Trim(mrc1.Fields(5)) Then
                        MsgBox "金額不能低於設定的金額!", 48, "提示"
                        Exit Sub
                     End If

還有另外一種同類型條件語句

程式碼如下:

Set mrc1 = ExecuteSQL(txtSQL, MsgText)
                   If Trim(txtCash.Text) < Trim(txtRecharge.Text) Then
                        MsgBox "金額不能低於設定的金額!", 48, "提示"
                        Exit Sub
                    End If

8.基本資訊查詢沒有資訊判斷是否出現窗體

人性化設定,二次確認是否想進行更改資訊,當我們利用組合查詢查到了我們想要的內容,選中想要進行修改有一個判定,是否顯示修改資訊的窗體。

程式碼如下:

If MsgBox("顯示修改學生資訊窗體嗎?", vbYesNo, "提示") = vbYes Then
            frmEditStuInfo.Visible = True
        Else
            frmEditStuInfo.Visible = False
        End If

9.退卡退過的還能再退

我的退卡功能可以一直退,不管是否用過的沒用過的都可以退卡,加一條判定語句查詢資料庫的cancelcard_Info,加判定很好寫就是知道用的哪個庫!

程式碼如下:

strSQL = "select status,studentNo,Cash,UserID,Ischeck from student_Info where cardno = '" & txtCardNo.Text & "'"
    Set mrc = ExecuteSQL(strSQL, MsgText)
    
    '判斷是否退卡
    If Trim(mrc.Fields(0)) = Trim("不使用") Then
        MsgBox "此卡已退卡!", 48, "提示"
        txtCardNo.SetFocus
        txtCardNo.Text = ""
        Exit Sub
    End If

10.組合查詢下拉選單不同選項顯示不同控制元件

這個實現要求就是選擇平常選單選項出現文字框,選擇日期為DTPicker控制元件,方便節約時間,寧可讓程式設計師多幹活也不可讓客戶多幹。

下面程式碼分別寫了選擇普通選項例如“姓名”和選擇要使用的日期“上機日期”的不同情況。

程式碼顯示及效果展示:

Private Sub comboFiledName1_Click()
    comboOperate1.Clear
    Select Case comboFiledName1.Text

    Case "姓名"
    comboOperate1.AddItem "="
    comboOperate1.AddItem "<>"
    txtContent1.Locked = False
    DTPicker1.Visible = False
    
    Case "上機日期"
    comboOperate1.AddItem "="
    comboOperate1.AddItem "<"
    comboOperate1.AddItem ">"
    comboOperate1.AddItem "<>"
    txtContent1.Locked = True
    DTPicker1.Visible = True
    DTPicker1.Format = dtpShortDate
    txtContent1.Text = 0

  End Select
End Sub

這只是遇到問題的一小部分,盡情期待載入變更~