簡體   English   中英

在Access中的表單中使用報表時,對計算字段進行排序失敗

[英]Sorting of a calculated field fails when using report within a form in Access

我有一個報告,其中包含一些代碼,可以在計算所得的列上進行排序,因此,當用戶單擊標簽時,將對報告進行排序,這是以下代碼:

Private Sub Label44_Click()

If Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) DESC" Then
    Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) ASC"
Else
    Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) DESC"
End If

Me.OrderByOn = True
End Sub

當我自己使用報告時,它可以正常工作。 但是,如果我將報表放入表單中,則會收到以下錯誤消息:

"Run-Time Error '5': Invalid procedure call or argument"

Me.OrderByOn = True

我試圖改變MeReport ,我也得到了相同的結果。 任何可能失敗的想法?

我能夠重新創建該問題。 您可能不希望將復雜的計算添加到記錄源中。 我用一個簡單的單一字段重新創建了它。 這是我發現的:

(很抱歉,我似乎無法在此處上傳圖片;這很不幸)

檢查報表屬性的[數據]標簽,然后查看Order By On Load 可能設置為是。 這意味着您不需要將其打開,因為它已經打開。

但同時, OrderBy的默認值為Null。 該報告將告訴您,如果OrderBy中存在空值,則OrderByOn = False ,盡管“ Order By On Load為true!

所以基本上,你需要設置一個默認的OrderBy的屬性,設置默認OderByReport_Activate()事件,或更新您的代碼來尋找一個/一周時間空值。

為什么您的給定代碼在報表中起作用而在子報表中不起作用,這是一個謎。 可能是一個錯誤。 通過執行以上三個建議中的任何一個,我都能解決此問題。

哦,別忘了刪除Me.OrderByOn = True因為這就是問題所在……某種Me.OrderByOn = True只讀錯誤僅在子報表中觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM