日結賬的上期儲值餘額的演算法
對於這個日結賬一開始我是糊塗了,弄得餘額不是多了就是少了,有時候還的重複好多次。好亂。而且他那個系統原來的每天可能有好多次結賬,這樣就造成了資料的冗餘。不必要的空間資源浪費了
想了一些方法,又看了看其他人的一些做法,最後做了一天只能有一次的結賬,如果今天已經結賬了,那麼就把上午的餘額給下午,刪除上午,如果沒有結賬,那麼就把昨天或最近一天的餘額給今天。
部分代碼如下
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 分組欄位