機房收費系統的 兩個插曲

來源:互聯網
上載者:User
日結賬的上期儲值餘額的演算法

   對於這個日結賬一開始我是糊塗了,弄得餘額不是多了就是少了,有時候還的重複好多次。好亂。而且他那個系統原來的每天可能有好多次結賬,這樣就造成了資料的冗餘。不必要的空間資源浪費了

    想了一些方法,又看了看其他人的一些做法,最後做了一天只能有一次的結賬,如果今天已經結賬了,那麼就把上午的餘額給下午,刪除上午,如果沒有結賬,那麼就把昨天或最近一天的餘額給今天。

    部分代碼如下

       

txtSQL = "select * from checkDay_info where date='" & Format(Date, "yyyy-mm-dd") & "'" '尋找上期餘額    Set ObjCheckDay = ExecuteSQL(txtSQL, MsgText) '開啟學生表     If ObjCheckDay.EOF = True Then '查詢今天記錄,如果記錄為空白,釋放,然後徐擷取最近的最新喻額    txtSQL = "select * from checkDay_info where date<='" & Format(Date, "yyyy-mm-dd") & "'" '尋找上期餘額     Set ObjCheckDay = ExecuteSQL(txtSQL, MsgText) '開啟學生表        For ObjDay = 0 To ObjCheckDay.RecordCount - 1 '記錄集迴圈                   Upremain = ObjCheckDay.Fields("allCash") '擷取上期餘額                   ObjCheckDay.MoveNext '記錄集下移         Next     Else                        txtSQL = "select * from checkDay_info where date='" & Format(Date, "yyyy-mm-dd") & "'" '尋找上期餘額           Set ObjCheckDay = ExecuteSQL(txtSQL, MsgText) '開啟學生表            Upremain = ObjCheckDay!upRemainCash  '擷取今天最新喻額            ObjCheckDay.Delete '記錄集下移       End If 
文字框的斷行符號事件,怎樣設定斷行符號後就上機,在斷行符號後就下機呢?

   開始也為這個反頭痛呢,後來發現只是個紙老虎,細細想想也就是那麼了,開啟一個表查詢下,看看,不在就下機,在就上機了。

   部分代碼如下

 

If KeyAscii = 13 Then            txtSQL = "select * from student_info where car_ID='" & Trim(txtCarID.Text) & "'" & " and statue='使用'"            Set Objstudent = ExecuteSQL(txtSQL, MsgText) '開啟學生表            If Objstudent.EOF = True Then '如果卡號不存在,提示                MsgBox "此卡未註冊,請重新輸入", vbOKOnly + vbInformation, "警告"                Exit Sub          Else                txtSQL = "select * from lineon_info where car_ID='" & Trim(txtCarID.Text) & "'" '查詢上機表                 Set Objlineon = ExecuteSQL(txtSQL, MsgText) '開啟上機表                If Objlineon.EOF = False Then '如果此卡正在上機,提示                     cmdOutline.Value = True '提示下機                Else                    cmdOnline.Value = True '提示下機                End If         End If   End If
 使用彙總函式

首先說明何為彙總函式,這是SQL語句中針對欄位內資料在集合中的計算方式。此處的集合就是查詢結果。語句如下

SQLMAX( orders.OrderDate) as 最後交易日 from orders

以上的語句表示orders資料表中驅車orderdate的最大值,max是函數,它後面的“最後交易日”是字元按,也就是此列中最大值。這是所有彙總函式的共同設計方式。

分組依據

 除了多個彙總函式外,合計中分分組,運算式和條件都有特殊標記法

  sum(orders.total) as 交易總額 from ordres inner JOin(ordrs。Canceldate is null) group by membres.memberID

 

以上語句中,表示MemberID欄位作為分組,並取出MemberID和另外兩個經過計算的結果,分別是OrderID
欄位做count計算和以totals欄位做sum 計算,最後再以where設定canceldate欄位不可以是空白的條件。

這一句的基本格式是

Select 計算方式(取出的欄位)....from資料表where 條件 group by 分組欄位

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.