FP專案技術收穫總結
a.grdDetail.AddItemRowIndex(grdDetail.FirstRow) + grdDetail.Row
b.grdDetail.AddItemRowIndex(grdDetail.BookMark)
其中b方法只有當grdDetail處於AddItem模式時,才起作用。而且當要取得最後一行處於編輯狀態的行的絕對行數,應採用a方法,因為處於新增 狀態的行的BookMark透過grdDetail.BookMark,grddetail.AddItemBookmark是取不到的,而它的絕對行數 可以取到。在Update前新增行的BookMark可以說是沒有。當Update後新增行的BookMark產生,而它的絕對行數可以取到。
2、 在BeforeColUpdate事件中通常作一些資料格式的check動作;在AfterColUpdate事件中通常作一些根據某些已新增欄位向另一 個欄位插值的動作;在KeyPress事件中通常作一些輸入限制的動作和自動向某個欄位插入預設值的動作;在BeforeDelete事件中通常可以作給 使用者傳送友好的確認資訊的動作;
程式碼如下:
'********************************************************************
'* Module : SCMMSFD:grdDetail_BeforeDelete()
'* Author : HI1\Kevin L Li
'* Function : send a friendly message to user
'* Date Created : 2005-8-26
'* Date Modified :
'* Maint. Log :
'********************************************************************
'* Input :
'* Output :
'* Process Flow :
'********************************************************************
Private Sub grdDetail_BeforeDelete(Cancel As Integer, DispPromptMsg As Integer)
''' declare variable
Dim lngC As Long
Dim vBkMark As Variant
Cancel = 1
If MsgBox("Are you sure to delete the lines!", vbOKCancel + vbInformation, "Information Message:") = vbCancel Then
Exit Sub
Else
For lngC = (grdDetail.SelBookmarks.count - 1) To 0 Step -1
vBkMark = grdDetail.SelBookmarks(lngC)
grdDetail.RemoveItem (grdDetail.AddItemRowIndex(vBkMark))
Next lngC
End If
End Sub
3、在ssdbgrid中Enter鍵vbReturn可以在KeyPress事件中捕獲到,然後KeyAscii = 0,再SendKeys "{tab}"。
程式碼如下:
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
SendKeys "{tab}"
End If
4、check資料出錯後,選中出錯行,使用到grdDetail.SelBookmarks.Add grdDetail.AddItemBookmark(IntI),其中IntI是絕對行數。為便於理解附程式碼如下:
For IntI = grdDetail.Rows - 1 To 0 Step -1
If Trim(grdDetail.Columns("flag").CellText(IntI)) = "E" Then
Exit For
Else
If Len(Trim(grdDetail.Columns("Part Number").CellText(IntI))) = 0 Then
Screen.MousePointer = vbDefault
MsgBox "the 'Part Number' column is not nullable!", vbInformation, "Information Message:"
grdDetail.SelBookmarks.Add grdDetail.AddItemBookmark(IntI)
Exit Sub
ElseIf Len(Trim(grdDetail.Columns("Quantity").CellText(IntI))) = 0 Then
Screen.MousePointer = vbDefault
MsgBox "the 'Quantity' column is not nullable!", vbInformation, "Information Message:"
grdDetail.SelBookmarks.Add grdDetail.AddItemBookmark(IntI)
Exit Sub
End If
End If
Next IntI
5、在BeforeColUpdate事件中check資料不符合格式提示出錯後,將焦點定位到出錯位置,先MsgBox,再Cancel= 1,最後Call SetGridFocus;
Case "Quantity"
If Len(Trim(grdDetail.Columns("Quantity").Text)) = 0 Then
MsgBox "Quantity column is not nullable!", vbInformation, "Information Message:"
Cancel = 1
Call SetGridFocus(grdDetail, grdDetail.AddItemRowIndex(grdDetail.Bookmark) + 1, ColIndex + 1, 0)
Exit Sub
End If
'********************************************************************
'* Input : grdObject->SSDBGrid,IntRow->Currrent Row ID,intCol->Next Column,intLockUnVis->Locked Number
'* Output :
'* Process Flow :
'********************************************************************
Private Sub SetGridFocus(grdObject As SSDBGrid, intRow As Long, intCol As Long, intLockUnVis As Long)
grdObject.SetFocus
SendKeys "^{HOME}{DOWN " & intRow & "}{RIGHT " & Abs(intCol - intLockUnVis) & "}", True
grdObject.ActiveCell.SelStart = 0
grdObject.ActiveCell.SelLength = Len(grdObject.ActiveCell.Text)
End Sub
6、SQL語句中WHERE條件的順序
在SQL語句中WHERE後的條件是從後向前執行的,所以為提高SQL語句的執行效率,應該把能過濾掉較多記錄的條件寫在後邊,這樣在執行前面的條件時需要操作的記錄數就會少很多,效率自然會有所提高。
7、Error處理
在相對複雜或有對資料庫進行操作的函式里都應該有Error處理程式碼;在函式級Error處理程式碼中應該Call Err.Raise(Err.Number, "getFileFromRemote", Err.Description)將Error向上拋;在UI級Error處理中應該Call ShowError直接將錯誤資訊發給使用者;在函式中有對資料庫進行操作的程式碼,在Error處理時都應該Set rsDB = Nothing來釋放資源。
8、FP中FTP實現
相關內容可參考FP FTP help.doc;
9、在一個Form中MsgBox儘量風格一致;
如:MsgBox "the file can't be found!", vbInformation, "Information Message:"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-734283/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2017前端技術總結:收穫非淺,但仍需進步前端
- 一個碼農6年技術成長經歷的總結和收穫
- .net專案技術選型總結
- 前端專案重構的些許收穫前端
- [日常] SinaMail專案和技術能力總結AI
- 《人工智慧教育技術學》收穫記錄1人工智慧
- 平庸、堅持、收穫——2016年終總結
- 7 年 700 篇技術文章,收穫的 7 個心得
- 收穫最佳財報:臺積電的極限技術冒險
- 快速技術成長:提煉和總結專案中的技術重難點
- 開發者總結AAA遊戲開發經歷的5點收穫遊戲開發
- FP Tree演算法原理總結演算法
- 參加開源專案的一些經驗和收穫
- 海軍的 2021年終總結, 跳槽後,我收穫了什麼
- CNN視覺化技術總結(四)--視覺化工具與專案CNN視覺化
- CMake技術總結
- WPF技術總結
- BypassUAC技術總結
- easyui技術總結UI
- 最近技術總結
- docker技術總結Docker
- 【Vue專案總結】後臺管理專案總結Vue
- 我從寫技術部落格中收穫到了什麼?- J_Knight_
- BBS專案專案總結
- 專案總結
- 做遊戲伺服器端開發的一些收穫與總結遊戲伺服器
- 區塊鏈技術學習總結專欄前言區塊鏈
- 徵文 | 收穫,不止GBase 8a——GBase 8a培訓總結與感受
- 個人技術棧總結
- 池化技術總結
- Jsp技術總結JS
- Oracle Flashback 技術 總結Oracle
- Oracle Flashback技術總結Oracle
- docker技術總結(二)Docker
- 智慧控制技術總結
- Laravel 專案總結Laravel
- Nuxt專案總結UX
- 番茄專案總結