2011-06-11 52 views
1

我正在創建一個報告,以在具有多個子報表的客戶端上顯示數據,以顯示財政季度進一步打破的不同人口統計數據。例如,我的客戶端主語言子報表有一個組合框控件來創建詳細信息部分中的行;該控件綁定到我的語言選擇表(我不確定這是否相關,但是我使用AutoNumber作爲語言選擇的主鍵而不是語言本身的名稱作爲鍵。我可以改變它,但如果需要)。我爲每個會計季度創建了一個標籤。我想要做的是在這個界限控制中選擇每一種語言,我需要它來查看哪些客戶會說這種語言,看他們什麼時候第一次把它們分解到合適的財政季度,並顯示計數在適當的盒子。在Microsoft Access 2010中,如何在報表中引用綁定控件?

在財務季度細分的其他子報告中,如新客戶的性別,這很容易。只有M/F,所以不需要擴展,所以我只創建了兩行標籤/矩形,並使用一些VBA來引用收集我的客戶數據的查詢。該查詢如下,看看當他們先到先得和我寫了一個函數返回其所屬的財政季度(注意:業餘編碼進取= d)

Public Function FiscalQuarter(InputDate As Date) As Integer 

Dim ReportMonth As Integer 
Dim ReportDay As Integer 
Dim ReportYear As Integer 
Dim FiscalYear As Integer 


'''!!! Break up Current Date !!!''' 
ReportMonth = Month(InputDate) 
ReportDay = Day(InputDate) 
ReportYear = Year(InputDate) 

' Quarter 1 
    If ReportMonth = "9" Then 
     FiscalQuarter = 1 
     FiscalYear = ReportYear + 1 
    End If 
    If ReportMonth = "10" Then 
     FiscalQuarter = 1 
     FiscalYear = ReportYear + 1 
    End If 
    If ReportMonth = "11" Then 
     FiscalQuarter = 1 
     FiscalYear = ReportYear + 1 
    End If 

' Quarter 2 
    If ReportMonth = "12" Then 
     FiscalQuarter = 2 
     FiscalYear = ReportYear + 1 
    End If 
    If ReportMonth = "1" Then 
     FiscalQuarter = 2 
     FiscalYear = ReportYear 
    End If 
    If ReportMonth = "2" Then 
     FiscalQuarter = 2 
     FiscalYear = ReportYear 
    End If 

' Quarter 3 
    If ReportMonth = "3" Then 
     FiscalQuarter = 3 
     FiscalYear = ReportYear 
    End If 
    If ReportMonth = "4" Then 
     FiscalQuarter = 3 
     FiscalYear = ReportYear 
    End If 
    If ReportMonth = "5" Then 
     FiscalQuarter = 3 
     FiscalYear = ReportYear 
    End If 

' Quarter 4 
    If ReportMonth = "6" Then 
     FiscalQuarter = 4 
     FiscalYear = ReportYear 
    End If 
    If ReportMonth = "7" Then 
     FiscalQuarter = 4 
     FiscalYear = ReportYear 
    End If 
    If ReportMonth = "8" Then 
     FiscalQuarter = 4 
     FiscalYear = ReportYear 
    End If 

End Function 

然後在我用類似下面的代碼的ClientGender報告:

MaleFirstQ = DCount("MinOfEventDate", "qryQRChildDemographics", "FiscalQuarter([MinOfEventDate])=1 And [Gender]='M'") 
MaleFirst.Caption = MaleFirstQ 

對於每個性別/季度框我有一個代碼片段類似於上述分配給標題。

所以我的問題是,我無法引用報表上的綁定控件中的值以在我的財政季度細分中使用。我嘗試使用與我已經使用的Dcount相似的Dcount,但我試圖使用對綁定控件的引用作爲條件,並且我不斷收到不同的運行時錯誤,說我對控件或屬性進行了引用存在。

我承認我是一個新手,我喜歡通過玩弄自己的想法,但我完全陷入困境。我一直在通過Microsoft Access 2010聖經,Microsoft Access 2010深度以及Wrox Microsoft Access 2010程序員參考(剛開始這本書),但目前爲止我還沒有找到我認爲我需要的內容。我有一種感覺,我的這個任務的方法是完全錯誤的,所以如果任何人都可以指出我正確的方向,就我所忽視的和使用什麼工具而言,我將不勝感激!


我嘗試了幾種不同的方式,但他們都與此類似,在第二條件的微小變化:

