<output id="os3gq"><ruby id="os3gq"></ruby></output>

    1. <mark id="os3gq"></mark>
    2. Access快速開發平臺一日通案例《費用報銷管理軟件》學習心得-周韶璋
      Access軟件網QQ交流學習群(群號碼198465573),歡迎您的加入!
      首頁 >技術文章> 程序人生


      Access快速開發平臺一日通案例《費用報銷管理軟件》學習心得

      發表時間:2018/10/24 8:37:36 評論(2) 瀏覽(4371)  評論 | 加入收藏 | 復制
         
      摘 要:Access快速開發平臺一日通案例《費用報銷管理軟件》學習心得
      正 文:
      (1) 充分利用關系型數據庫的特點:用ID的主鍵當另一個表的外鍵,然后通過查詢調取另一個表的數據。展示數據多用查詢,避免組合框顯示,求統一和美觀。
      (2) 登錄的全局變量,相當于ini文件,存放在一個表里:調取的幾個常用函數有:
      i) GetParameter(“current User UserName”) ,獲得登錄的用戶名
      ii) SetParameter
      iii) DLookup(“[value]”,”SysLocalParameters”,“[ParameterName]=’startdate’”)
      (3) 權限設置:在后臺設置完成后,需要記得目錄名和權限名,先用HasPermission(“目錄名”,” 權限名”):
      If HasPermission(“目錄名”,” 權限名”) = true then
       (4)  對于限制權限的用戶,如何控制數據輸出,即自已錄入的數據可以看到,但是看不到別人錄入的數據:
      在Form load事件中, GetParameter(“current User UserName”) ,獲得登錄的用戶名,賦值給StrUser變量【我經常打錯成GetParametor】
      If HasPermisson(“報銷明細”,“查看全部”) = true then 
        strSQL = “select * from qryExpense”
      else
        strSQL = “select * from qryExpense where Operator=’ ”  & StrUser & “’”
      EndIF
      再用me.recordSource = strSQL
      5 控件鎖定和控制不可用略有不同:前者是locked=true, 后者是enable=false,并變灰。
      (6)主窗體(me)中,子窗體(以sfrList例)內控件的取用格式:
      me.sfrList.form.控件名
      (7)一個頁面打開后,通常tab=0的控制自動獲得焦點,為消除這種情況,建一個文本框,設tab=0,并調到最小,放在一個小顯眼的地方(細節是決定一個軟件好壞的標準之一)
      (8)在快速開發平臺里,可以在啟動后的界面窗體,即:SysFrmMain_HomePage 窗體上放置按鈕圖片,從而方便操作員通過按鈕來打開對應的窗體。那么,在單擊事件中可以采用如下代碼: 
      =DoMenuCmd("節點名稱") 
      ‘把下面的函數復制到代碼過程中任何一個地方
      Function DoMenuCmd(MenuText As String)
          Dim MenuID As String
          RunMenuCommand Nz(DLookup("Command", "SysLocalNavigationMenus", "MenuText=" & SQLText(MenuText))), Nothing
          MenuID = Nz(DLookup("ID", "SysLocalNavigationMenus", "MenuText=" & SQLText(MenuText)))
          With Forms!SysFrmMain
              RunDefaultRDPNavMenu MenuID
              !lblNodePath.Caption = .mclsNavTree.GetNodeFullPath(MenuID, " > ")
              !lblNodePath.Visible = True
              If !sfrChild.Top <> !lblNodePath.Top + !lblNodePath.Height Then
                  !sfrChild.Height = !sfrChild.Height - !lblNodePath.Height
                  !sfrChild.Top = !lblNodePath.Top + !lblNodePath.Height
              End If
          End With
      End Function

      (9)提醒功能的制作
      把下面的函數復制到代碼過程中任何一個地方,注意修改label的名稱,表的名稱

      Public Sub CalRemind()
          Dim x As Long '待審核
          Dim y As Long '待財務確認
          x = DCount("[ID]", "tblExpense", "[Examine]=0")
          y = DCount("[ID]", "tblExpense", "[Accounting]=0")
          If x + y = 0 Then
              Form_SysFrmMain_HomePage!lblRemind.Caption = "( 暫無提醒 )"
          Else
              
              If x > 0 And y = 0 Then
                  Form_SysFrmMain_HomePage!lblRemind.Caption = vbNewLine + "待主管審核的明細 (" & x & ") 筆"
              End If
              If x > 0 And y > 0 Then
                  Form_SysFrmMain_HomePage!lblRemind.Caption = vbNewLine + "1.待主管審核的明細 (" & x & ") 筆" + vbNewLine + "2.待財務確認的明細 (" & y & ") 筆"
              End If
              If x = 0 And y > 0 Then
                  Form_SysFrmMain_HomePage!lblRemind.Caption = vbNewLine + "待財務確認的明細 (" & y & ") 筆"
              End If
              
          End If
      End Sub

      (10) 關于組合框顯示的理解:

      這個表之所以有員工編碼的字段,是把另一個表的主鍵當成外鍵進行聯系,如果顯示員工姓名,就不合理。
      這個員工編碼的組合框中,它的數據源來自SELECT tblEmployee.EID, tblEmployee.EName, tblDepartment.DName FROM tblEmployee INNER JOIN tblDepartment ON tblEmployee.DID = tblDepartment.DID;
      采用0; 2; 2的方式進行顯示,即顯示的姓名,部門,但是記錄的EID,即綁定的值。

      另外,我們還可以對這個值,進行進一步的指定:即采用DLookup()查一個值,然后讓它顯示
      Me.EID = DLookup("[EID]", "tblEmployee", "[Username]='" & strUser & "'"),顯示的值,必須是在0; 2; 2的方式進行顯示出來的值中之一,否則不顯示。

      (11)知道了null和””的區別:
      ""    是已知的長度為0的字符串;
      Null 是無效數據,不知道有沒有數據。

      (12)月平均、本月、年累計
      本年第一天:DateSerial(Year(date( )),1,1)
      上月末 :DateSerial(Year(Date()),month(date()),0)
      本月第一天:DateSerial(Year(Date()),month(Date()),1)
      本月末:DateSerial(Year(Date()),Month(Date())+1,0)

      (13) SQL代碼分行:
      StrSQL=”aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbb”
      可以分為:
      StrSQL=”aaaaaaaaaaaaaaaaaaaaaaaaa “ _ 
      & “bbbbbbbbbbbbbbb”
      (14) 采用VBA代碼執行追加查詢,在執行前,要取消系統警告
      Docmd.setwarning false
      Docmd.runsql “delect * from tblXXX” //在追加之前先清空
      Docmd.runsql strsql
      (15)在tblcount費用統計表中,字段分別為Item, moneyAve, thismonth, monthyear, 沒有設主鍵,也沒有設一個自動遞增的ID。
      沒有設主鍵,可能是這個是終末表,不需要在別的表中設其為外鍵。
      沒有設自動遞增的ID,可能會要按其它字段進行排序時,這樣的ID順序也會亂,所以在窗體中,自已加入了不受按字段排序影響的序號。加入序號見下。
      (16)加入序號的代碼:
      先插入一個Label,在數據的控件來源處寫上 =GetLineNumber([Form]) //注:表名不用改
      (17)關閉按鈕的代碼
      RDPCloseForm me
      (18)為什么在員工信息的窗體中,數據源不直接采用tblEmployee,而是采用qryEmployee,是不是考慮到“DID”部門字段中,如果用tblEmployee作數據源,那么顯示的DID將是組合框,不美觀,而且也容易被更改。
      (19)

      對于這樣的表格,通過設立兩個主鍵,再設一列為SN進行排序。

      如果別的表想用這個表,那么兩個主鍵都要查詢。


      (20)采用Group by進行分組時,要確保入選的字段都具有分組功能,為避免不必要的錯誤,通都是兩列,一列是用來group by ,一列是求和,求差等具有計算功能的列。
      (21) Month(Date()),得到的月份,可以直接用來計算,不用轉為數字。
      (22)查詢中,可以對字段進行取值、計算、表達式等等,然后再匯總。
      (23)有一個組合框,值為姓名,如果選擇某個姓名,就顯示某人的數據,如果不選擇,就顯示所有人的數據,這怎么做?
      采用聯合查詢:如
      Select ‘E00’as EID, ‘所有人’as 姓名,’(全公司)’as  部門 from tblExpenseCount
      Union select EID,Ename,DName
      From qryEmpID


      (24)在折線曲和柱狀圖之前進行切換(需要事先引用控件,見下圖)
      Private sub frame3_AfterUpdate()
      Select case Frame3 
      Case 1
      Me.graphmoth.object.charttype= x1LineMarkers
      Case 2
      Me.graphmonth.object.chartType=x1ColumnClustered
      End select


      用代碼選擇圖表Chart樣式見:
      http://www.www.beijingfeeling.com/article-show.asp?id=1082

      Access軟件網交流QQ群(群號:198465573)
       
       相關文章
      《汽車銷售客戶管理系統》用快速開發平臺的學習心得  【張帆  2013/11/6】
      《資產業務審批管理系統》我的Access軟件開發培訓學習心得  【惠蕾敬  2014/2/20】
      《工資核算系統》小白的Access開發學習心得  【許玉凈  2014/8/1】
      《印聯印務信息管理系統》臨退休給單位開發的Access管理系統學習...  【趙新安  2014/12/25】
      《IT管理系統》與《采購報銷管理系統 》協助學員成功,是盟威軟件的...  【楊奇  2016/11/15】
      《定制室內門企業ERP系統》Access前端+SQL SqlSer...  【劉勇  2018/3/5】
       
       訪客評論
      2018/10/24qq1985178585
      要多練習,學過會了。過幾天又忘了。

      2018/10/24謝玉青
      學習很認真,贊!

      總記錄:2篇  頁次:1/1 9 1 :
       
       發表評論
      評論內容 (必填)

      常見問答
      技術分類
      相關資源
      文章搜索
      關于作者

      周韶璋

      文章分類

      文章存檔

      友情鏈接
       
         
      湖北11选5