返回列表 上一主題 發帖

[發問] 請問出勤系統設計

回復 42# jeffrey628litw


    感謝大大不辭辛勞的修改 !!!
   今日持續測試功能是否有BUG , 發現 .. 假設有人員離職 , 但先前已經有在『出勤資料庫』資料庫出現的名字
   會出現以下錯誤

Q1.png


然後回到『回報頁面』 看 會出現資料都向下位移 !!
如果去『出勤資料庫』將離職人員刪掉的話一樣不會恢復正常
除非要先將『回報頁面』的(紅框)資料先刪光, 在去按回報按鈕, 才恢復正常
請問這個如何修正呢?? 可以將離職後的人員資料同步在『出勤資料庫』刪掉? 就能避免這問題??
  1. Private Sub Main_回報寫入(Rng As Range)
  2.         Dim R As Range, St As String, xRng As Range, 日數 As Integer, i As Integer
  3.         For Each R In Rng.Rows
  4.                 ' ** R ->Sheets("出勤資料庫")的整列***********
  5.                
  6.                 St = R.Cells(1, "A") & R.Cells(1, "B") & R.Cells(1, "D") & R.Cells(1, "E") & R.Cells(1, "F")
  7.                 'St =出勤資料:  班別&所屬領班&&工號&姓名& 組別
  8.             
  9.                 If 人員回報.EXISTS(St) Then  '** St(出勤資料)存在字典物件中  -> 同一工號時
  10.                     Set xRng = 人員回報(St)                      '** -> 同一班別工號人員的位置
  11.                 Else     '** St(出勤資料)不存在字典物件
  12.                     
  13.                     Set xRng = Sheets("人員回報").Range("a" & Rows.Count).End(xlUp).Offset(1)
  14.                     '** xRng 變數設為 Sheets("人員回報"),A欄最底部的列往上到有資料 儲存格的下一列
  15.                     
  16.                     Set 人員回報(St) = xRng                     '** 字典物件,工號: 設為xRng變數
  17.                 End If
  18.                 日數 = Day(R.Range("C1"))
  19.          With xRng
  20.               ' ** xRng ->Sheets("人員回報").Range("a"列 )***********
  21.                     .Range("A1") = R.Range("A1")                                   '** 班別
  22.                     .Range("B1") = R.Range("B1")                                   '** 領班
  23.                     .Range("C1") = .Range("C1") + R.Range("k1") + IIf(R.Range("L1") = "True", R.Range("I1"), 0)
  24.                     '**R.Range("k1")->加班時數 ,R.Range("L1") = "TRUE"->假日:+加出勤時數-> R.Range("I1")
  25.                     
  26.                     .Range("D1") = R.Range("D1")                                  '**工號
  27.                     .Range("E1") = R.Range("E1")                                   '** 姓名
  28.                     .Range("F1") = DA工號(R.Range("D1") & "")(1, 7)    '**主專長
  29.                     .Range("G1") = R.Range("F1")                                   '** 組別
  30.                     .Cells(1, 日數 + 7) = R.Range("G1")                          '** 出勤站別
  31.                     ''*********************************************
  32.                     i = Application.Match(UCase(.Range("G1")), Array("V", "P", "K"), 0) '**歸納組別
  33.                     組別表(i, 日數) = 組別表(i, 日數) + 1
  34.                     
  35.                     '***********************************
  36.                     If R.Range("J1") <> "" Then                                         '**出勤資料庫 , 延長加班 資料   **
  37.                         i = Application.Match(UCase(R.Range("A1")), Ar1, 0)
  38.                         站別表(i, 日數) = 站別表(i, 日數) + 1          '**Day(Rng(1)); 延長加班的加總
  39.                     End If
  40.                     
  41.                     i = Application.Match(UCase(R.Range("G1")), Ar1, 0)     '**出勤資料庫 , 出勤站別  資料**
  42.                     站別表(i, 日數) = 站別表(i, 日數) + 1
  43.                     '**DA 開機數 **
  44.                     If i = UBound(Ar1) + 1 Then 站別表(UBound(Ar1) + 2, 日數) = 站別表(UBound(Ar1) + 2, 日數) + R.Range("H1")
  45.                     '*********************************************
  46.                 End With
  47.         Next
  48. End Sub
複製代碼

TOP

回復 39# GBKEE
回復 42# jeffrey628litw
回復 44# c_c_lai



感謝三位大大的整合 !! , 這幾天嘗試將 jeffrey628litw 大大 與 GBKEE版大 及 c_c_lai  大大的版本做個修改

發現問題如下,
1.  c_c_lai  大大的版本 , 構想非常棒, 新增了復職功能, 但離職後 『更新出勤』那個功能, 還是會顯示已離職的人員
   長期下來使用者, 無法一一記住某些人已經離職(工廠流動率大) , 再者更新出勤後已離職的人還是會在出勤的表格內
   1-1. 會讓系統操作者不知道她到底在不在 !! 除非已離職的不顯示在編輯出勤的欄位中

2.  GBKEE版大 版本, 測試下來就是離職後的人員, 如果『出勤資料庫』沒有同步刪除已離職資料,  人員回報後會出錯
    2-1. 版大版本修改起來是否比較容易? 僅需要同步刪除『出勤資料庫』中的資料就不會有出錯???


TOP

[版主管理留言]
  • GBKEE(2016/8/24 05:16): 附檔看看

回復 47# GBKEE


    加入程式碼後, 出勤編輯還是會顯示出離職人員讓使用者編輯耶 !

TOP

回復 48# v03586


    檔案如下, 此檔案已經將整合頁面與人員回報頁面結合了, 部分程式碼修改後發現跳格...]
