我嘗試通過向模塊和表單添加VBA行數來改進我對文檔數據庫所做的報告。以下代碼在標準模塊中完美工作:檢查表格的CountOfLines
Sub test()
Dim accObj As AccessObject, bwasOpen As Boolean, objName As String
objName = "Form1"
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
Debug.Print Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
End Sub
但是,當我在報告本身中使用類似的代碼時,出現錯誤。而且,由於該錯誤發生在類模塊(報告)中,所以我感覺有點被卡住了。報告中的代碼:
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden 'Breaks here
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
GetExtraInfo = Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
使用= GetExtraInfo()從報告控件調用該代碼。整個事情運作良好,除了這個新的部分,我想返回CountOfLines的形式。
更新:我增加了一些錯誤捕獲,它給錯誤:
2486 - 你不能在目前的時間
整個數據庫可以下載here執行此操作,它的唯一的300 KB。該報告被命名爲「rptObjList」。 「壞」代碼已被註釋掉。它是一個Access 2003數據庫。
感謝您的幫助。
您可以自由打開你的Report.Activate或Report.Open事件過程中所需要的表單和報表......不幸的是有沒有方便的時間之後關閉它們。我擺弄了一會兒,忍不住但在後臺設計視圖報告或報告不工作的部分。我想你可能需要在激活或打開事件過程中檢索信息,然後將其存儲在GetExtraInfo檢查的變量中,如果你不想留下多餘的東西,那麼... –