2010-06-18 50 views
1

我在連續視圖中顯示的Access中有一個表格(而不是報表),其中包含大量的重複數據。也就是說,它看起來像:如何模擬訪問連續表單中的組頁眉?

國家Names
FL
Abe
FL
Bart
FL
Charlie
GA
Deleanor
GA
瑪麗

這必須是互動(有每行的一些命令按鈕以及如表頭),但有很多重複的數據。有沒有辦法按狀態添加組頭?即使它看起來像:

國家Names
FL
Abe
Bart
Charlie
GA
Deleanor
瑪麗

回答

1

我能得到的最接近的是一個字段添加到您的窗體的記錄源,其數量每行在一個小組內。然後,可以使用此表達式作爲其控制源,在窗體的詳細信息部分添加一個文本框。

= IIF(秩= 1,[狀態],「」]

文本框將顯示每個狀態的第一次出現,和一個零長度的字符串否則。

我與此查詢測試備案源。

SELECT 
    m1.state, 
    m1.names, 
    (
     SELECT Count(names) 
     FROM MyTable AS m2 
     WHERE 
      m2.state=m1.state 
      AND m2.names<=m1.names 
    ) AS rank 
FROM MyTable AS m1 
ORDER BY m1.state, m1.names; 

和它的工作,但不能編輯。如果您需要能夠編輯,嘗試它使用DCOUNT生成排名查詢。

SELECT 
    m1.state, 
    m1.names, 
    DCount("names", "MyTable", 
    "state ='" & state & "' AND " & "names <= '" & names & "'") AS rank 
FROM MyTable AS m1 
ORDER BY m1.state, m1.names; 

這兩項查詢得到這個結果與您的樣本數據集:

state names  rank 
FL Abe  1 
FL Bart  2 
FL Charlie 3 
GA Deleanor 1 
GA Mary  2 

注意,我假定狀態和名稱的獨特組合。

2

你看過子數據表嗎?如果你有一個狀態表(或者只是查詢你的現有數據的唯一狀態),你可以在一個不可編輯的父數據表中使用它,然後子數據表將顯示人員數據,並且可以使其可編輯。

我會用數據表格實現這一點,而不是實際的表或查詢數據表。這使您可以更好地控制子數據錶鏈接和格式設置,並且可以更輕鬆地與數據表事件進行交互(可以使用表格或查詢數據表完成,但只能通過Screen.ActiveDatasheet完成)

+0

我用狀態表做了一個新的主窗體。然後在細節部分添加一個子表單,將主體和子狀態鏈接起來。不幸的是,Access 2003不會讓我以連續的形式顯示,只有單一視圖。 – PowerUser 2010-06-21 13:12:03

+0

不會讓你顯示哪種形式?您將每種表單的顯示類型設置爲DATASHEET ONLY,然後它應該工作。我已經在其中使用了應用程序,所以我知道這是可能的。 – 2010-06-22 01:32:06

3

我發現如果有重複的條目,最明顯的問題是(如上所述),但我發現有一個更深的問題,就是你不能這樣做,仍然在另一個字段上對數據進行排序(假設你想按照每個國家中每個名字首次註冊的日期進行排序,但不是按照這種方式對它們排序)。

更好的解決方案是在微軟知識庫的使用代碼部分中找到:

http://support.microsoft.com/kb/q101081

從節中的代碼從以前字段的實際數據,在任何排序順序定義。

在計算上這可能是有點緊張的,所以它僅適用於小型數據集,但我首先測試功能取得了良好的效果:

= PrevRecVal([表格] [myForm會],「ID」, [ID], 「名稱」)= [名稱])

然後把它的IIF函數內:

= IIF(PrevRecVal([表格] [myForm的], 「ID」,[ID], 「Names」)= [Names],「」,[FullName])