對于現有報告,我在 Report_Open 事件中構建記錄源,使其看起來像這樣(它根據在 OpenArgs 中傳遞的值而變化):
> SELECT tblSpecies.commonname AS Species,
> Month(tblLocationVisit.VisitDate) AS qMonthNumber,
> MonthName(Month(tblLocationVisit.visitdate)) AS qMonth,
> (SUM(Nz(tblSighting.Adults)) SUM(Nz(tblSighting.Emerging))) AS TotalAdults,
> tblSighting.SpeciesID FROM tblSpecies INNER JOIN
> ((tblSite INNER JOIN tblLocationVisit ON tblSite.ID =
tblLocationVisit.SiteID)
> INNER JOIN
> tblSighting ON tblLocationVisit.ID = tblSighting.LocationVisitID) ON
> tblSpecies.ID = tblSighting.SpeciesID GROUP BY
tblSpecies.commonname, Month(VisitDate), MonthName(Month(visitdate)),
> tblSighting.SpeciesID HAVING (((SUM(Nz(tblSighting.Adults)))>0) OR
(SUM(Nz(tblSighting.Emerging)) > 0));
Species、MonthName、TotalAdults 和 TotalAdults 的總和是報告中顯示的唯一值,并且一切正常。在報表的設計表中,有一個靜態查詢作為記錄源給出,但這在 Report_Open 事件中被替換,如上所述。靜態查詢純粹用于系結報告欄位。
我現在想在報告中添加一個計數,以便:
> SELECT COUNT(tblLocationVisit.ID) AS qVisitCount,
> tblSpecies.commonname AS Species,
> Month(tblLocationVisit.VisitDate) AS qMonthNumber,
> MonthName(Month(tblLocationVisit.visitdate)) AS qMonth,
> (SUM(Nz(tblSighting.Adults)) SUM(Nz(tblSighting.Emerging))) AS TotalAdults,
> tblSighting.SpeciesID FROM tblSpecies INNER JOIN
> ((tblSite INNER JOIN tblLocationVisit ON tblSite.ID =
tblLocationVisit.SiteID)
> INNER JOIN
> tblSighting ON tblLocationVisit.ID = tblSighting.LocationVisitID) ON
> tblSpecies.ID = tblSighting.SpeciesID GROUP BY
tblSpecies.commonname, Month(VisitDate), MonthName(Month(visitdate)),
> tblSighting.SpeciesID HAVING (((SUM(Nz(tblSighting.Adults)))>0) OR
(SUM(Nz(tblSighting.Emerging)) > 0));
新查詢在獨立運行時有效;查詢的屬性表中沒有“Order By”。我已經用包括 Count 在內的新查詢替換了報告記錄源中的靜態查詢;我還添加了代碼,以便 Report_Open 事件將 Count 添加到記錄源。新報告欄位 xVisitCount 系結到靜態查詢中的 qVisitCount。
在運行報告時,我被要求為 xVisitCount“輸入引數值”,因此系結不起作用;無論我在那里輸入什么,都會出現在報告中。
如果我洗掉新欄位的控制元件源,則沒有“輸入引數值”提示并且報表欄位值為空。
我想我需要在 Report_Open 事件期間更改新顯示欄位 (xVisitCount) 的系結,無論是在分配 Me.RecordSource 之前還是之后,但我不知道如何執行此操作。
幾年前我開發了原始專案,我的 MS Access 雖然從來沒有很強,但現在非常生疏。我試圖明智地格式化代碼,但我不確定它會顯示得很好 - 我什至可能破壞了代碼的準確性,但我希望這不會妨礙您的理解。
uj5u.com熱心網友回復:
如果 Access 要求 的值xVisitCount,它會在記錄源中查找此欄位。
為避免混淆,您應該在任何地方命名該欄位,例如qVisitCount:
- 在靜態查詢中
- 報告欄位名稱
- 報表欄位 ControlSource
- 在動態查詢中。
另請參閱如何在 VBA 中除錯動態 SQL - 將您創建的 SQL 復制到新查詢,以確保它回傳您期望的欄位和資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314222.html
上一篇:重繪所有VBA代碼相當于從另一個表單重繪表單中的資料?
下一篇:需要幫助一次修改大量特定條目
