2010-11-12 25 views
1

目標:將過度生長的Excel工作表轉換爲Access數據庫,但維護熟悉且易於使用的前端。MS Access:關於如何創建類似Excel的表單的任何想法?

有幾個方面這一點,但一個我卡上的輸入形式之一。我不會用我已經試過的後端實現來混淆這個問題,因爲我願意改變它。目前,Excel電子表格用於輸入員工小時分配到各種任務。它看起來像下面這樣。

Employee | Task | 10/03/10 | 10/10/10 | 10/17/10 | 10/24/10 | ... | 12/26/11 
--------------------------------------------------------------------------------- 
Doe, John | Code |  16 |  16 |  20 |  20 | ... |  40 
--------------------------------------------------------------------------------- 
Smith, Jane | Code |  32 |  32 |  16 |  32 | ... |  32 
--------------------------------------------------------------------------------- 
Doe, John | Test |  24 |  24 |  20 |  20 | ... |  0 
--------------------------------------------------------------------------------- 
Smith, Jane | Test |  0 |  0 |  16 |  0 | ... |  0 
--------------------------------------------------------------------------------- 
Smith, Jane | QA  |  8 |  8 |  8 |  8 | ... |  8  
--------------------------------------------------------------------------------- 
       TOTAL |  80 |  80 |  80 |  80 | ... |  80 

請注意,工作表上有15個月的數據,並且在這15個月的每個星期都會輸入員工分配。目前,在十五個月結束時,會創建一個新工作表,但數據庫應該爲了歷史目的而維護這些數據。

有沒有人對如何創建一個可編輯的表單/數據表,具有相同的外觀和感覺任何想法?如果不是,那麼在另一個解決方案中,如何在15個月內快速瀏覽並輕鬆編輯數據呢?後端表對於您提出的解決方案而言會是什麼樣子?

+2

你會從試圖複製Excel的UI在Access的概念越來越遠的更好。它永遠不會運行良好,並且只會阻礙您爲用戶構建易用,易於維護和快速應用程序的能力。換句話說,在我看來,複製Excel的目標是錯誤的。 – 2010-11-12 18:36:18

回答

2

這是一個經典的去正常化問題。

要生成可編輯的電子數據表一樣的顯示您的數據庫,你需要用66列(這兩個識別列和64個整列)的表。問題是,您希望永久存儲數據以使用此表,還是使用具有四列(兩個標識符,周開始日期和整數小時值)的規範化表格。

我會認真考慮以標準化形式存儲數據,然後將(使用臨時表)轉換爲非規範化形式,允許用戶打印/編輯數據,然後轉換回正常形式。

使用這種技術,你得到以下好處:

  1. 支持滾動窗口到數據的能力(66列,你會看到一個指定的15個月期間,並沒有其他)。通過滾動窗口,您可以在上個月和接下來的14個月內顯示它們,或者其他任何內容。

  2. 這將大幅容易做的事情一樣檢查人民總小時每月或比較測試VS QA花在日期的任意範圍的時間。

當然,你必須編寫代碼來翻譯正常和非正規形式,但這應該是非常簡單的。

+0

這是我探索過的一個解決方案,我完全同意使用規範化表格的參數。將此轉化爲非規範化視圖是我一直在努力應對這種方法的地方。將數據表放在查詢上會產生一個漫長而難看的查詢,並生成不可編輯的數據表。您是否在使用VBA建議填寫和閱讀表單?如果是這樣,你能舉一個例子嗎? – Adam 2010-11-12 18:51:38

+1

我建議使用VBA填充臨時表,然後將表格放在表格上。根據每個用戶是否擁有自己的前端數據庫,是否需要支持多個編寫器等等,您可以採取多種不同的方法。但基本上你的VBA會以開始日期(D)和數週(N)顯示,創建一個包含所需列數的表,然後循環N次,每次將D遞增一週,並使用INSERT和UPDATE將規範化的記錄轉移到適當的臨時表列中。 – 2010-11-12 18:55:15

+1

有關規格化/反規範化表格的更多信息,請參閱「Access 2007 VBA Bible」第11章。 – Adam 2010-11-19 21:16:01

相關問題