2016-09-27 94 views
2

我一直在試圖掀起一個簡單的MS-Access任務跟蹤應用程序供個人使用。我的基本數據模型是一個任務定義表(我可以定義日常任務)和一個任務結果表(可以跟蹤我在某一天執行的任務)。需要表單根據任務類型顯示覆選框,單選按鈕組或列表框

我試圖建立一個形式
1)列出了所有的日常任務(由時間 - 日期排序,
每個任務)的屬性,並 2)相鄰的任務,顯示一個小部件這讓我將任務標記爲完整。

儘管如此,我有三個(並可能增加更多)不同類型的任務:

  • 簡單的是/否任務(其中一個複選框控件會工作)
  • 得分,能任務,讓我跟蹤有多好任務已經完成(一個無線電按鈕組適合)以及由幾個是/否子任務(爲其選擇多選列表框可以適用)組成的「複雜」任務。

我已經得到儘可能建立窗體,所以它按期望的順序列出所有任務,但我100%堅持如何編碼(條件)數據輸入小部件。雖然我沒有單獨實現每個小部件的困難,但我的最大努力是隻有一個任務列表,只有一個複選框,一個無線電組或者只是列表框。我不知道如何告訴表單「查看」每個任務的類型,並在其旁邊顯示相應的小部件。

我幾乎已經準備好了,只需將所有任務按照固定順序與相應的窗口小部件一起硬編碼到窗體中即可。有沒有辦法以更優雅的方式實現這一點?

[旁邊]我選擇MS-Access有點隨意,我正在學習MS-Access窗體。如果有人因爲選擇了錯誤的工具而感到被卡住了,請隨時通知我

+1

您將需要VBA來執行此操作。將所有三個控件添加到同一行(可能會彼此重疊)。將其所有屬性設置爲「可見=否」。然後編寫VBA代碼來確定哪些控件應該對每一行都可見。如何做到這一點取決於你的結構。你使用連續的窗體顯示打開的任務還是子窗體?我不確定這是不可能的,如果不使用連續的形式,但我經常是錯的。添加一個你的表格結構的解釋,我相信我們可以幫助它工作。 – MoondogsMaDawg

+0

相關,但不足:http://stackoverflow.com/questions/20669839/make-fields-visible-in-ms-access-form-as-certain-fields-are-completed – MoondogsMaDawg

+1

我正在使用一個子窗體(父=日期,孩子=任務爲此日期),但相關的作品(任務列表)是在子窗體內的連續形式。我在數據庫設計/建模方面的背景,所以我不會因爲沒有考慮「可見=否」的角度而毆打自己。但是一旦我讀完,我就意識到我在問一個錯誤的問題:它不是「如何告訴形式展示什麼」,而是「如何告訴形式什麼不展示」。我的腰帶上有一點VBA;我會在今晚嘗試一些東西,並在我工作時更新。 – KevinKirkpatrick

回答

2

正如對原始問題的評論中所解決的,似乎主要障礙是連續表單的限制。由於Access將連續表單的每一列視爲原子元素,因此很少有選項可用於區分其表示。唯一接近的工具是條件格式,而選擇隱藏/顯示字段的最接近的方法是使用將它們「僞裝」爲背景顏色的文本顏色隱藏文本框字段。

此限制導致我潛在的解決方法。

回顧一下目標:在給定的一天內,我想列出一個[表驅動的]任務集。每個任務都有「是/否」,「從N個選項中選擇一個」或「從N個選項中選擇0到N」選項。根據任務的類型,它應該分別呈現爲單個複選框(是/否),單選按鈕組(選擇一個)或複選框組(選擇多個)。

(旁白:我知道,當我鍵入此,第一類是真正的第三類的子類,但並沒有真正的核心問題消失)

所提出的想法:

在表單啓動時,可以運行一個查詢,它可以準確地確定哪個任務將落入哪個位置。換句話說,在「繪製」今天的任務之前,數據庫可以回答哪個任務位於位置1,位置2,依此類推。另外,我可以放心地說,永遠不會超過20個任務(儘管任何一天的實際任務數量可能會有所不同)。

這引起了我的疑惑:如果我設計了20個「插槽」的表單,並且在每個插槽中有3個疊加的演示文稿:一個用於是/否任務,一個用於「選擇一個」任務,另一個用於「選擇一個」爲「選擇多個」任務。 (總共60個 - 聽起來很可怕,但我希望複製/粘貼會來拯救)。

當Access呈現表單時,每個槽將查詢當天的「第n個」任務(所以第1個槽將查詢第一個任務,第二個槽查找第二個任務,等等)。只有與查詢返回的任務類型匹配的演示文稿纔會將「可見」選項設置爲「是」。因此,如果查詢第三個任務的第三個插槽接收到「是/否」種類的任務,則只會顯示「是/否」提示。

爲什麼它的價值,我確實有一個我的應用程序的工作版本(雖然檢查&取消選中複選框根據任務被標記爲「挑一個」或「選擇許多」絕對格柵我)。因此,如果有理由認爲這種新方法行不通,那麼在我投入任何實際開發時間之前,我很樂意聽到它。

+0

這應該可行。當然,它將是一個未綁定的表單,因此每次加載和保存數據都必須進行編碼。 - 您可以使用[CreateControl](https://msdn.microsoft.com/en-us/library/office/ff836740.aspx)在設計視圖中打開窗體來創建所有這些控件。一定要命名他們,例如'optGrp1' ..'optGrp20',所以你可以循環控制。我強烈建議使用這個,所以如果你發現你想要一個不同的佈局(例如4x5而不是5x4)或更多的控件,你可以改變一些常量並讓它再次運行。 – Andre

+0

有道理 - 感謝提示; CreateControl聽起來比在20x3可能的控件中手動繪製更誘人。這是一個「業餘時間」的項目,很可能會在更多的日子裏被抽出,但如果解決的話我會更新/接受答案 – KevinKirkpatrick