可以請大大指點我哪邊沒改好嗎?? (下圖紅框處)   , 另想請板大協助1:1、1:2、1:3、1:4 的部分由可操機數做個加總
可以請大大順便教我,  如果未來比例部分如果有增加 我需要如何修改嗎?? 假設目前只到1:4 , 未來1:7時 我修改了欄位, 程式碼部分要相對修改哪邊



1.  另外...樓上提到的...如下圖, 已離職部分, 還是會出現在編輯欄位, 會讓使用者分不清楚已離職人員
會繼續編輯, 如果長久以來離職的人變多...編輯頁面就會一大串都是離職人員( 且離職人員不小心編輯 , 會算在出勤率當中 )

2. 如發現已更新出勤, 但發現人員更新錯誤, 要將人員取消出勤 , 似乎不能取消, 系統基本設置出勤一定要填1-8小時, 如人員臨時當天被告知明天不用來
出勤系統無法修改讓他變0耶







人員人力回報表(GBKEE).rar (385.77 KB)

TOP

本帖最後由 v03586 於 2016-8-25 15:17 編輯

回復 50# GBKEE


    感謝版大的協助, 測試程式後發現如下問題

1. 點選取消出勤出現如下錯誤!!!




2. 人員離職後, 再打開更新出勤的操作介面, 發現人員還在操作介面上, 點了離職人員名字會彈出如下錯誤
    2-1. 雖然按了『人員回報按鈕』已經不會出現在『人員回報』資料表上 !!!


3. 1:1、1:2、1:3、1:4 的部分由可操機數做個加總, 如何加總??
    我想到的邏輯...請板大指教
   3-1. 先依照出勤資料庫『班別』去判斷要在哪一班的欄位做統計
   3-2. 再依照出勤資料庫『日期』去判斷要在哪一天的欄未做加總
   3-3. 最後依照出勤資料庫『可操機數』去判斷操作機台 1、2、3、4 的個別數字 (如下圖)

TOP

回復 52# GBKEE


    第一個操作錯誤步驟
   1. 人員先操作離職
   2. 編輯出勤更新, 離職人員還出現在編輯項目內, 點選就出錯

如上狀況的模擬是....假設今天有10個人已離職, 但使用者不可能記住已離職的那麼多人(如果時間軸一拉長),
相對在編輯出勤時, 如果忘記他已經離職, 點選離職人員就會出現這個錯誤,
如果以長遠來看...已離職人員還能出現在可編輯的欄位裡面, 那未來(時間軸一長),編輯的人不就會出現一堆已離職的人物...
這樣可能會造成使用者編輯的不便...要一直跳過, 若不小心點到,就會出現下圖的錯誤


另外有發現一個問題...
Q2.png
我有嘗試修改, 但似乎無法, 請問一下我哪邊改錯了?
如果我沒會錯意思, 這一段應該是解釋
如果V, 月份小於等於6月, 星期等於日或六 則OverTime = 成立 ???

Case "V"
             If Month(xDay) <= 6 And Weekday(xDay) = 7 Or Weekday(xDay) = 6 Then OverTime = True
             If Month(xDay) > 6 And Weekday(xDay) = 1 Or Weekday(xDay) = 7 Then OverTime = True
  1. Private Function OverTime(組別 As String) As Boolean
  2.      '  <= 6   V組 六-休息日 /  P組 日-休息日 / K組 二-休息日
  3.      '  >6     V組 日-休息日 /  P組 六-休息日 / K組 二-休息日
  4.      Select Case 組別
  5.          Case "V"
  6.              If Month(xDay) <= 6 And Weekday(xDay) = 7 Then OverTime = True
  7.              If Month(xDay) > 6 And Weekday(xDay) = 1 Then OverTime = True
  8.          Case "P"
  9.              If Month(xDay) <= 6 And Weekday(xDay) = 1 Then OverTime = True
  10.              If Month(xDay) > 6 And Weekday(xDay) = 7 Then OverTime = True
  11.          Case "K"
  12.              If Weekday(xDay) = 3 Then OverTime = True
  13.     End Select
  14. End Function
複製代碼

TOP

回復 54# GBKEE


    感謝板大解決了大問題!!真心感謝!!

    如下程式測試後發現之前的兩個規則似乎有跑掉了, 懇請大大協助...

   Q1. 排序問題   , 目前看來 組別, 接有依照VPK 排序, 但是班別好像跑掉了
    排續方式,﹝班別﹞→﹝領班﹞→﹝組別﹞



   Q2. 再來就是之前有修改過, 但這班又跑掉規則,
下圖是目前的狀況, 最下面那張圖有舉例

原本訂的規則是, 當班應該出現在當班的欄位, 至於延長加班才去判斷顯示在別班的爛位上
延長別班只計算出勤率, 不計算『專長』人頭數 !!!

TOP

本帖最後由 v03586 於 2016-8-28 18:17 編輯

回復 54# GBKEE

    用這張來解釋比較簡單...當班資訊 不見了, 跑去加班的班別 !!
    已邏輯上來說...當班資訊一定要有, 因為加別班 , 不知道其他班會怎麼安排你用哪樣專長
   

TOP

本帖最後由 v03586 於 2016-8-31 11:58 編輯

回復 57# c_c_lai


    感謝大大協助!!! 已解決排序問題!!!!
    #56  =  #55  Q2 比較清楚

TOP

回復 54# GBKEE

已最簡單的例子來舉例, 下圖最下面的表格是已維護更新好的出勤名單
正常來說, 三位都是早班的MH , 所以正常來說 1ST 的MH 應該是三位才對
2ND 是沒有當班的人 !!!  加班的欄位有一位 所以功能正常, 但是當班的部分就不對了
請問要從何修改呢??
   

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題