LanguageFirst.Caption = DCount("PrimaryLanguage", "qryQRChildDemographics", "FiscalQuarter([MinOfEventDate])=1 AND Me!LanguageField") 

主要生產運行時錯誤2471 它不喜歡我! LanguageField。

我也試過這個作爲第二標準:

[PrimaryLanguage]=Me.Controls!LanguageField 

我想既然我可以用一個功能,我應該能夠使用一個字段的值過一個標準,但我開始認爲Dcount甚至可能不適合在這裏使用。

+0

請向我們展示您嘗試失敗的參考。 – 2011-06-11 21:48:08

+0

我的失敗引用在上面。 – Seananigans 2011-06-12 05:04:44

回答

2

我真的不明白你的問題是什麼,你已經拋出了這麼多信息,我不能作出正面或反面出來的,但我有兩個意見:

  1. 組合框不屬於報告。它們是UI對象,用於編輯,並且不能編輯報告(儘管我猜測在A2010中有可能在報告中編輯數據,但我不推薦這樣的事情)。相反,您應該使用作爲子報表記錄源組合框基礎的表進行連接。

  2. 您在使用文本框時正在使用標籤。當你的代碼是:

    LanguageFirst.Caption = DCOUNT( 「PrimaryLanguage」, 「qryQRChildDemographics」, 「!FiscalQuarter([MinOfEventDate)= 1和Me LanguageField」)

...你」重新分配數據到標題。相反,請刪除標題並將其替換爲具有DCount()公式的ControlSource的文本框。你還需要調整WHERE子句,因爲在DCount()中你不可能有Me!LanguageField(實際上我沒有看到它可能在任何上下文中如何工作)。

如果您執行上述操作(即使用文本框替換您正在編輯的標題的標籤),您將失去必須在VBA中編寫代碼並在正確的事件中獲取代碼等問題。

+0

謝謝!它像一個魅力。 =)我希望你不介意我是否問你另一個問題,但是......現在我無法爲每個季度添加一行總計。我試圖通過右鍵單擊文本框(總和選項灰顯)在頁腳中添加總計/計數框,但它只計算報表源中的記錄數,這是語言列表。有沒有一個簡單的方法來做到這一點? – Seananigans 2011-06-13 16:51:14

+1

發表另一個問題,而不是在評論中提問。 – 2011-06-15 21:31:21

1

嘗試第三個參數:

"FiscalQuarter([MinOfEventDate])=1 AND [PrimaryLanguage] = " & Me!LanguageField.Value 

你應該構建一個字符串,但如果你把Me!LanguageField引號裏面那麼它像對待文本。

+0

我得到一個運行時錯誤2424,說該表達式具有Access無法找到的字段,控件或屬性。 我重複檢查以確保所有內容拼寫正確,並且組合框中的值與引用的查詢中的值一致。 – Seananigans 2011-06-12 16:45:08

+0

@Seananigans,至少我們已經轉向了更好的錯誤類別。我只是編寫了'LanguagePrimaryKey'字段名,你需要在那裏從你的數據庫中分出正確的。也許它是'PrimaryLanguage',但我不確定,我只是想確保你知道使用那個主鍵字段。 – 2011-06-12 18:37:19

+0

啊,對不起,我忘了提及我沒有把它歸入。它是PrimaryLanguage,但它給了我錯誤。 – Seananigans 2011-06-12 18:59:01

1

這不是您的問題的答案,但它不如評論。由於您剛剛開始使用VBA,因此請參閱您是否喜歡使用此方法來實現FiscalQuarter函數。

Public Function FiscalQuarter(InputDate As Date) As Integer 

    Select Case Month(InputDate) 
     Case 9 To 11 ' Quarter 1 
     FiscalQuarter = 1 
     Case 1, 2, 12 ' Quarter 2 
     FiscalQuarter = 2 
     Case 3 To 5 ' Quarter 3 
     FiscalQuarter = 3 
     Case 6 To 8 ' Quarter 4 
     FiscalQuarter = 4 
    End Select 

End Function 
+0

這看起來不錯,我加了FiscalYear爲你。 – 2011-06-12 18:34:54

+0

@蘭斯羅伯茨爲什麼?他的職能對FiscalYear沒有任何幫助。此外,ReportDay被宣佈,但根本沒有使用;我離開了它。 – HansUp 2011-06-12 18:42:55

+0

嗯,我沒有注意到,我會做一個回滾。 – 2011-06-12 18:50:27

相關問題