2014-04-07 74 views
0

我正在創建一個需要分成6個列表的記錄集。我正在使用字段WrkList來保存從1-6範圍的列表號碼。我不想手動將這些數字添加到每個新記錄中,重複序列號(1,2,3,4,5,6)被引入.WrkList字段允許記錄被工作6名員工使用使用該字段作爲該查詢的標準的查詢。在任何給定的一天中,可能會在整個表格中追加超過1200條記錄,並需要更新WrkList字段。我希望在每個新的記錄集被附加後,在6個組中儘可能均勻地分配這些記錄。任何幫助入門將不勝感激。標記新的記錄編號1到6,均勻分配

+0

如何添加新記錄?用戶輸入或文件導入?一個接一個,或多個/批次? – Smandoli

+0

我看到你標記了這篇文章VBA。是否有任何VBA代碼與添加新記錄相關聯?請發佈代碼。歡迎來到Stack Overflow。 – Smandoli

+0

檢查答案:http://stackoverflow.com/a/21032394/122139。 (這個問題措辭不太好,可能看起來不相關,但答案可能非常相關。) – Smandoli

回答

1

基本上,您將在DAO中打開一個記錄集,其中包含WrkList爲空的所有記錄。您將按照它們進來的順序或其他一些邏輯標準對其進行排序 - 無論哪種方式可以幫助您的員工建立連貫的工作隊列(可能根本沒有訂單)。

您將從頭到尾瀏覽記錄集並使用變量byteWrkList更新WrkList字段。

此變量的值隨每次編輯而變化。它將增加1,或者如果最後一次編輯爲6,則它將返回到1.

注意:此代碼未指定您已篩選Null! OpenRecordset必須基於對Null進行篩選的查詢! (或者必須是基於SQL字符串,做同樣的事情。)

Option Compare Database 
Option Explicit 

Private Sub AllocateTasks() 
    Public byteMax As Byte, byteWrkList as Byte 
    byteMax = 6 
    byteWrkList = 1 

    Dim rstTask As Recordset 
    Set rstTask = CurrentDb.OpenRecordset("tableOfTasks") 

    Do Until rstTask.EOF 
     if byteWrkList > byteMax then 
      byteWrkList = 1 
     else 
      byteWrkList = byteWrkList + 1 
     end if 

     rstTask.Edit 

     ' Make sure you are not over-writing an existing value! 
     ' Make sure it is NULL, or that your recordset excluded NULLs. 
     rstTask!WrkList = byteWrkList 
     rstTask.Update 

     rstTask.MoveNext 

    Loop 

    rstTask.Close 
    Set rstTask = Nothing 

End Sub 

然後你只需要一種方法來調用(觸發)上面的代碼......但您的文章並沒有真正有足夠的信息來表明這是什麼。

有替代(和優雅)的方法來獲得byteWrkList,如使用應用於自動編號索引的mod()函數。 (這並不重要,因爲mod()很有趣,我不得不從胸前取下它)。事實上,還有其他方法可以完全處理這個問題。但這是我開始的。

+0

謝謝!你給了我需要的開始塊。我使用查詢來篩選空記錄,以便不會覆蓋已編號字段中的現有值。它正在砸碎......很抱歉,我最初的問題頗爲饒有趣味,圍繞着我實際需要提出的問題徘徊。 – Judy